基于MIPS架構的RISC微處理器RM7000A
引 言
??在眾多類(lèi)型的RISC CPU體系中,MIPS(Microprocessor without Interlocked Pipeline Stages)是相當成功的一種。自從1983年John Hennessy在斯坦福大學(xué)成功地完成了第一個(gè)采用RISC理念的MIPS微處理器以來(lái),基于MIPS構架的CPU在網(wǎng)絡(luò )、通信、多媒體娛樂(lè )等領(lǐng)域得到了廣泛應用。Cisco的路由器,IBM的網(wǎng)絡(luò )彩色打印機,HP的4000、5000、8000、9000系列激光打印機及掃描儀,Sony的Playstation和Playstation 2游戲機等等,都是應用了實(shí)現不同MIPS指令集的微處理器的產(chǎn)品。
??MIPS Technologies Inc本身不生產(chǎn)微處理器,它只設計高性能工業(yè)級的32位和64位CPU的結構體系,并且向其它半導體公司提供使用其內核(IP)的授權,用于生產(chǎn)基于MIPS而又各具特色的微處理器。據MIPS公司網(wǎng)站介紹,現在已有超過(guò)50家公司申請了授權,其中不乏IT界著(zhù)名的大企業(yè),如:AMD、ATI、TI、NEC、Toshiba、Philips、PMC-Sierra、IDT、Quicklogic、Marvell等。
1 RM7000A概述
??RM7000A是PMC-Sierra公司RM7000系列微處理器的一種,使用CMOS 0.18μm藝制造而成,內含2個(gè)獨立的64位整型單元和1個(gè)64位浮點(diǎn)單元;片內集成了主緩存和二級緩存以及外部擴展緩存控制器(最高支持8MB三級緩存);具有1個(gè)時(shí)鐘周期發(fā)射2條指令的功能;支持數據預?。≒refetch);最高工作頻率可達400MHz;可寬溫工作,350MHz工業(yè)級處理器工作溫度為-40~+85℃。
??該微處理器有以下主要特性。
(1)片內集成大容量主緩存和二級緩存
??主緩存包括16KB指令緩存和16KB數據緩存。指緩和數緩都擁有各自的64位讀通道和128位寫(xiě)通道,并且允許指緩和數緩同時(shí)被訪(fǎng)問(wèn)。在400MHz時(shí),主緩可以給整型單元和浮點(diǎn)型單元提供總計高達6.4GB/s的帶寬。256KB的二級緩存擁有一個(gè)64位的讀/寫(xiě)共用通道,只有在訪(fǎng)問(wèn)主緩存發(fā)生未命中的情況下才會(huì )使用到。
??主緩存和二級緩存均采用4路組相聯(lián)。緩存線(xiàn)長(cháng)32字節,均為非阻塞式緩存(non-blocking cache),即在緩存訪(fǎng)問(wèn)產(chǎn)生未命中(cache miss),且這個(gè)未命中沒(méi)有被消除的情況下,處理器無(wú)需停頓等待,可以繼續進(jìn)行緩存訪(fǎng)問(wèn)。RM7000A允許最多有兩個(gè)未命中時(shí)仍可訪(fǎng)問(wèn)緩存。只有在下面兩種情況下,微處理器才會(huì )產(chǎn)生停頓:一是在前兩個(gè)未命中還沒(méi)消除,指令總線(xiàn)上又出現了對緩存的存取指令;二是產(chǎn)生了兩個(gè)未命中,而隨后的指令要從前面一個(gè)引起未命中的指令處獲取數據才能繼續執行。
(2)指令雙發(fā)射機制(dual issue mechanism)
??RM7000A的指令分為四種類(lèi)型:整數型、浮點(diǎn)型、分支轉移(branch)和存/?。╨oad/store)。處理器整型部件的超標量分發(fā)單元含有兩個(gè)獨立的流水線(xiàn):M-pipe(memory)和F-pipe(function)。其中,F-pipe處理整數型、分支轉移和浮點(diǎn)操作,如加、減、乘、除等;M-pipe負責整數型、存/取等操作,同時(shí)也進(jìn)行一些浮點(diǎn)數在寄存器間的移動(dòng)。指令雙發(fā)射框圖如圖1所示。
??如果每過(guò)一個(gè)時(shí)鐘周期,每條流水線(xiàn)流出一條指令,在外部看來(lái)就有兩條指令同時(shí)被執行。但是,在處理器中并不是總能做到雙發(fā)射的,這跟具體的指令組合有關(guān),比如:當一個(gè)指令要處理控制寄存器時(shí),就不能和其它的指令同時(shí)發(fā)射。
(3)超標量流水線(xiàn)(superscalar pipeline)
??RM7000A包含一條5階超標量指令流水線(xiàn)(度m=2),供M-pipe和F-pipe使用。每條指令被劃分為5個(gè)子過(guò)程:I為取指令,R為取寄存器數,A為執行,D為取數據,W為寫(xiě)回,如圖2所示。
??配合指令的雙發(fā)射機制,每過(guò)一拍,流水線(xiàn)都要流入兩條新的指令。在滿(mǎn)負荷的情況下,可以有10條指令在流水線(xiàn)不同的部件上同時(shí)運行,相當于提高了工作頻率。
??在RM7000A中,實(shí)際上還存在一個(gè)7階流水線(xiàn)單獨處理浮點(diǎn)操作,不過(guò),這個(gè)流水線(xiàn)對用戶(hù)來(lái)說(shuō)是完全透明的。
(4)寄存器組(register files)
??RM7000A含有眾多的寄存器。
◆ 整型操作寄存器組。位于整型單元中,包括32個(gè)64位的通用寄存器(GPR),2個(gè)專(zhuān)用于整型乘、除運算的寄存器Hi和Lo,1個(gè)程序計數器PC(對用戶(hù)透明)。其中通用寄存器的r0被硬連接為0。它可以作為目的寄存器存放指令以后會(huì )舍棄的暫時(shí)結果,也可以根據需要為指令提供0作為操作數。
◆ 浮點(diǎn)操作寄存器組。包含32個(gè)64位的浮點(diǎn)通用寄存器(FGR)和32個(gè)32位控制寄存器。
◆ 系統控制寄存器組(CP0)。用于內存管理調度、地址轉換、異常處理等。
(5)集成、高效的內存管理單元
?? 為快速將虛擬地址轉換成物理地址,RM7000A使用一個(gè)大容量的全相聯(lián)TLB(Translation Lookaside Buffer,如圖3所示)來(lái)實(shí)現這個(gè)目標。這個(gè)TLB被指令和數據共用,稱(chēng)為JTLB(Joint TLB);可以配置成48對或64對入口,分別映射96頁(yè)或128頁(yè)的虛擬地址。頁(yè)面的大小可配置,從小到大依次為4K、16K、64K、256K、1M、4M、16M。當發(fā)生TLB未命中時(shí),RM7000A采用的替換算法主要是隨機替換,以簡(jiǎn)化硬件設計。同時(shí)也提供鎖定特定地址機制,以便操作系統為提高性能而讓一些頁(yè)面持續被映射。
ASID――Address Space Identifier,虛擬空間標識符,表示內核態(tài)(kernel)、管態(tài)(supervisor)、用戶(hù)態(tài)(user)三種虛擬空間。
G――Global,每個(gè)TLB入口都有的標識符。
(6)指令格式及尋址方式
??需要注意的一點(diǎn)是:盡管RM7000A是64位的微處理器,但它的指令長(cháng)度都是固定的32位。
??RM7000A是一種典型的寄存器型(Register-Register)微處理器,即除了load/store指令外,其它的指令不能直接訪(fǎng)問(wèn)內存。這樣的好處顯而易見(jiàn):寄存器的訪(fǎng)問(wèn)速度比存儲器快得多,寄存器存儲使得編譯器的效率提高,于是程序的執行速度加快;另外,表示寄存器的位數比表示內存單元的位數要少,從而可以改善指令密度。
??MIPS類(lèi)的指令可以用三種形式表示。
MIPS構架支持兩種尋址方式。
◆ 立即數尋址(immediate)。例如:Add R1,#10,這里#10的代表常數10,指令含義是Regs[R1]←egs[R1]+10。
◆ 位移尋址(displacement)。例如:Add R1,10(R2),指令含義是Regs[R1]←egs[R1]+Mem[10+Regs[2]]。
對操作數稍做改變,可以得到另外兩種尋址方式。
◆ Add R1,(R2) Regs[R1]←Regs[R1]+Mem[Regs[R2]]
寄存器R2存放的只是一個(gè)地址,這個(gè)地址的內容才是要取的數據,這相當于寄存器間接尋址。
◆ Add R1,10 Regs[R1]←Regs[R1]+Mem[10]
此時(shí)第二個(gè)寄存器必須是r0,借助于r0(如前所述,r0被硬接位0)提供的0,就得到了直接尋址方式。
因此,實(shí)際上微處理器有四種尋址方式可用,提高了編程的靈活性。
(7)數據類(lèi)型
??MIPS體系對于對齊(align)有著(zhù)相當嚴格的要求,指令必須32位對齊;超過(guò)一個(gè)字節的數據必須按規則對齊:
◇半字的邊界要與偶數對齊;
◇字的邊界要與mod 4=0的字節對齊;
◇雙字的邊界要與mod 8=0的字節對齊。
如圖4所示,是數據對齊示意圖。采用這種方式對齊可以簡(jiǎn)化硬件判斷、控制部分的設計,節省芯片空間,也有利于加快程序運行速度。
2 應用及實(shí)現探討
??以RM7000A為基礎,配合不同的外圍器件,可以構成多種應用形式。
(1)典型應用
??圖5所示是一種較為簡(jiǎn)單的應用方式,特點(diǎn)是器件少、可靠性好、整個(gè)系統所占空間很小,適合于空間受到限制的領(lǐng)域。因為需要識別和驅動(dòng)的設備不多,引導和應用程序都相對簡(jiǎn)單;通過(guò)Dual UART接口可以和主計算機通信,并且在主計算機的超級終端里顯示本系統運行的信息,如圖6所示。
具體應用:
① 可以作為單獨的電腦板,配以適當的外設,構成一個(gè)小型的高速計算機系統,用于完成比較簡(jiǎn)單且單一的任務(wù);
② 可以根據應用的要求,增加總線(xiàn)的控制芯片和接口,作為一個(gè)總線(xiàn)上的CPU控制板(比如:PCI總線(xiàn)、CompactPCI總線(xiàn)),配合傳感器或其它板卡如AD/DA板、DSP通信板等,進(jìn)行測試、高速數據采集、大量的圖形圖像處理等工作;
③ 用于其它網(wǎng)絡(luò )設備中,如大型的路由器、交換機等。
??上述應用中,為減小體積,存儲容量受到了限制,也沒(méi)有提供類(lèi)似鍵盤(pán)鼠標的對外接口。而人們已經(jīng)習慣了PC的使用,總是希望能夠以比較熟悉的方式來(lái)操作其它系統。對上述應用做適當的擴展,就可以達到近似于PC的結構,應用框圖如圖7所示。
??通過(guò)增加南橋、超級I/O等芯片,就可以獲得類(lèi)似于PC結構中的各種接口。具體應用如下:
① 作為開(kāi)發(fā)板,測試、移植在MIPS系統上運行的不同操作系統,開(kāi)發(fā)調試基于MIPS的各種應用軟件;
② 作為一個(gè)完整的系統構成便攜式電腦;
③ 利用Dual UART的顯示,或者擴展的VGA顯示功能,增大的外部存儲器容量,作為高速圖形工作站進(jìn)行圖形圖像的設計、開(kāi)發(fā)工作;
④ 作為網(wǎng)絡(luò )服務(wù)器應用于Internet和企業(yè)局域網(wǎng)中提供各種網(wǎng)絡(luò )服務(wù);
⑤ 作為分布式處理系統的一個(gè)節點(diǎn)工作站,比如銀行系統中,RM7000A的高速、寬帶能對各種交易請求做出快速響應;
結 語(yǔ)
??基于MIPS的微處理器在國外主要用于高端設備,在國內的開(kāi)發(fā)應用還不是很廣。但是,MIPS強大的功能和它先進(jìn)的技術(shù)理念已經(jīng)逐漸為人們所認識到。研制基于MIPS的高性能計算機系統,進(jìn)而帶動(dòng)相關(guān)操作系統的研究、移植,以及各種應用程序的開(kāi)發(fā),對于提高計算機應用研究水平,提高產(chǎn)品尤其是軍品的性能和競爭力,具有很重要的現實(shí)意義。
(本文為縮寫(xiě)版本,詳細內容請見(jiàn)www.dpj.com.cn)
評論