第六周學習總結

2021-09-25 19:17:03 字數 3513 閱讀 1341

定義乙個指令集體系結構,例如y86,包括定義各種狀態元素、指令集和他們的編碼、一組變成規範和異常事件處理。

①程式設計師可見的狀態:y86中每條指令都會讀取或修改處理器狀態的某些部分。這裡的「程式設計師」既可以是用彙編**寫程式的人,也可以是產生機器**的編譯器。

y86的處理器狀態類似ia32。有8個程式暫存器:%eax,%ecx,%edx,%ebx,%esi,%esp和%ebp。處理器的每個程式暫存器儲存乙個字。

②儲存器,從概念上來說是乙個很大的位元組陣列,儲存著程式和資料。

y86程式用虛擬位址來引用儲存器位置。硬體和作業系統軟體聯合起來將虛擬位址翻譯成實際或實體地址,指明資料實際儲存在儲存器那個地方。

③狀態碼stat:它表明程式執行的總體狀態,會指示是正常執行還是出現了某種異常。

y86指令集基本上是ia32指令集的乙個子集,只包括四位元組整數操作,定址方式比較少,操作也較少。

ia32的movl指令分成了四個不同的指令:irmovl,rrmovl,mrmovl,rmmovl 顯示的指明源和目的。

源可以是立即數i,暫存器r,儲存器m     目的可以是暫存器r,儲存器m

不允許從儲存器到儲存器,也不允許將立即數傳到儲存器。

4個整數操作指令:addl,subl,andl,xorl  只對暫存器資料進行操作,會設定3個條件碼

7個跳轉指令:jmp,jle,jl,je,jne,jge,jg

6個條件傳送指令:cmovle,comvl,cmove,cmovne,cmovge,cmovg

call指令將返回位址入棧,然後跳到目的位址。ret從這樣的過程呼叫中返回

pushl,popl實現入棧和出棧

halt停止指令的執行,會導致處理器停止,並將狀態碼設定為hlt

每條指令需要1-6個位元組不等,每條指令的第乙個位元組表明指令的型別。

1.第乙個位元組

這個位元組分為兩個部分,每個部分4位:

比如:課本第233頁,y86指令集的功能碼:

整數操作裡**部分均為6,功能部分區分addl,subl,andl,xorl

分支指令裡**部分均為7

傳送指令裡**部分均為2

這裡要注意rrmovl歸到了傳送指令裡,前面說過它們有相同的指令**

8個程式暫存器中每個都有相應的0~7的暫存器識別符號,程式暫存器存在cpu中的乙個暫存器檔案中,這個暫存器檔案就是乙個小的、以暫存器id作為位址的隨機訪問儲存器。

當需要指明不應訪問任何暫存器時,用id值0xf表示

2.有的需要額外的位元組

(1)附加的暫存器指示符位元組

指定乙個或兩個暫存器,例如ra或者rb。

(2)附加的4位元組常數字

這個字的用處:

1.irmovl的立即數資料

2.rmmol和mrmovl的位址指示符的偏移量

3.分支指令和呼叫指令的目的位址

注意事項

1.分支指令和呼叫指令的目的位址是乙個絕對位址

2.所有整數採用小端法編碼

對於y86,當遇到這些異常的時候,我們就簡單的讓處理器停業執行指令。

在更完整的設計中,處理器通常會呼叫乙個異常處理程式,這個過程被指定用來處理遇到的某種型別的異常。

y86和ia32的區別

1.y86有時需要兩條指令來完成ia32一條指令就能完成的事

2.y86沒有伸縮定址模式

1.邏輯門產生的輸出,等於它們輸入位值的某個布林函式。

2.and &&or ||not !

3.邏輯門只對單個位的數進行操作,而不是整個字。

4.邏輯門總是活動的,輸入變化輸出很快就跟著變化。

組合電路:講很多的邏輯門組成乙個網,就能構成計算塊。

構建這些網有兩條限制:

①兩個或多個邏輯門的輸出不能連線在一起,否則他們可能會使線上的訊號矛盾,可能會導致乙個不合法的電壓或電器故障。

