freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

網(wǎng)絡(luò)處理器中微引擎的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文(編輯修改稿)

2024-07-20 01:21 本頁面
 

【文章內(nèi)容簡介】 寄存器。4) 基址加偏移量尋址:操作數(shù)在存儲器中,且存儲器地址是某寄存器內(nèi)容與指令中表示偏移量值的常量之和。在存儲器訪問指令中計(jì)算存儲器訪問地址時(shí)用到。5) PC 相對尋址:地址是 PC 與指令中常量的和值。通常在條件分支指令中計(jì)算分支目標(biāo)地址時(shí)用到。 寄存器模型 轉(zhuǎn)發(fā)微引擎的寄存器可分為兩類,一類是指令可訪問的內(nèi)部寄存器,包括以下幾種類型:1) UREG:用戶自定義的16個(gè)32位通用寄存器。2) ALU32:1個(gè)32位寄存器專用于ALU運(yùn)算,保存運(yùn)算結(jié)果。3) MAX:2個(gè)用于SexMaxMin指令運(yùn)算。4) MINTERM:2個(gè)用于Minterm指令運(yùn)算。5) ENC_PR:2個(gè)用于優(yōu)先級編碼運(yùn)算。6) SREG:16個(gè)不同長度的寄存器用于特殊用途,如間接尋址。7) OUT_IF:16個(gè)輸出接口寄存器,實(shí)現(xiàn)與統(tǒng)計(jì)、幀描述等相關(guān)的接口功能。8) HREG:8個(gè)幀頭寄存器用于保存微引擎處理之后的數(shù)據(jù)幀幀頭數(shù)據(jù)。另一類是指令不可訪問的Host寄存器,全部由主機(jī)來初始化和配置。初始值也可以由P1600微碼插入然后在加載期間執(zhí)行。其中MREG初始化命令由host執(zhí)行,這是在執(zhí)行指令存儲器中的程序之前進(jìn)行。 全局Host寄存器地址寄存器名描述讀/寫0x00INT_REG中斷寄存器寫0x010x04WIDE_LOAD[3:0]指令裝載寄存器寫0x08BR_ADDR子程序地址寫0x090x18MREG[15:0]ALU掩碼寄存器寫0x19HOST_CONF學(xué)習(xí)、排序和信道支持寄存器寫0x200x27HOST_REG[7:0]host調(diào)試寄存器讀0x2CMCODE_BR_INT微碼執(zhí)行或斷點(diǎn)命令讀0x2DSTATUS_REG狀態(tài)寄存器讀地址寄存器名描述讀/寫0x2E0x35PCREG[7:0]host PC調(diào)試寄存器讀0x36MCODE_ERR_REG微碼偶校驗(yàn)錯(cuò)誤寄存器讀 微引擎結(jié)構(gòu)設(shè)計(jì) 微引擎結(jié)構(gòu)描述 在本文設(shè)計(jì)的P1600網(wǎng)絡(luò)處理器轉(zhuǎn)發(fā)微引擎為可編程處理器,采用類超標(biāo)量結(jié)構(gòu),共有4個(gè)RISC核,一個(gè)周期可以同時(shí)處理多條指令。 轉(zhuǎn)發(fā)微引擎總體結(jié)構(gòu)框圖微引擎頂層接口描述如下:1) Host主機(jī)訪問配置Resolve微引擎的Host寄存器。2) Resolve微引擎接收Search1微引擎?zhèn)魉偷膸阉鹘Y(jié)果(Results)。3) Resolve微引擎向Search1微引擎?zhèn)魉偷母呒墝W(xué)習(xí)(High Learn)信息。4) Resolve微引擎向Search2微引擎?zhèn)魉蛶年P(guān)鍵字(Keys)和消息 (Messages)。5) Resolve微引擎向Search2微引擎?zhèn)魉蛶髁靠刂茀?shù)。6) Resolve微引擎向Modify微引擎?zhèn)魉蛶男畔ⅲ嚎刂萍拇嫫?、幀的? 針。7) Resolve微引擎訪問統(tǒng)計(jì)計(jì)數(shù)(Statistics)模塊。8) Resolve微引擎通知網(wǎng)絡(luò)模塊(NETS)中的接收幀描述符模塊(RFD)丟棄幀。 微引擎功能模塊設(shè)計(jì) 微引擎內(nèi)部主要由指令執(zhí)行部件和與之相配合的數(shù)據(jù)寄存器、指令存儲器構(gòu)成。在執(zhí)行過程中,取指、取操作數(shù)、寫回運(yùn)算結(jié)果都是在微引擎內(nèi)部進(jìn)行,無需訪問外部存儲設(shè)備,因此能夠在單周期內(nèi)以極高的速度執(zhí)行操作。,轉(zhuǎn)發(fā)微引擎可分為以下功能模塊:指令存儲器、輸入出入存儲器(寄存器)、內(nèi)部寄存器堆、功能執(zhí)行單元。 微引擎內(nèi)部模塊示意圖(1) 指令存儲器指令存儲器使用SRAM,可以存放1536條指令。具有73位的數(shù)據(jù)讀/寫總線,11位的地址總線。初始化時(shí)Host主機(jī)通過配置WIDE_LOAD寄存器,將程序裝載到指令存儲器中。首先Host寫指令數(shù)據(jù)到WDATA[1]~WDATA[3]寄存器和寫指令地址到WDATA_CMD寄存器,然后信息被寫到指令存儲器。Host通過PCI接口能夠一次性下載超過32位的數(shù)據(jù)。流水線運(yùn)行時(shí),每個(gè)時(shí)鐘周期從指令存儲器中取出一條指令。(2) 輸入輸出存儲器 輸入存儲器存放搜索微引擎的查找結(jié)果,其中RMEM保存由搜索微引擎寫入的結(jié)果/消息(每幀最多16個(gè)),大小為384字節(jié);RMEM對應(yīng)搜索微引擎的128位數(shù)據(jù)總線。結(jié)果/消息的前16位是控制位,同時(shí)將它們寫入結(jié)果控制(Result control)模塊。Get、Copy、GetRndBits、GetFixBits、GetRnd4Bits指令可以從輸入存儲器中取出源操作數(shù)。輸出存儲器存放轉(zhuǎn)發(fā)微引擎作出的一系列決定,供搜索微引擎下一步的查找。192字節(jié)的OMEM,每幀可以最多保存8個(gè)關(guān)鍵字/消息。Pukey、Copy指令把源操作數(shù)寫入輸出存儲器中。輸入輸出存儲器均通過基址加偏移量尋址訪問。另外,8個(gè)24位寄存器HREG專門用于存放轉(zhuǎn)發(fā)微引擎處理之后的關(guān)鍵字/消息的頭部信息, PutHdr等指令可以通過字節(jié)、位尋址訪問HREG。(3) 內(nèi)部寄存器堆 16個(gè)32位的通用寄存器UREG可由微碼程序員任意的訪問使用??梢宰鳛镸ov、MovBits、Mov4Bits、Get、ALU 指令、Mintern、SetMaxMin指令的源操作數(shù)或目的操作數(shù)寄存器。16個(gè)不同長度的特殊寄存器SREG主要為微引擎提供存儲器和寄存器間接尋址、保存分支跳轉(zhuǎn)地址、工作狀態(tài)標(biāo)記、流水線狀態(tài)標(biāo)記等功能??梢宰鳛橐苿又噶?、ALU指令、Mintern、SetMaxMin等指令的源操作數(shù)或目的操作數(shù)寄存器。(4)功能執(zhí)行單元 功能執(zhí)行單元包括邏輯算術(shù)運(yùn)算單元ALU、小項(xiàng)運(yùn)算單元MINT、序列大小比較單元MAX、優(yōu)先級編碼單元PRI_ENC、移動執(zhí)行單元MOVE。1)邏輯算術(shù)運(yùn)算單元ALU,該執(zhí)行單元實(shí)現(xiàn)指令的And、Xor、Add、Sub、Addc、Subb、Decode、Encode、NumOnes運(yùn)算。兩個(gè)源操作數(shù)Alu_a[31:0]與Alu_b[31:0]由前一級取操作數(shù)級產(chǎn)生,ALU執(zhí)行單元根據(jù)4位控制信號Alu_ctrl[3:0]判斷所執(zhí)行的具體操作;Alu_maskreg[15:0]提供mask操作所需的值,Alu_mode[1:0]表明了mask如何控制,0——無需mask,1——與A操作數(shù)進(jìn)行mask操作,2——與B操作數(shù)進(jìn)行mask操作,3——與A、B操作數(shù)都進(jìn)行mask操作。最終產(chǎn)生32為計(jì)算結(jié)果Alu_out[31:0]和相關(guān)標(biāo)志位信號。同時(shí)根據(jù)Alu_size[2:0]產(chǎn)生寫回時(shí)所需的屏蔽位Alu_mask[31:0]。 ALU執(zhí)行單元原理圖2)小項(xiàng)運(yùn)算單元MINT該模塊執(zhí)行Mintern運(yùn)算,它包含多個(gè)參數(shù)且精確到位,用戶可選擇至多12個(gè)預(yù)定義的運(yùn)算。: Minterm運(yùn)算示意圖 首先,根據(jù)輸入Mint_i_p2[31:0]和Mint_invmask_p2[31:0],每兩位相比較:相同輸出1,不相同輸出0,故可分別得到M0~M15。然后,輸出依據(jù)運(yùn)算的操作碼類型Mint_oper_p2[3:0]不同,一共有十二種預(yù)定義的運(yùn)算,輸出結(jié)果可為116位。其中每一個(gè)結(jié)果位OUT[i]都由M[i]和MASK[i]進(jìn)行與和或運(yùn)算得到。最后16位結(jié)果全部輸出到Mint_o_p3[15:0],同時(shí)也輸出到DST目的寄存器中,輸出到DST的內(nèi)容受Mint_ctr_p2和SIZE_p2控制。 Mint_ctrl=0:SIZE=1時(shí),[0]到DST;SIZE=2時(shí),[0][1]到DST;Mint_ctrl=1:[1]到DST。3)序列大小比較單元MAX該模塊的功能是從一系列任意長度的數(shù)中找出最大值或最小值。微碼指令的實(shí)現(xiàn)形式如下:SetMaxMin SRC,MODE;Mov MAX_I,SRC1,1;Mov MAX_I,SRC2,1; MAX運(yùn)算單元,首先,將P2級輸入SetMaxMin指令的源操作數(shù)A_operand _p2[31:0]寫入目的寄存器MAX_I [7:0]和MAX_O [7:0]。根據(jù)Max_index_rst_p2決定是否復(fù)位MAX_O_INDEX寄存器的值。若復(fù)位,MAX_O_INDEX[3:0]初始化為0,從0開始計(jì)數(shù);不復(fù)位,從當(dāng)前index的值開始計(jì)數(shù)。根據(jù)Max_cmp_sel_p2決定比較最大值還是最小值。其次,每當(dāng)MAX_I[7:0]寄存器寫入新的值時(shí),發(fā)出信號Max_rd_p2通知MAX模塊讀取,MAX_I[7:0]和MAX_O[7:0]進(jìn)行大小比較。當(dāng)比較最大值時(shí),若MAX_I不大于MAX_O,不更新MAX_O和MAX_O_INDEX。若MAX_I大于MAX_O,更新MAX_O和MAX_O_INDEX。當(dāng)比較最小值時(shí),若MAX_I不小于MAX_O,不更新MAX_O和MAX_O_INDEX。若MAX_I小于MAX_O,更新MAX_O和MAX_O_INDEX。 最后,內(nèi)部寄存器MAX_CNT[3:0]記錄比較數(shù)的序列號,每當(dāng)讀取新的MAX_I[7:0],計(jì)數(shù)器加1。每當(dāng)需要更新MAX_O[7:0]值,同步輸出計(jì)數(shù)器值到MAX_O_INDEX[3:0]的值(初始值為0)。4)優(yōu)先級編碼單元PRI_ENC PRI_ENC運(yùn)算單元,PRI_ENC優(yōu)先級編碼模塊處理指令Movmul和Jmul。根據(jù)輸入寄存器ENC_PRI[7:0]的狀態(tài),選擇8個(gè)源操作數(shù)中的某一個(gè)操作數(shù)輸出。若ENC_PRI[7:0]的bit7為1,則選中從左到右的第一個(gè)操作數(shù)輸出;若ENC_PRI[7:0]的bit7為0而bit6為1,則選中從左到右的第二個(gè)操作數(shù),依次類推,即從最高位開始,選第一個(gè)1:beginif (ENC_PRO[7]) Jmul_addr[10:0]= label7。 else if(ENC_PRO[6]) Jmul_addr[10:0]= label6。 else if(ENC_PRO[5]) Jmul_addr[10:0]= label5。 else if(ENC_PRO[4]) Jmul_addr[10:0]= label4。 else if(ENC_PRO[3]) Jmul_addr[10:0]= label3。 else if(ENC_PRO[2]) Jmul_addr[10:0]= label2。 else if(ENC_PRO[1]) Jmul_addr[10:0]= label1。 else if(ENC_PRO[0]) Jmul_addr[10:0]= label0。 end指令確認(rèn)信號Mul_valid_p2[5:0]決定PRI_ENC模塊執(zhí)行;Movmul將選中的操作數(shù)送到唯一的目的寄存器ENC_PRO[7:0];Jmul根據(jù)選中的操作數(shù)值即跳轉(zhuǎn)地址Jmul_addr_p2[10:0]輸出。由信號 Mul_out_sel決定,若為1輸出Jmul地址,若為0輸出Movmul結(jié)果。每當(dāng)輸出后由信號Mul_reset_p2決定是否復(fù)位寄存器ENC_PRI[7:0]相應(yīng)的判決位,若為1,輸出后置相應(yīng)1為0。5)移動執(zhí)行單元MOVE實(shí)現(xiàn)對Mov、Nop、Get、PutHdr、MovBits、PutHdrBits、GetRnd4Bits、GetFixBits、GetRndBits指令的執(zhí)行處理。根據(jù)源操作數(shù)和控制信息進(jìn)行移動操作,并產(chǎn)生mask位,用于寫回時(shí)按位寫回。 微引擎流水線設(shè)計(jì) 流水線結(jié)構(gòu)設(shè)計(jì)轉(zhuǎn)發(fā)微引擎采用4級指令流水線來實(shí)現(xiàn)微引擎功能(每一級信號的詳細(xì)說明見附錄中的列表)。:1) P0:指令PC值產(chǎn)生;2) P1:取指;3) P2:指令譯碼、取操作數(shù);4) P3:指令執(zhí)行、寫回;: 流水線時(shí)序 四級流水線 流水線相關(guān)部件設(shè)計(jì)(1)PC產(chǎn)生部件這一部件主要實(shí)現(xiàn)流水級中預(yù)取指令的PC產(chǎn)生功能。正常情況下順序執(zhí)行指令,PC值每個(gè)周期加1;遇到P2級執(zhí)行產(chǎn)生的跳轉(zhuǎn)指令,PC值就會變?yōu)橄鄳?yīng)的跳轉(zhuǎn)地址,而且該部件還會響應(yīng)分支指令的讀PC請求,保存當(dāng)前程序地址到寄存器PC_STACK。1)初始化復(fù)位后,指令指針為零;若執(zhí)行完當(dāng)前幀的Result,根據(jù)Halt_valid_p2信號清零PC。2)當(dāng)RMEM接收完一幀的Result 發(fā)出信號Rslv_Srh1_rd_result_finish,通 知流水線開始正常工作。3)正常情況流水線每周期取一條指令,順序執(zhí)行PC+1,輸出PC地址 Pc_p0[10:0]和讀指令使能信號Rd_inst_en_p0。4)當(dāng)P2級執(zhí)行跳轉(zhuǎn)指令,根據(jù)跳轉(zhuǎn)地址有效信號Jump_valid_p2,接收輸入的跳轉(zhuǎn)地址Jump_addr_p2[10:0],并輸出新的PC地址Pc_p0[10:0]和讀使能Rd_inst_en_p0。圖3. 9 P0級接口信號圖(2)指令預(yù)取部件這一部件通過P0級產(chǎn)生的PC地址,在微引擎指令存儲器中取出相應(yīng)的指令,實(shí)現(xiàn)流水級中指令的預(yù)取。如果沒有被分支指令中斷時(shí),就將預(yù)取的指令寄存輸出,否則,輸出空指令Nop。 P1級接口信號圖1)每條指令73位。2)根據(jù)P0級輸入的讀使能Rd_inst_en_p0和地址Pc_p0[10:0],從指令存儲器中取出待執(zhí)行的指令并輸出到下一級。同時(shí)保存Pc_p0[10:0]到P1級的PC地址寄存器Pc_p1[10:0]中,每當(dāng)流水線時(shí)鐘上升沿到來時(shí),傳遞給下一級P2的PC地址寄存器Pc_p2[10:0]。3)當(dāng)P2級執(zhí)行跳轉(zhuǎn)指令需要插入空指令時(shí),接受輸入的Nop_p2[1:0]信號,輸出Nop空指令進(jìn)入下一級流水線。 P1級取指令原理圖(3)譯碼取操作數(shù)部件這一部件主要完成的功能是對P1級預(yù)取到的73位指令進(jìn)行譯碼,從指令中分解出源信息、目的信息和控制信息,然后根據(jù)源信息從寄存器和存儲器中取出相應(yīng)的操作數(shù),目的信息和控制信息輸出到流水線的后一級使用。特別的,
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1