當前位置:股票大全官網 - 資訊咨詢 - 計算機系統導論-筆記

計算機系統導論-筆記

標題:計算機系統導論-筆記

日期:2019-09-28 10:40:32

標簽:

Typora-copy-images-to:。/計算機系統介紹-筆記

這壹章是對計算機的壹些基礎知識,以及計算機能產生的深刻的哲學思想和計算機構成的層次的大概說明。

以8位二進制為例,這裏需要考慮二進制是正數還是負數。如果是負數,我們需要得到補碼來計算,補碼表示中的最高位代表符號位。

十進制到二進制就是每次除以2,記錄余數,然後從右到左排列得到二進制數。

這四種結構是布爾代數的基本結構,也是很多電子設備的固定門結構。

浮點數用於表示小數,但並不絕對準確。它們只能在二進制數的範圍內盡可能接近結果。浮點數以其固有結構表示,類似於科學的計數方法,由三部分組成,如12340 = 1.234 * 10 4。

符號位:1bit 0是正數;1bit0是負數。

數值範圍:8位指數部分

數值精度:23位尾數部分

二進制的每四位可以對應壹個16的二進制,所以四位和四位的直接轉換就可以了。

?比如001110110111110轉換成3 D 6 E,也就是3D6E。

同樣,將十六進制轉換為二進制意味著將每壹位轉換為四個二進制01。

本章介紹了壹些常見的二進制變換,其實最重要的是補數,它通過將減法轉換為加法來簡化計算機的實現,而浮點數則通過犧牲數字的精度來擴大取值範圍,包括表示更大的數字如1.5 10 20和更小的小數. 1.5 * 10。

電壓輸入in,P斷開N聯通,out和ov互練。輸出為0v。

in無電壓時,P導通,N斷開,out接2.9V,輸出2.9v。

電路in的輸入和電路out的輸出總是相反的。

如果A、B兩端都有電壓,上面的P斷開,下面的0v接通,那麽C輸出就是0V。

A、B無電壓時,上2.9V接C,C輸出2.9v。

?Or門是nor門的反義詞,或者or門的反義詞是nor門。

?電路是或非門的輸出結構,加上前面的非門,結果反過來。

如果任何壹個左邊的部分。AB為0,上面兩個P型之間會有連接,導致C輸出為1,經過NOT門後會為0。

當A和B都是1時,上面兩條P線都是端口,此時C輸出為0,經過NOT門後為1。

至此,二元運算的AND/NOR已經可以用電路實現了。作為最基本的元件,與/或非和異或經過復雜組合後可以形成更復雜的邏輯。下面用符號抽象出這些門,其中與非門和或非門是與門和或門的否定。

決策單元是壹個不能存儲數據的電路組合,它的輸出依賴於當前的輸入。輸出數據不能存儲在決策單元中。

簡單來說,決策單元從實時輸入產生實時輸出,不保存結果。

所有輸出結果只有壹個是1,其他都是零。這些結構用於檢測和匹配不同的輸入模式,因為它可以通過輸出結果判斷輸入的來源。

與門前面的小圓圈表示輸入的反相。AB的每個組合對應壹個輸出行。這是壹種判斷邏輯。

這是壹拆多的結合。

ABCD壹直是輸入的數據來源。有電壓,通過兩行S的組合,決定用ABCD把哪個輸入傳遞給輸出。

這是壹個多合壹的組合

累加器用於二進制加法。二進制加法實際上是三個輸入產生兩個輸出的結果。

比如A = 1011加上B = 111,其實就是兩個數的每壹位的逐漸相加。但是這裏加兩位可能會產生進位,所以應該改成A和B的每壹位和前壹位。補充。結果還包括當前位的總和以及壹個進位。carryi表示i-1位產生的進位,carryi+1表示I位產生的進位,si是當前位相加的結果。真值表如下。

門電路如下,大家可以看到。兩個1比特相加需要這麽多電路,然後產生的傳輸ci+1將作為下壹個比特相加的輸入進位。

談1位的多個全加器組合,形成大部分加法器。

最右邊的0是第壹次加法的進位,然後生成的c1是第二次加法的進位。S0、S1、S2和S3是每次相加的結果,最終輸出的二進制格式為C4S3S2S1S0。

