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

正文內(nèi)容

微處理器訪存部件設(shè)計及結(jié)構(gòu)功能驗(yàn)證碩士學(xué)位論文(編輯修改稿)

2025-07-23 05:33 本頁面
 

【文章內(nèi)容簡介】 8bit和64bit。圖 訪存類指令格式Fig MEM instruction style,base(基地址2)所對應(yīng)的寄存器的數(shù)據(jù)加上offset(偏移量)作為內(nèi)存尋址的地址,rt作為目標(biāo)寄存器,STORE類指令就是把rt寄存器中的數(shù)據(jù)寫到內(nèi)存中,LOAD類指令把內(nèi)存的數(shù)據(jù)寫入到rt寄存器中。不管是LOAD類指令還是STORE類指令都是通過SRAM存取數(shù)據(jù)的,所以所有的指令都是復(fù)用同一套電路。Fig EMS memory address partition 32位的內(nèi)存地址分為tag,index,offset三部分, Index8位是把劃分出來的每一塊分成了256行,offset4位能索引每行128bit中的每BYTE。,每個tag塊分為256行,每行128bit。cache分為了256行每行也是128bit。內(nèi)存中的每個tag塊的第一行都對應(yīng)cache中的第一行,以此類推。這就是組相連映射的方式,本次設(shè)計采用的是四組組相連直接映射。有4個256行,每行128bit的cache塊,4個塊都采用直接映射的方式,4塊cache的每一行tag位都是不相同的。圖 cache和內(nèi)存的對應(yīng)關(guān)系Fig The mapping to the cacheand the EMS memory本文中的設(shè)計采用smic IP ,20位的tag位和用reg搭建的1bit valid位。Valid位初始化為0,當(dāng)需要把數(shù)據(jù)寫入cache的時候同時把tag(內(nèi)存對應(yīng)地址的高20位)寫入存放tag位的SRAM中。寫入數(shù)據(jù)同時把valid位置為1。Fig the struction about dcache訪存部件是作為一個FU(function union)模塊在處理器中實(shí)現(xiàn)的,訪存部件的LOAD/STORE指令通過取址,譯碼,發(fā)射后傳送到了訪存部件中。Fig the MEM struction該模塊分為四個流水級進(jìn)行處理,加上對外接口模塊,共有5個模塊,分別為:Maddr地址加模塊 ,LSQ模塊,DCache模塊,Tagcmp模塊,Adapter模塊。發(fā)射模塊發(fā)送到訪存部件的數(shù)據(jù)包括:指令的valid,op(標(biāo)示執(zhí)行什么樣的操作),64位data,32位基地址,32位偏移量,id(標(biāo)示在整個處理器的指令編號,以便能順序的寫回),dest(LOAD類的指令需要寫回到通用寄存器中,dest標(biāo)示寫回到通用寄存器的地址。STORE類指令因?yàn)椴恍枰獙懟氐郊拇嫫髦兴詃est是 0號寄存器)。所有進(jìn)入訪存模塊的指令(指令valid為1)通過發(fā)射模塊傳到了Maddr模塊后,進(jìn)行基地址加偏移量的加法操作,然后放入第二級流水線(LSQ)排隊等待,LSQ是訪存類指令的四項(xiàng)隊列。經(jīng)過地址加處理后的指令依次存入這個四項(xiàng)隊列中。指令在這個隊列中順序的對dcache發(fā)出請求。通過index索引出4組dcache對應(yīng)的那一行tag,data,valid,存入寄存器。在下一個時鐘周期通過tag模塊把4組dcache中存儲的tag和地址加后的地址高20位進(jìn)行對比,: tag對比示意圖Fig tag pare circuit當(dāng)tag對比為結(jié)果為1(有且只有1組dcache中的tag和指令請求的地址高20位相同)并且指令的valid和數(shù)據(jù)的valid都為1的時候則為hit,這個時候把hit信號傳給LSQ,同時并行的通過op執(zhí)行STORE/LOAD判斷,如果是STORE類得指令就把data通過offset判斷分別插入4組dcache的數(shù)據(jù)塊中,如果是LOAD類指令則通過offset把需要的數(shù)據(jù)分別讀出來。最后如果hit把4組已經(jīng)準(zhǔn)備好的數(shù)據(jù)選出正確的一組,等待WB模塊發(fā)出能寫回的信號LOAD類指令把數(shù)據(jù)寫回通用寄存器中,STORE類的指令把128bit的數(shù)據(jù)和tag寫入相應(yīng)的dcache行中。如果miss則給adapter模塊請求,通過adapter模塊和內(nèi)存交互,內(nèi)存取出數(shù)據(jù)后放入adapter中,等待WB模塊發(fā)出寫回信號后分LOAD和STORE進(jìn)行相應(yīng)的操作。: tag對比示意圖Fig tag pareLSQ(LOAD/STORE QUEUE)是一個指令緩存區(qū),當(dāng)指令遇見miss的時候會從內(nèi)存中把數(shù)據(jù)取出來,這個時間相對于處理器的運(yùn)行速度來說是很慢的。這時把在LSQ中排隊的中后面的指令給dcache請求,先行判斷。: LSQ fifoHead,Tail,Head00分別是LSQ的三個控制指針,都是分別通過兩位的寄存器寄存。每個時鐘周期判斷進(jìn)入隊列的指令的valid,當(dāng)valid為1時為有效指令在下個時鐘周期上升沿的時候打入Tail指針?biāo)赶虻募拇嫫髦?,Tail指針相應(yīng)的加1。Head指針指向的是第一條等待寫回的指令,當(dāng)WB模塊給出能寫回的信號后,在下個時鐘周期上升沿Head加1。當(dāng)Head和Tail指向同一個寄存器的時候有兩種情況一是隊列全空的時候,還有就是隊列全滿的時候。這個時候判斷Head和Tail同時指向的那一行中寄存器中的valid,如果為1則是滿,為0則是空,隊列為滿給發(fā)射模塊發(fā)送信號,發(fā)射模塊將不會給訪存模塊發(fā)送新的指令,當(dāng)有指令寫回后隊列中出現(xiàn)了空間,這個時候LSQ隊列才能接受新的指令。本問中的設(shè)計采用的是單端口的SRAM因此每次只能有一條指令對dcache進(jìn)行操作。Head00指向的就是當(dāng)前發(fā)往dcache的指令。當(dāng)Head00發(fā)出一條指令到dcache查找數(shù)據(jù)后,Head00在下一個時鐘上升沿加1。當(dāng)Head00指向的是STORE類的指令,在指令發(fā)送到dcache后Head00不能加一,只能是等待STORE類的指令寫回了后Head00加1。 SRAM使用簡介 SRAM IP核結(jié)構(gòu) SRAM IP input/output IP核,這個SRAM IP核是作為訪存部件中的dcache使用。當(dāng)CEN信號為低是片選有效信號,這個時候片子選通,可以進(jìn)行讀寫的操作。WEN是讀寫信號。當(dāng)CEN信號為有效的時候WEN高電平是進(jìn)行讀操作,WEN信號為低時進(jìn)行寫操作。A端口是讀取地址輸入端口,SRAM每次讀取一行數(shù)據(jù),因此A地址代表索引行地址。D是輸入端,在寫模式下輸入端口的數(shù)據(jù)會寫入SRAM中。Q端口是輸出端口。 SRAM讀時序圖Fig SRAM read cycle。在時鐘上升沿到來時采集CEN和WEN信號,片選信號為低WEN信號為高是讀操作,同時采集A端口地址信息。當(dāng)CEN信號為高的時候,輸出端保持上個采集信號時的輸出。 SRAM寫時序圖Fig SRAM write cycle,WEN為低是寫操作,信號時鐘上升沿來后采集信號,這個時候輸出端口Q輸出D端口的數(shù)據(jù)當(dāng)CEN信號為高的時候,輸出端保持上個采集信號時的輸出??梢钥闯鯟EN為低就是寫數(shù)據(jù)寫的地址是A輸入端口01,02寫入的是一個fffffffffffff的數(shù)據(jù)串,當(dāng)WEN為高是讀數(shù)據(jù),讀的是地址A 01和03的數(shù)據(jù)可以看出01的數(shù)據(jù)是fffffffffffff的數(shù)據(jù)串,而03所對應(yīng)的數(shù)據(jù)已經(jīng)改變成111111111111的數(shù)據(jù)串。Fig emluator circuit dcache存取數(shù)據(jù)維護(hù)Dcache每一行對應(yīng)一個dirty位,4組dcache就有4個256bit的寄存器組存放dirty位。當(dāng)進(jìn)行STORE類指令操作后在寫入數(shù)據(jù)的同時對對應(yīng)行的dirty位置1,表明該行的數(shù)據(jù)需要寫回的內(nèi)存中。本次設(shè)計采用的是write back策略:先把store的數(shù)據(jù)放入dcache中,在合適的時間寫入內(nèi)存中。當(dāng)LSQ中沒有指令的時候,通過前導(dǎo)零檢測4組dirty數(shù)組,并行檢測每一組第一個dirty位的行號。優(yōu)先把第一組dcache的數(shù)據(jù)寫回到內(nèi)存中,其次是第二組,以此類推。訪存類指令在Tagcmp模塊進(jìn)行tag位對比,miss的時候,會出現(xiàn)以下幾種情況:如果4組dcache的地址對應(yīng)行數(shù)據(jù)的valid都為0時,這個時候是miss的情況發(fā)生了,從內(nèi)存中把數(shù)據(jù)提取出來之后,這個時候放入到第一個SRAM組中。如果第一組dcache的地址對應(yīng)行數(shù)據(jù)的valid都為1,其他幾組valid為0時,又出現(xiàn)了miss的情況,從內(nèi)存提取的數(shù)據(jù)放入第二組dcache中。以此類推。如果4組dcache的地址對應(yīng)數(shù)據(jù)行valid都為1并且對應(yīng)行dirty都為1的情況下出現(xiàn)了miss,優(yōu)先把第一組的數(shù)據(jù)寫入內(nèi)存。當(dāng)四組valid都為1但是dirty位不全為1時從內(nèi)存中取出來的數(shù)據(jù)后根據(jù)4組dcache優(yōu)先級1,2,3,4的先后順序放入。訪存模塊在以下幾種情況下會對Dcache進(jìn)行操作1) 當(dāng)miss的時候需要把數(shù)據(jù)從內(nèi)存中取出來,取出來的數(shù)據(jù)放入adapter中等待寫回到dcache中。2) 在Tagcmp模塊SOTRE類指令hit的時候需要把數(shù)據(jù)寫到dcache中。3) 訪存類指令通過LSQ隊列等待從dcache中讀取數(shù)據(jù)。4) 在LSQ隊列中沒有任何指令的情況下,需要把標(biāo)記有dirty的dcache行數(shù)據(jù)寫入內(nèi)存中。本次開發(fā)使用的是單端口SRAM,每個時鐘周期一次只能讀或?qū)懸淮?,如果有上述多個請求同時到來,需要排隊完成,優(yōu)先級是1,2,3,4在同個時鐘周期下優(yōu)先考慮第一種情況依次類推。訪存模塊和DDR controller是通過Adapter模塊進(jìn)行交互的,可以分為1) 單純的把dirty對應(yīng)行數(shù)據(jù)寫入內(nèi)存中。2) 在miss的情況下把數(shù)據(jù)從內(nèi)存相應(yīng)地址中讀出來。3) 在四路數(shù)據(jù)對應(yīng)的數(shù)據(jù)行dirty都為1,又miss的情況下,先把“dirty”的數(shù)據(jù)存入相應(yīng)內(nèi)存地址中然后取出“miss”所對應(yīng)的內(nèi)存地址中的數(shù)據(jù)。 下面是Adapter和內(nèi)存交互的bus總線。Adapter_out_bus data = Adapter_out_bus[127:0] loadaddress = Adapter_out_bus[159:128] storeaddress = Adapter_out_bus[191:160] valid = Adapter_out_bus[192] ada_loadorstore = Adapter_out_bus[193] ada_out_ready = Adapter_out_bus[194] storeonly = Adapter_out_bus[195] valid表示訪存對內(nèi)存有請求,本次設(shè)計采用的是馮諾依曼結(jié)構(gòu):指令和數(shù)據(jù)通過同樣的數(shù)據(jù)通路從內(nèi)存中取出來。在同一個時鐘周期DDR controller只處理icache或者dcache中的一個請求,當(dāng)icache的請求和dcache在同一個時鐘周期時,優(yōu)先處理icache的請求??偩€Adapter_out_bus[193]為1表示把數(shù)據(jù)寫入Adapter_out_bus[191:160]這個地址所對應(yīng)的內(nèi)存中,當(dāng)完成這個操作之后,把這一位置為0,表示把Adapter_out_bus[159:128]地址的數(shù)據(jù)所對應(yīng)的內(nèi)存數(shù)據(jù)從內(nèi)存中寫出來。Adapter_out_bus[194]當(dāng)信號為1的時候表示和內(nèi)存交互本次操作已完成。可以等待寫回了。Adapter_out_bus[195]當(dāng)信號為1的時候表示只把數(shù)據(jù)存入Adapter_out_bus[191:160]地址所對應(yīng)的內(nèi)存中。當(dāng)storeonly出現(xiàn)為1的時候loadorstore這個信號被屏蔽。訪存的設(shè)計主要是對SRAM IP核的控制和內(nèi)存交互控制,通過LSQ蓄水池加速取指令的速度,現(xiàn)在處理器的速度很多情況下達(dá)不到軟件運(yùn)算的要求,主要是因?yàn)榇鎯ζ鞯乃俣缺容^慢,因此在面積允許的情況下可以加入二級緩存減少和內(nèi)存的交互,加速了取數(shù)據(jù)的速度。 指令發(fā)射模塊issue主要包括3個模塊,分別是ACP模塊、ISSUE模塊及WB模塊。ACP模塊的主要功能是將譯碼后的指令存入IQ隊列中,依次對進(jìn)入IQ隊列中的指令編號。在下個流水級對最前面四條指令是幾操作數(shù)進(jìn)行判斷,數(shù)據(jù)相關(guān)判斷,資源相關(guān)判斷,在所有相關(guān)判斷成立的條件下,判斷發(fā)射條件是否成立,成立則把成立的指令發(fā)射到相關(guān)的功能部件中,如果不成立則等待條件成立后發(fā)射指令,WB模塊就是判斷寫回條件是否成立,若條件成立就將數(shù)據(jù)寫回,當(dāng)遇見跳轉(zhuǎn)類指令時,需要刷流水線,WB模塊產(chǎn)生BRUSH信號,刷掉整個處理器的流水線。 指令發(fā)射模塊結(jié)構(gòu)示意圖 issue struction IQ(指令隊列)維護(hù)IQ指令隊列是一個16項(xiàng)的隊列,起著蓄水池的作用,當(dāng)執(zhí)行部件流水線被堵住的時候前面取址,譯碼模塊可以繼續(xù)工作能把后面的指令放入IQ隊列中,當(dāng)取址,譯碼模塊被堵住的時候,后面部件可以取出IQ隊列中的后面的指令繼續(xù)工作。指令存入IQ后判斷這4條指令分別有幾個源操作數(shù),以及每個操作數(shù)的數(shù)據(jù)相關(guān)性,并判斷出FU資源相關(guān)性,并將這些得到的數(shù)據(jù)信號進(jìn)行中間寄存。(1)相關(guān)性判斷策略:相關(guān)分為3種形式,分別為WAW(同時對同一空間寫)、RAW(對一存儲空間先寫再讀)、WAR(IQ中不存在,從上往下,且都是先讀后寫)解決:WAW:在寫回邏輯里判斷,當(dāng)一拍中有兩條相同dest的指令要寫回,只寫回id在前的。RAW:在發(fā)射邏輯里判斷,比較要發(fā)射指令的src和dest。WAR:不會發(fā)生,指令操作隊列中的指令是順序發(fā)射,前一條指令在沒有讀寄存器時,后
點(diǎn)擊復(fù)制文檔內(nèi)容
化學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1