日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《自己动手写CPU》学习记录(1)——第1章

發布時間:2023/12/16 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《自己动手写CPU》学习记录(1)——第1章 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.




引言

此專欄的文章記錄自己學習《自己動手寫CPU》的過程。算是一個學習筆記,里面也會夾雜個人的思考以及代碼編寫。希望自己可以像作者一樣,堅持到最后。加油~~

本篇學習MIPS32處理器的基本架構。

致謝

感謝書籍《自己動手寫CPU》及其作者雷思磊。一并感謝開源精神。


目錄

引言

致謝

處理器與MIPS

1、計算機的簡單模型

2、架構與指令集

3、MIPS的ISA演變

4、MIPS32 Release 1 指令集架構

1、數據類型

2、寄存器

3、字節次序

4、指令格式

5、指令集

6、尋址方式

7、協處理器CP0

8、異常

硬件描述語言 Verilog



處理器與MIPS

1、計算機的簡單模型

?計算機主要由三大組成部分構成:處理器、輸入輸出、存儲器。

?匯編指令將助記符進行譯碼,變為二進制數據,供計算機識別、執行。

高級語言先通過編譯變為匯編語言,然后通過匯編指令將指令翻譯為二進制編碼數據。

2、架構與指令集

指令集架構(ISA):包括了一套指令集和一些寄存器。面向ISA編程的最大優點就是,程序的執行無關處理器類型,無關硬件。ISA本身是一個抽象物,不涉及任何實現的硬件與環境。

微架構:是ISA的具體實現。

同樣的ISA,不同的微架構則會帶來不同的性能。

根據不同的ISA,可將計算機分為兩類:復雜指令集計算機(CISC)、精簡指令集計算機(RISC)。二者的主要區別在于:

CISC指令編碼長度不一致;

RISC指令編碼長度一致且固定;

ISA種類:

x86:屬CISC范疇

ARM:Acorn RISC Machine ,屬RISC范疇,目前ARM公司僅作CPU內核設計,不做具體的芯片制造和生產。其產品側重于低功耗、低成本,主要面向嵌入式應用。

SPARC:Scalable Processor ARChitecture ,可擴展處理器架構。屬RISC范疇。

POWER:Performance Optimization With Enhanced RISC ,屬RISC范疇。IBM公司的產品。

MIPS:Microprocessor without Interlocked Piped Stages,無內鎖流水線處理器。屬RISC范疇。其設計理念:使用簡單的指令,結合優秀的編譯器,采用流水線執行指令的硬件,就可以用更少的晶圓面積生產更快的處理器。龍芯處理器采用的就是此架構。

3、MIPS的ISA演變

4、MIPS32 Release 1 指令集架構

該參考數目的處理器設計就是遵循 MIPS32 Release 1 架構。?

1、數據類型

  • 位(b):長度為 1 bit;
  • 字節(Byte):長度為8 bit;
  • 半字(HalfWord):長度16 bit;
  • 字(Word):長度為 32 bit;
  • 雙字(Double Word):長度為 64bit;
  • 另:32位單精度浮點數,64位雙精度浮點數;

2、寄存器

MIPS32的指令中處了 加載/存儲?指令外,其他指令都是用寄存器或者立即數作為操作數。因為寄存器的存取可以在一個時鐘周期內完成。

MIPS32中的寄存器類別:通用寄存器、特殊寄存器。

1、通用寄存器

MIPS32架構定義了 3232 位寬的寄存器,用 $0 ~ $31表示。$0 一般用作常量 0;

實際使用中,寄存器一般遵循如下的約定:

2、特殊寄存器

MIPS32中的特殊寄存器有3個:PC(程序計數器)、HI(乘除結果高位寄存器)、LO(乘除結果地位寄存器)。乘法運算時,HI保存乘法結果的高32位,LO保存低32位。除法運算時,HI存儲余數,LO存儲商。?

3、字節次序

?數據在存儲器中的存取都是以字節為單位的,所以當存取的數據的位寬多于1個字節時,就需要明確數據的大小端模式。

大端模式:MSB,數據高位存儲于低地址;

小端模式: LSB,數據低位保存在低地址;

參考書中MIPS32的實現是大端模式。

示例:

4、指令格式

MIPS32的架構中,指令位寬都是32。

?圖中 op 為指令碼;func 為功能碼;

5、指令集

1、邏輯操作指令

包含8條指令:and 、andi 、or 、ori 、xor 、xori 、nor 、lui

2、移位操作指令

包含6條指令:sll 、sllv 、sra 、srav 、srl 、srlv

3、移動操作指令

?包含6條指令:movn、movz、mfhi、mthi、mflo、mtlo

4、算術操作指令

包含21條指令:add、addi、addiu、addu、sub、subu、clo、clz、slt、slti、sltiu、sltu、mul、mult、multu、madd、maddu、msub、msubu、div、divu

5、轉移指令

包含14條指令:jr 、jalr 、j、?jal、b、bal、beq、bgez、bgezal、bgtz、blez、bltz、bltzal、bne

6、加載存儲指令

包含14條指令:lb、lbu、lh、lhu、ll、lw、lwl、lwr、sb、sc、sh、sw、swl、swr

7、協處理器訪問指令

包含2條指令:mtc0、mfc0

8、異常相關指令

包含14條指令,其中12條自陷指令:teq、tge、tgeu、tlt、tltu、tne、teqi、tgei、tgeiu、tlti、tltiu、tnei;系統調用指令:syscall、異常返回指令:eret

9、其余指令

包含4條指令:nop、ssnop、sync、pref

6、尋址方式

MIPS32架構的尋址方式:寄存器尋址、立即數尋址、寄存器相對尋址、PC相對尋址。

1、寄存器相對尋址

?2、PC相對尋址

7、協處理器CP0

MIPS32架構提供了最多 4 個協處理器,分別是 CP0 ~ CP3。其中CP0用作系統控制,CP1、CP3作浮點處理單元。CP2用于特定實現。除CP0以外的協處理器都是可選的。

協處理器CP0,主要的作用:

配置CPU工作狀態;

高速緩存控制;

異常控制;

存儲單元管理;

8、異常

硬件描述語言 Verilog

此部分本人比較了解,就不再記錄。建議初學者查看我的下面的專欄,快速了解Verilog HDL語法:

?Verilog HDL 語法整理https://blog.csdn.net/qq_43045275/category_11341294.html?spm=1001.2014.3001.5482

總結

以上是生活随笔為你收集整理的《自己动手写CPU》学习记录(1)——第1章的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。