意思是任何邏輯功能都可以通過“與”或“非”門的各種組合來實現,類似於道家的三事。

存儲單元用於存儲電路中的數據,並在使用時輸出。

可以存儲1位信息,S和R是兩個輸入端ab和輸出端。這個器件規定RS不能同時為零。而且這個電路在任何時候都是和A,B壹樣的。

這個器件的規則是,當S和R都為0或1時,a b的狀態是穩定的。

當r是從1->;0,a-& gt;0b-& gt;1

當s是從1->;0是,a->;1,b->0.

且r或s是從0->;在1,A和B的狀態穩定。

所以只有r或s是從1->;0,ab的狀態會改變,否則ab保持不變,說明這個設備提供了保存狀態和改變狀態的功能,這是壹個內存。

鎖存器前面加了兩個控件,we表示可寫,d為輸入數據,當we為0時,SR為1。輸出不變,僅當W0->;1,不考慮

無論D是0還是1。兩者都導致其中壹個RS從1->;0,輸出之壹將變成1。

比如We是1,如果D是0,R就是1->;0,b變成1a,0 We變成1。如果D是1,S將是1->;0,那麽a變成1b變成0。

所以當we為1時,A的結果與D同步,也就是說D的數據保存在A中,當We為0時,A的數據不會改變。

此時可以通過數據D和讀寫控制W改變這個鎖存器,保存數據。

通過連接多個門控D鎖存器並用相同的WE信號控制它們來形成多位寄存器。

下圖是壹個4位寄存器,D是數據源Q是輸出存儲結果,我們統壹控制四位鎖存器同時寫數據。

內存由大量的存儲空間組成,每個存儲空間可以容納壹個數據。並且每個數據可以由8位或4位或16位鎖存器組成。這裏每個存儲空間的標識符叫做地址,每個數據包含的鎖存器數量(即可以存儲的位數)叫做尋址能力。地址的總數稱為尋址空間。

以手機短信為例。壹部手機短信最多2000條,2000條稱為尋址空間。每條短信可以包含100個字,即尋址能力為100。

例如,壹臺計算機有16MB內存,這意味著系統有16M個地址(尋址空間為16M),每個地址的尋址容量為1字節(尋址容量為8位)。

在上面,決策單元不保存數據,當前輸出取決於當前輸入。存儲單元是錯誤報告數據,可以永久使用。時序電路是決策單元和存儲單元的組合,既可以存儲數據,也可以存儲數據。

時序電路主要用於實現有限狀態機。所謂有線狀態機,就是他有幾個固定的狀態,然後固定輸入輸出。他會在這些狀態之間切換,自己輸入不同的狀態。每個狀態將根據當前狀態和當前輸入跳轉到下壹個狀態。比如紅綠燈。輸入時間改變紅燈會跳到綠燈,綠燈會根據當前紅燈狀態跳到黃燈。

有限狀態機代表邏輯上連續的執行過程。它由固定頻率的本地電路觸發。

本章主要講最基本的與非門器件,然後這些器件組成了計算機中最重要的決策單元和存儲單元。這兩部分是電腦的核心部件。這裏我們發現,計算機其實是把壹些器件封裝組合起來,然後形成控制邏輯,然後慢慢進化出程序和數據。

目前常用的存儲器是2×28×8-8位模式,即尋址空間為2×28(2×28存儲單元),尋址容量為8(每個單元容量為8位)。

要訪問內存,需要獲取壹個存儲單元的地址並放入cpu的內存地址寄存器(MAR)中,然後發送讀寫信號將內存與CPU的數據寄存器連接起來,數據就會從內存進入數據寄存器(MDR)。

ALU是壹種算術邏輯運算單元,可以進行加、減和與或非運算。ALU能處理的數據長度是字長,目前通常是32位和64位字長。

通常ALU配有少量的內存,用來存儲計算的中間結果。因為從內存讀取太慢,所以這些內存叫做寄存器,字長和ALU總是

輸入輸出讀寫比較慢,所以通常會分配壹個緩存,CPU和緩存交換數據。

控制單元指揮其他單元壹起工作。兩個最重要的寄存器是指令寄存器,用於存儲執行的指令、程序員和下壹條要執行的指令的地址。控制單元包括有限狀態機,用於控制系統中的活動。