②這個網必須是無環的。

判斷集合關係的通用格式是:

iexpr in 

iexpr等都是整數表示式。

(1)時鐘暫存器(簡稱暫存器):儲存單個位或字。

暫存器分為「硬體暫存器」和「程式暫存器」。

2.y86處理器

它會用時鐘暫存器儲存程式計數器pc,條件**cc和程式狀態stat。

下面是關於各個階段以及各階段內執行操作的簡略描述:

解碼:解碼階段從暫存器檔案讀入最多兩個運算元,得到val a/val b.

訪存:訪存階段可將資料寫入儲存器或從儲存器讀出資料

寫回:最多可寫兩個結果到儲存器。

程式計數器放在暫存器中,位於左下角pc。

資訊隨著線流動,方向是先向上再向右

反饋先祖在右邊向下

所有硬體單元的處理都在乙個時鐘週期內完成。

淺灰色方塊表示硬體單元

控制邏輯塊是用灰色圓角矩形表示的

線路的名字在白色橢圓中說明

寬度為字長或更窄的資料連線用細線

單個位的連線用虛線。

seq抽象檢視的畫法:

乙個時鐘變化會引發乙個經過組合邏輯的流來執行整個指令。

seq的實現包括組合邏輯和兩種儲存器裝置:

時鐘暫存器:程式計數器和條件碼暫存器

隨機訪問儲存器:暫存器檔案、指令儲存器和資料儲存器

組合邏輯不需要時序或控制。

四個硬體單元需要時序進行明確控制:程式計數器、條件碼暫存器、資料儲存器和暫存器檔案,通過乙個時鐘訊號來控制,它觸發將新值裝載到暫存器以及將值寫到隨機訪問儲存器。即要控制處理器中的時序,只需要暫存器和儲存器的時鐘控制。

4.3.4 seq階段的實現

1、取指階段

以pc作為起始位址,從指令儲存器中讀出六個位元組。

根據這些位元組,產生出各個指令字段。pc增加模組計算訊號valp。

2、解碼和寫回階段

指令字段解碼,產生暫存器檔案使用的四個位址(兩個讀和兩個寫)的暫存器識別符號。

從暫存器檔案中讀出的值成為訊號vala和valb。兩個寫回值vale和valm作為寫操作的資料。

3、執行階段

alu要麼為整數運算指令執行操作,要麼作為加法器。

根據alu的值,設定條件碼暫存器。檢測條件碼的值,判斷是否該選擇分支。

4、訪存階段

資料儲存器既可以寫,也可以讀儲存器的值。從儲存器讀出的值就形成了訊號valm。

5、更新pc階段

根據指令**和分支標誌,從訊號valc、valm和valp中選出下乙個pc的值。

第六周學習總結

已經進入到了第六周,我感覺我的水平也在逐步提公升,從一開始的看不懂題到如今能夠做出題來,這說明更多的思考是值得的。而在做題的過程中,我也對動態規劃演算法有了更為深刻的認識。動態規劃,就是利用歷史記錄,來避免我們的重複計算。而這些歷史記錄,我們得需要一些變數來儲存,一般是用一維陣列或者二維陣列來儲存。...

第六周學習總結

pytorch 本週繼續學習了基本操作,包括tensor的合併與分割 數 算 屬性統計等 另外複習了隨機梯度下降演算法,並通過乙個demo實現了自動求梯度和反向傳播 此外還實現了乙個2d函式的模型構建與優化。pytorch自用筆記 第三週 高階篇 計算機視覺 本週學習了一些cnn框架,包括lenet...

第六周學習總結

scrum 原意是橄欖球,這裡特指一種敏捷開發框架,是乙個增量的 迭代的開發過程。然後講了 自主織團隊 與中國團隊的不同之處還有scrum在需求方面的核心理念,最主要的乙個概念是使用者故事,有關這個概念主持人用了相當一部分時間去講述,下面給大家補充一下使用者故事的標準格式 作為.角色 從使用者的角度...