校驗碼-體系結構-指令-流水線

YhFei發表於2024-03-30
  • 校驗碼

  • 碼距:就單個編碼A:00而言,其碼距為1,因為其只需要改變一位就變成另一個編碼。在兩個編碼中,從A碼到B碼轉換所需要改變的位數稱為碼距,如A:00要轉換為B:11,碼距為2。一般來說,碼距越大,越利於糾錯和檢錯。

  • 奇偶校驗碼:在編碼中增加1位校驗位來使編碼中1的個數為奇數(奇校驗)或者偶數(偶校驗),從而使碼距變為2。例如:

    奇校驗:編碼中,含有奇數個1,傳送給接收方,接收方收到後,會計算收到的編碼有多少個1,如果是奇數個。則無誤,是偶數個,則有誤。

    偶校驗:同理,只是編碼中有偶數個1,由上述,奇偶校驗只能檢1位錯,並且無法糾錯。例如:

    101110,如果用奇校驗:需要+1使得101110中的1變為奇數個,填完完之後變為1011101。同理,

    如果想要偶校驗,則需要加0,因為原編碼中1的個數已經為偶數個,新增完之後變為1011100。

  • CRC只能檢錯,不能糾錯。使用CRC編碼,需要先約定一個生成多項式G(x)。生成多項式的最高位和最低位必須是1.假設原始資訊有m位,則對應多項式M(x)。生成校驗碼思想就是在原始資訊位後追加若干校驗位,使得追加的資訊能被G(x)整除。接收方接收到帶校驗位的資訊,然後用G(x)整除。餘數為0,則沒有錯誤;反之則發生錯誤

  • 海明碼:本質也是利用奇偶性來檢錯和糾錯的檢驗方法,構成方法是在資料位之間的確定位置上插入k個校驗位,透過擴大碼距實現檢錯和糾錯
    設資料位是n位,校驗碼是k位,則n和k必須滿足一下關係:2^k-1>=n+k

    例題:求資訊1011的海明碼

    1. 校驗位的位數和具體的資料位的位數之間的關係
      所有位都有編號,從最低位開始編號,從1開始遞增,校驗位處於2的n次方中,既處於第1,2,4,8,16,32……位上,其餘位才能填充真正的資料位,若資訊資料為1011,則可知,第1,2,4位為校驗碼,第3,5,6,7位為資料位,用來從低位開始存放1011,得到資訊位和校驗位分佈如下:
    2. 計算校驗碼
      將所有資訊位的編號都拆分成二進位制表示,
      7=2^2 + 2^1 + 2^0, 6=2^2 + 2^1, 5=2^2 + 2^0, 3=2^1 + 2^0
      綜上,第7位資料位,7=4+2+1,表示7是由第4位校驗碼(r2)和第2位校驗碼(r1)和第1位校驗碼(r0)共同校驗,同理,第6位資料位,6=4+2,第5位資料,5=4+1,第3位資料,3=2+1,由上可知,剩下的2的n次方位都是校驗位,可知,第4位校驗位校驗第7、6、5三位資料位,因此,第4位校驗位r2等於這三位資料的值異或(同0非1),剩下的也一樣,由此得出校驗位的數值:
      r2 = I4 + I3 + I2;
      r1 = I4 + I3 + I1;
      r0 = I4 + I2 + I1;
      得出校驗位後,可知最終要傳送的海明校驗碼為1010101。
    3. 檢錯和糾錯原理
    • 例題:

  • 體系結構的分類

  • 處理機的數量進行分類:單處理系統(一個處理單元和其他裝置整合)、並行處理系統(兩個以上的處理機互聯)、分散式處理系統(物理上遠距離且松耦合的多計算機系統)

  • Flynn分類法:分類有兩個因素,即指令流和資料流,指令流由控制部分處理,每一個控制部分處理一條指令流,多指令流就有多個控制部分;資料流由處理器來處理,每一個處理器處理一條資料流。多資料流就有多個處理器;至於主存模組,是用來儲存的,儲存指令流或者資料流,因此,無論是多指令流還是多資料流,都需要多個主存模組來儲存,對於主存模組,指令和資料都一樣。

  • 依據計算機特性,是由指令來控制資料的傳輸,因此,一條指令可以控制一條或多條資料流,但一條資料流不能被多條指令控制,否則會出錯,就如同上級命令太多還互相沖突,不知道該執行哪個,因此多指令單資料MISD不可能

  • 指令系統

  • 計算機指令的組成:一條指令由操作碼和運算元兩部分組成,操作碼決定要完成的操作運算元指參加運算的資料及其所在的單元地址。在計算機中,操作要求和運算元地址都由二進位制數碼錶示,分別稱為操作碼和地址碼,整條指令以二進位制編碼的形式存放在儲存器中。

  • 計算機指令執行過程:取指令——分析指令——執行指令三個步驟,首先將程式計數器PC中的指令地址取出,送入地址匯流排,CPU依據指令地址去記憶體中取出指令內容存入指令暫存器IR;而後由指令譯碼器進行分析,分析指令操作碼;最後執行指令,取出指令執行所需的源運算元。

  • 指令定址方式
    順序定址方式:當執行一段程式時,是一條指令接著一條指令的順序執行。
    跳躍定址方式:當下一條指令的地址碼不是由程式計數器給出,而是由本條指令直接給出。程式跳躍後,按新的指令地址開始順序執行。因此,程式計數器的內容也必須相應改變,以便及時跟蹤新的指令地址。

  • 指令運算元的定址方式
    立即定址方式:指令的地址碼欄位指出的不是地址,而是運算元本身。
    直接定址方式:在指令的地址欄位中直接指出運算元在主存中的地址。
    間接定址方式:指令地址碼欄位所指向的儲存單元中儲存的是運算元的地址。
    暫存器定址方式:指令中的地址碼是暫存器的編號。
    基址定址方式:將基址暫存器的內容加上指令中的形式地址而形成運算元的有效地址,其優點是可以擴大定址能力。
    變址定址方式:變址定址方式計算有效地址的方法與基址定址方式很相似,它是將變址暫存器的內容加上指令中的形式地址而形成運算元的有效地址。

  • CISC是複雜指令系統,相容性強,指令繁多,長度可變,由微程式實現。

  • RISC是精簡指令系統,指令少,使用頻率接近,主要依靠硬體實現(通用暫存器、硬佈線邏輯控制)。

  • 指令流水線原理:將指令分成不同段,每段由不同的部分去處理,因此可以產生疊加的效果,所有的部件去處理指令的不同段。

  • RISC中的流水線技術:

    1. 超流水線技術。它透過細化流水、增加級數和提高主頻,使得在每個機器週期內能完成一個甚至兩個浮點數操作。其實質是以時間換取空間
    2. 超標量技術。它透過內裝多條流水線來同時執行多個處理,其時脈頻率雖然與一般流水接近,卻有更小的CPI。其實質是以空間換取時間
    3. 超長指令字技術(VLIW)。VLIW和超標量都是20世紀80年代出現的概念,其共同點是要同時執行多條指令,其不同在於超標量依靠硬體來實現並行處理的排程,VLIM則充分發揮軟體的作用,而使硬體簡化,效能提高
  • 流水線時間計算
    流水線週期:指令分成不同執行段,其中執行時間最長的段為流水線週期。
    流水線執行時間:1條指令總執行時間+(總指令條數-1)* 流水線週期。
    流水線吞吐率計算:吞吐率既單位時間內執行的指令條數。公式:指令條數/流水線執行時間
    流水線的加速比計算:加速比既使用流水線後的效率提升度,既比不使用流水線快了多少倍,越高表明流水線效率越高。公式:不使用流水線執行時間/使用流水線執行時間


相關文章