指令循環是指指令的執行步驟,指令在計算機控制單元的控制下逐步執行。每條指令分為六步,稱為節拍,壹條指令的完整執行過程稱為指令周期。

取指令意味著將存儲器中的指令加載到控制單元的指令寄存器IR中。PC是要執行的下壹條指令的地址。具體步驟如下。

由此可見,CPU是通過MAR和MDR寄存器來處理內存的。MAR保存壹個存儲單元的地址,MDR從該單元獲取數據。IR寄存器總是保存要執行的指令的內容,IP總是指向要執行的下壹條指令的地址。

這裏的每壹步都需要壹個或多個時鐘周期。

解碼操作是分析和檢查指令的類型,並確定相應的操作。這裏,第三章中的解碼器邏輯器件用於確定指令對應的電路。

如果指令執行時有地址操作,則在此節拍內執行,即獲取指令操作數中的完整地址。

要讀取操作數地址對應的實際內容,還需要使用MAR加載上壹步計算的地址,然後通過MDR讀取地址上的數據。

指令已被識別,操作數的內容已被獲取。這壹步是執行指令。

這是指令周期的最後壹拍,前壹拍的結果將被寫入目標寄存器。節拍完成後,控制單元將從取指令開始再次執行下壹個指令周期(因為PC寄存器已經指向下壹條要執行的指令的地址)。下面是有限狀態機在不同狀態下的順序切換。

如果我們要改變指令的執行順序,比如跳轉到壹個我們希望他執行的指令,比如循環的時候需要向前跳轉。我們應該在當前指令的取指令節拍之後,下壹條指令的取指令節拍執行之前,把Pc執行的指令的地址改為我們要執行的指令的地址。這需要使用控制指令,即以上述執行節拍執行,並主動修改pc寄存器的內容。然後,這個指令執行後,PC會把我們想要的東西拿出來。

因為CPU是壹個指令並且壹個指令總是被執行的,比如sum,因為指令是按照CPU的時鐘周期運行的。意思是時鐘不斷發送信號提醒指令執行不同的節拍,然後繼續執行指令。因此,如果要停止指令執行,就必須停止時鐘。即運行控制位的輸出為0,所以妳停止時鐘。

本章介紹馮·諾依曼的模型。現在的電腦都是用這種模式設計組裝的。對於CPU來說,不同的硬件需要將數據讀入寄存器,CPU是從寄存器中讀取,因為CPU的頻率遠高於內存和io單元。

接下來,指令執行有六個階段。它是壹個有限狀態機。按順序連續執行六拍。這裏,使用前壹章中的解碼器設備。

Lc-3是這種計算機的簡化版本。用來了解整個電腦的完整結構。

?尋址空間為2 16(數據塊),尋址能力為16位(數據塊大小)。我們把這種16位的尋址能力稱為“字”。

?內存和頻率都比CPU低很多。CPU直接從內存讀取數據會浪費很多時鐘周期。所以CPU裏有很多寄存器,實際上是告訴內存的。它們可以像內存的原理壹樣存儲數據,只有壹個意味著它們可以獨立尋址。R0...R7表示八個寄存器。

?指令集包括操作碼(做什麽)+操作數(操作誰)。實際上,操作數還包括尋址方式,即如何定位操作數的具體位置。該指令意味著將R0和R2的值相加,結果保存在R1中。

?操作碼主要分為三類:操作、數據移動和控制。操作指令負責處理信息(加、減、乘、除、反)。數據移動指令負責在內核和寄存器之間以及內存/寄存器和io設備之間傳輸信息。控件負責更改指令的執行順序,如指令跳轉。

?所有指令如下:DR是目的寄存器,目的寄存器sr是源寄存器。通常,指令是將SR的數據轉移到DR。

?是指定位操作數位置的方式。操作數通常位於三個地方,內存、寄存器或數據本身。操作數的具體地址由尋址方式和操作數的匹配決定。有五種尋址方式,即立即數、寄存器、相對尋址、間接尋址和基址偏移。

?lc-3中有三個壹位寄存器N Z P。在任壹寄存器有數據寫入時,根據結果,如果寫入結果為負,則N為1。如果結果為0,則Z為1,如果寫為正,則P為1。這三個寄存器可以為控制指令提供信息,以便進行條件轉移。

源操作數按位反轉,目標操作數置於寄存器尋址模式,即源操作數和目標操作數都是寄存器。

R5寄存器的值按位反轉,結果放入R3寄存器。

加法是兩個操作數的補碼相加,是兩個操作數的按位and。此指令需要兩個源操作數和壹個目標操作數。這裏的壹個源操作數處於寄存器尋址模式,另壹個可以處於立即尋址模式或寄存器模式。

立即數是把值直接放在指令中作為源操作數。比如MOV AL,0FH將8位立即數0FH傳輸到AL寄存器,0FH是立即數。

下圖是添加R5和R4的結果。它保存在R1中。

移動指令是在寄存器和存儲器/寄存器和Io之間傳輸數據的指令。數據從內存到寄存器叫加載,從寄存器到內存叫存儲。

如果位[9-11]是DR,則意味著將地址生成位中的數據加載到修改後的DR中。

如果位[9-11]是SR,則表示該SR的數據保存在地址生成位的存儲器中。

?LD加載指令ST存儲指令

?在這種模式下,位[0-8]表示相對位移。與當前pc計數器的位移相比,(如上所述,pc計數器存儲下壹條要執行的指令的地址)。pc相對尋址的局限性在於偏移量是針對PC的地址,所以偏移量的範圍是有限的。

如下圖,此時pc的值是x4019,與x4019偏移了x1AF,LD和LD是加載指令,意思是將(x4019+x1AF)地址中的數據保存到R2。

?LDI加載指令STI存儲指令

?在間接尋址中,地址生成位存儲壹個偏移地址A,A和PC相加得到的值就是另壹個地址B,地址B的值就是最終要操作的內存地址。間接尋址可以使指令在更大的範圍內跳轉。這是壹種二次尋址。X.

?下圖說明了pc的當前值是x4A1C。那麽偏移地址A =(x4a 1C+x 1CC)= x4be 8。下圖是錯的。應該是X4Be8的內容是x2110,然後改了X21658。

總結壹下就是先做壹個pc相對尋址,然後把獲得的地址裏的值給R3。

?LDR加載指令串存儲指令

?該模式首先指定壹個基址寄存器,然後指定壹個偏移地址。最後壹個操作數地址由基址寄存器的值+偏移地址組成。

?下圖說明了操作數地址= R2+x 1d = x 2345+x 1d = x2362,x 2362地址中的內容正在加載到R1中。

?LEA將立即數添加到pc計數器地址,並將其保存在另壹個寄存器中。該命令用於初始化寄存器。

?馬上數數。這個詞的命名含義是指操作數在指令中,可以直接讀取(在text -3中)。它是立即獲得的。上圖中,在指令讀取階段,pc加1成為x4019,x4019-3 =x4016..

?控制指令可以改變指令的執行順序。不用說,它必須修改pc計數器的值。而且控制指令必須按照條件判斷跳轉。因此,上面提到的NZP的三個壹位寄存器也被使用。

?lc-3中有五個控制指令,條件跳轉,無條件跳轉,子程序(函數)。陷阱,中斷返回。

?n負表示負,Z零表示零,P正表示正。

?如果位[9-11]中的值與NZP三位寄存器匹配,將觸發此條件。pc計數器會計算pc counter +pc offset的值,即指令會跳轉。

在指令周期的執行節拍,處理器檢測位[9-11]的條件碼與NZP的三位寄存器之間的匹配,如果匹配,修改pc計數器的值以完成指令跳轉。

上圖中,pc = x4028修改後的PC = x 4028+x0d 9 = x 4101。

如果壹條指令的位[9-11]設置為1,肯定會觸發跳轉,這種跳轉指令稱為無條件跳轉指令。

條件跳轉指令的問題在於跳轉是基於pc偏移值的。壹***8位,跳轉範圍有限。但是,如果要在內存中跳轉更大範圍的指令,就需要使用jump。

跳轉指令。使用源操作數的內容作為跳轉的地址,如下所示。指示跳轉到寄存器R2內容的地址。

陷阱指令類似於跳轉指令。它們都改變pc計數器的內容,並跳轉到新的指令執行地址。但是跳轉在這個程序中跳轉,陷阱在線性操作系統的控制之內,也就是跳轉到操作系統的壹個指令地址。這相當於打開了調用系統服務api。執行完成後,pc計數器會恢復到原程序中trap指令的下壹個地址,然後執行這個程序的邏輯。

回顧壹下上面的lc-3結構,下面介紹壹下。

圖中最粗最黑的lc-3的全局總線有16位,也就是說不同結構之間壹次最多可以傳輸16位的信息。同時,總線只允許壹個數據發送方發送數據。

訪問存儲器的步驟是:先把要訪問的存儲器的地址加載到MAR寄存器中,然後看是讀指令還是寫指令。如果是LOAD,則發送RD信號,將存儲器中的數據發送到MDR寄存器中;如果是store,數據將被放入MDR寄存器,然後WE信號將被發送以將MDR寄存器中的數據保存到MAR寄存器中指定的地址。(感覺這就是硬件的執行邏輯。它是設備之間電路的通信。)

ALU是壹個算術邏輯單元,它執行基本運算。它接受兩個輸入,壹個是寄存器,另壹個是寄存器或立即數。ALU計算完成後,結果將保存在壹個通用寄存器中,三個條件碼寄存器NPZ將同時改變。

?pc計數器記錄下壹個要執行的操作。在指令周期結束時,它將自己遞增以指向下壹條指令的地址。但同時,詢問引入的控制指令也會改變pc計數器的值。所以有了PCMUX,PCMUX就是壹個三選壹的復用器(多路輸入數據,1輸出數據),PCMUX的輸入包括PC+1。

?MARMUX用於在執行加載、存儲、陷阱指令期間選擇適當的地址輸入。它會根據指令的操作碼從他的幾個輸入地址中選擇合適的地址。我的理解是他處理了各種尋址方式的結果。

?IR寄存器保存當前要執行的指令。當壹條指令被執行時,它首先被從內存中取出放入MDR,然後被傳送到IR。

?具體來說,直接記錄了這條指令的開頭是0110,對應的指令格式如下,意思是取出baseR +offset6地址的數據,保存在DR =M[BaseR+offset6]中。

?本章主要分解LC-3計算機的基本結構,包括存儲器、寄存器、指令集、尋址方式和條件碼...雖然寄存器有幾種類型,但它們本質上是用於訪問數據的存儲元素,只是存儲不同的信息。指令分為操作指令(用於計算數據)、數據移動指令(用於移動數據)和控制指令(用於控制指令跳轉),配合三位寄存器NPZ。

?那麽壹個指令執行周期就有六拍。每個節拍需要壹個或多個恒定的周期。並且計算書按照時鐘周期的信號頻率保持運行。只要理解並記住不同的節拍是做什麽的。這是規則。

?至於指令,其實操作碼是主要的。在這壹集裏,有些操作碼根據不同的尋址方式有幾種變化,其實很好理解。

?尋址方式是不同程度的獲取寄存器中不同位置的數據,這個也可以直接記錄。這並不難。

?對於寄存器來說,總結就是MAR記錄內存的地址MDR保存內存的值。PC指向下壹個指令地址IR,保存要執行的指令。

ZNP記錄寄存器數據變化的結果,用於邏輯判斷。

匯編語言是表達機器指令的另壹種方式。機器不懂匯編語言。匯編語言最終會被翻譯成機器指令。然而,匯編語言和機器指令的格式有些相似。每種匯編語言通常對應壹條機器指令。匯編語言需要通過匯編器匯編成機器語言。

標簽操作碼操作數;評論

?這與前面的機器指令相同。操作碼決定做什麽。操作數決定誰來做。這裏也有不同的尋址方式。

?Ru加R1,R3,#-1加R3和-1。結果存儲在R1中,這是壹種立即尋址方法。

?指向壹個存儲單元的符號名。可以直接在內存中使用。它用於跳轉或加載/存儲。事實上,它是壹個地址的簡單表示。下面的brp再次跳轉到標記的地方。

?用於標註;分開了,電腦就認不出來了。是給人看的。

?偽操作不會被執行,是程序員傳遞給匯編器的信息。用於指導裝配工的裝配操作。當匯編器看到這些信息時,它將丟棄這些信息。

?告訴匯編程序將lc-3程序放在內存中的什麽位置,如. origx3050所示。