計算機組成與設計---硬體/軟體接口---指令: 計算機的語言

2021-12-28 Fp技術筆記

名字示例注釋32個寄存器$ s0~ $ s7, $ t0~ $ t9, $ zero, $ a0~$ a3, $ v0 ~ $ v1, $ gp, $ fp, $ sp, $ra, $at寄存器用於數據的快速取.在MIPS中,只能對存放在寄存器中的數據執行算術操作,寄存器$ zero的值恆為0,寄存器$at被彙編器保留,用於處理大的常數2^30個存儲器字Memory[0], Memory[4], …Memory[4294967292]存儲器只能通過數據傳輸指令訪問。MIPS使用字節編址,所以連續的字地址相差4。存儲器用於保存數據結構、數組和溢出的寄存器

硬體設計的三原則:

2.1計算機硬體的操作

加法和減法,都是三操作數

注釋用#開頭

所有的算術運算都是這樣的形式

設計原則一:簡單源於規整

2.2 計算機硬體的操作數

寄存器的訪問速度比主存快得多

對主存儲器數據的操作要用

取數指令lw (load word)

存數指令sw (store word)。

編譯器必須儘量使用寄存器訪問變量

2.2.2常數或立即數操作數2.3有符號數和無符號數

二進位無符號整數



範圍: 0 to +2n – 1
二進位補碼表示有符號整數

2n – 1 to +2n – 1 – 1

2.4 計算機中指令的表示

指令系統對指令系統的要求:

完備性: 指令齊全,編程方便

高效性:佔內存少,運行省時

規整性:指令與運算規則統一

兼容性:新舊機指令軟體兼容

MIPS欄位:

- 指令欄位

R-型(寄存器)操作舉例

add $t0, $s1, $s2


I型(立即數指令)

立即數的算術和讀數/存數指令

地址:偏移加上rs中的基址

設計原則3:優秀的設計需要適宜的折中方案

2.5 邏輯操作

對位進行處理的指令

用於對字中的若干 「位」

打包和拆包的操作

移位操作

shamt: 移多少位

邏輯左移sll

邏輯右移srl

「與」操作

and $t0, $t1, $t2

「或」操作


按位「取反」操作

用於改變字中的一些位

MIPS 3-操作數指令NOR

2.6 決策指令

如果條件為真,跳轉到被標籤的指令執行

beq rs, rt, L1

bne rs, rt, L1

if (rs != rt)轉到標籤為L1的指令執行;

j L1

2.6.1循環


bne $s3, $s4, Else
add $s0, $s1, $s2
j Exit
Else: sub $s0, $s1, $s2
Exit: …

2.6. 2 case/switch 語句

while (save[i] == k)
i += 1;

Loop: sll $t1, $s3, 2
add $t1, $t1, $s6
lw $t0, 0($t1)
bne $t0, $s5, Exit
addi $s3, $s3, 1
j Loop
Exit: …

2.7計算機硬體對過程的支持2.7.1 使用更多的寄存器

寄存器的使用

$a0 – $a3: 傳遞參數 (reg’s 4 – 7)

$v0, $v1: 返回結果值 (reg’s 2 and 3)

$t0 – $t9: 臨時寄存器

$s0 – $s7: 保存參數

$gp: 靜態數據的全局指針寄存器(reg 28)

$sp: 棧指針寄存器stack pointer (reg 29)

$fp: 幀指針寄存器(frame pointer) , 保存過程幀的第一個字 (reg 30)

$ra:返回地址寄存器 return address (reg 31)

過程調用指令

過程調用:跳轉和連結
jal ProcedureLabel

下一條指令的地址在寄存器$ra中

跳轉到目標地址

過程返回:寄存器跳轉 jump register
jr $ra

拷貝$ra到程序計數器

也被用於運算後跳轉

2.8 MIPS中32位立即數和尋址2.8.1 32位立即數

lui rt, constant

取立即數並放到高16位

註:Ori立即數或,$ s0與常數2304「或」,結果放在$s0形成一個32位的常數

2.8.2分支和跳轉中的尋址

分支指令說明

操作碼,兩個寄存器,兩個地址

大多數跳轉目標離跳出的位置較近

向前或向後

PC相對尋址

目標地址 = PC + offset × 4

此時PC的增加量是4的倍數

跳轉(j和jal)的目標地址可以在代碼段的任何位置

指令除op外,指令其它欄位都是地址

直接跳轉到地址

Target address = PC31…28 : (address × 4)

2.8.3 MIPS尋址模式總結

2.9並行與指令:同步

處理器共享存儲器同一區域

P1 寫, P2 讀

(任務1寫的結果是任務2要讀取得值)

如果P1和P2不同步,將發生數據競爭

結果由訪問次序決定

依賴硬體提供同步指令

例如:lock和unlock指令,控制一個「互斥區」

原子讀/寫內存操作

在讀和寫之間,不再允許對該空間的其他操作

可以是單一的指令

例如寄存器和內存之間的原子交換

或者指令的原子配對

2.10 翻譯並執行程序

編譯器:編譯器將C程序轉換成一種機器能理解的符號形式的彙編語言程序

彙編器:

彙編器(或編譯器)把程序翻譯成機器語言提供從部分構建完整程序的信息

目標文件頭:描述目標文件其他部分的大小和位置

正文段:翻譯後的指令,包含機器語言代碼

靜態數據段:包含在程序生命周期內分配的數據

重定位信息:標記了一些程序加載進內存時依賴於絕對地址的指令和數據

符號表:全局定義和外部引用

調試信息:用於關聯源文件

        5.初始化寄存器(包括堆棧指針s p , 幀 指 針 sp, 幀指針sp,幀指針fp, 全局指針$gp )

        6.跳轉到啟動進程

動態連結庫:
調用時,只是連接或裝入庫文件

2.11 數組與指針2.11.1 用數組實現clear

2.11.2 用指針實現clear

2.11.3 比較兩個版本的clear

乘指令長度的操作變成移位操作

編譯器可以獲得和手動使用指針相同的效果

相關焦點

  • 計算機組成與設計:硬體/軟體接口(原書第5版) 電子書
    《計算機組成與設計:硬體/軟體接口(原書第5版)》,機械工業出版社出版,外文書名: Computer Organization and
  • 計算機的硬體組成和功能部件
    計算機的硬體組成和功能部件 不一樣的程序猿 發表於 2020-03-15 16:51:00 1、早期的馮.諾伊曼體系結構 存儲程序的思想奠定了現代計算機的基本結構
  • 軟體工程與計算機科學技術的區別(第十一期)
    三、主要課程(大學)程序設計基礎,數據結構,算法分析與設計,離散數學,計算機組成原理,作業系統,編譯原理,計算機網絡,資料庫原理與設計,軟體工程基礎,軟體需求工程與建模,軟體體系結構與設計模式,軟體項目管理和軟體測試技術的等。
  • 計算機內部架構,你真的懂嗎?
    1 計算機硬體首先我們先從計算機的硬體說起,從外觀上,計算機主要由以下三部分組成:輸入單元:包括鍵盤、滑鼠、觸控屏幕、掃描儀等主機單元:主機裡面主要包含了主板、晶片組、CPU和主存儲器等2 CPU的種類前面提到CPU包含了一些微指令集,所有軟體的運行到最後都要通過CPU內部的微指令來執行完成,而這些微指令集有兩種主要的設計理念,分別是精簡指令集(RISC)和複雜指令集(CISC)。
  • 計算機|基礎知識、計算機系統真題
    第一、二章  計算機基礎知識+計算機系統2018年1、高清晰度多媒體接口(    )。A.USB    B.VGAC.RJ-45   D.HDMI2、11011B-111B=(    )。()9、指令的執行過程分為3個步驟:取指令、分析指令和       10、雲計算是通過       ,進行存儲服務和資源獲取。11、8位二進位數值編碼中,十進位「-9」的原碼是       12、簡述機器語言、彙編語言、高級語言的特點。
  • 最新計算機故障診斷複習資料
    計算機系統硬體組成通常人們所說的計算機指的是辦公室或家用的微型計算機,簡稱「微機」,PC(personal computer)他是一種不需要人工直接幹預,能夠對各種信息進行處理和儲存的電子設備.世界上第一臺計算機ENIAC(Electronic Nomerical Intergrator and Computer)1946
  • 【常識小考點】計算機基礎知識
    4、神威·太湖之光:2016年運算速度最快,位居全球超級計算機500強第一名,天河二號位居第二名。計算機硬體從外觀上看,由主機和外部設備組成。具體由運算器、控制器、存儲器、輸入設備、輸出設備五個邏輯部件組成。1、中央處理器—CPU:由運算器和控制器組成,是計算機系統中必備的核心部件。CPU品質高低,直接決定計算機系統的檔次,CPU最重要指標是主頻和數據傳送的位數。主頻越高,運算速度越快。
  • 【公基常識小考點】計算機基礎知識
    天河一號中國首臺千萬億次超級計算機。4. 神威·太湖之光神威·太湖之光研製於2016 年, 運算速度最快, 位居全球超級計算機500 強第一名, 「天河二號」 位居第二名。二、計算機組成(一) 計算機硬體計算機硬體從外觀上看, 由主機和外部設備組成。
  • 大學專業|計算機與軟體工程有什麼區別與聯繫
    高考完填報志願時,如果對計算機相關專業感興趣,想要填報計算機專業,或許會發現,計算機專業旁邊常常還有一個軟體工程專業,那二者有什麼區別與聯繫呢?計算機專業在20世紀50年代(1956年左右)就開始設立,而軟體工程專業是2002年國家教育部新增的專業,在這之前,軟體工程實際上是計算機科學與技術專業的一個方向。兩個專業在一些課程上有所重合,都需要學習計算機科學的基礎課程,掌握計算機基礎知識包括程序設計語言、數據結構、計算機組成原理、計算機網絡、作業系統,這是兩者的聯繫。
  • 國產計算機基礎軟硬體行業深度報告:重構中國IT產業生態
    它的功能主要是解釋計算機指令以及處理計算機軟體中的數據,計算機系統中所有軟體層的操作,最終都將通過指令集映射為 CPU 的操作。中央處理器主要包括兩個部分,即控制器、運算器,其中還包括高速緩衝存儲器及實現它們之間聯繫的數據、控制的總線。
  • 2018圖靈獎Lecture:計算機體系結構的又一個黃金時代:特定領域的軟硬體協同設計,增強安全,開源指令集和晶片的敏捷開發
    Architecture: Domain-Specific Hardware/Software Co-Design, Enhanced Security, Open Instruction Sets, and Agile Chip Development。
  • 計算機程式語言到底是什麼?
    記住,程序就是一段告訴計算機要做什麼的指令序列(有順序的集合)。很明顯,我們需要用語言精確描述的指令集給計算機,它們才能夠理解或者明白。當然最理想,就是像科幻電影中計算機一樣,直接能夠聽懂我們的人類語言(計算機,告訴我們如果全速飛行,去Alphalpha還需要多長時間?)。不幸的是,很多頂尖聰明的計算機科學家付出巨大的努力,但讓計算機理解人類的語言還是遙遙無期的。
  • 【CCCF專欄】超導RSFQ計算機
    與半導體晶片設計方法類似,設計超導晶片時必須要使用集成電路設計軟體。2006~2012年,日本名古屋大學計算機系高木直史教授(2010年調入京都大學計算機系)主持的「高性能低功耗單磁通量子處理器」項目中,研究人員使用SKILL語言編程調用Cadence提供的各種接口實現了超導RSFQ大規模集成電路設計的電子自動化。
  • 《十分鐘速成課:計算機科學》初步理解計算機
    通過語言(思維)進行運算進而改變環境是人與生俱來(學習教育)的能力。輸入、儲存、計算、輸出。取指令、解碼、執行。彙編器讀取用「彙編語言」寫的程序,然後轉成「機器碼」,機器碼也就是二進位語言。好的語言就是用更抽象化(使編程更簡單,程序更強大)二進位語言。硬體只能識別二進位語言,而軟體可以有更便捷強大的其他語言,只要在輸入是轉化為二進位就行了。高級語言是脫離硬體的。
  • 單片機的程式語言:彙編語言、C語言、PL/M和BASIC語言
    單片機系統同樣也由硬體系統和軟體系統構成,因此涉及到程序的編寫問題。單片機的程式語言很多,目前常見的程式語言有4種,即彙編語言、C語言、PL/M和BASIC語言。下面我們來介紹一下吧:一、BASIC程式語言BASIC是一種高級語言,它的英文含義是「初學者通用符號指令代碼」,是在1965年5月,由美國科學家託馬斯•庫爾茲研製出來的。
  • 計算機基礎知識對程式設計師來說有多重要?「腳本小子」的由頭不是白來...
    其實volatile這個關鍵字雖然從表面來說只是一些程式語言中用於聲明變量的關鍵字,不少同學也能說出關於其中的一二; 但其實這個關鍵字的背後所涉及的原理就是《計算機組成原理》中的存儲器層次結構設計,了解存儲器的層次結構的同學明顯能夠比不了解的要理解得更深並回答得更好。
  • 計算機科學與技術和軟體工程專業,升學和就業到底有什麼區別?
    而軟體工程2002年以後教育部才設定的,是比較典型的工科專業,主要是編程和隨之而來的計算機組件交互的問題,是叢計算機科學中分出來的一個分支。可以這麼理解,計算機與科學這個專業涉及的面廣,硬體與軟體相結合、面向系統、側重應用的寬口徑專業。
  • 深度解讀計算機科學與技術專業和軟體工程專業
    由此可以看出,計算機科學與技術和軟體工程,是非常近似的專業,單獨去分析計算機科學與技術或是軟體工程都不是非常合理的,在這裡,我們把兩者合起來去解說。,毫不客氣地說,軟體工程是計算機科學與技術在軟體方面的細化與延展。
  • 人類與計算機語言和數碼科技間的關係
    ,《抱抱鼠》會帶給你寒冬裡的溫暖,而他的雕塑作品則是站在更高的層面上思考「人類與計算機語言和數碼科技間的關係」,帶給人陰柔之美或是簡潔陽剛的衝擊力。 下面,讓我們走近溫闊的雕塑作品,感受這些富有情感的作品是如何通過計算機指令來生成的
  • 一文讀懂計算機的常見接口主要作用
    家用或辦公用的計算機一般都有很多接口,相信很多朋友對一些接口比較熟悉,如USB接口是最為常見的,也有一些外接顯示器的HDMI接口,可能你不了解它的名稱,但應該見過這樣或那樣的接口形態。當然,計算機有很多種接口,外形不一樣,功能不一。今天小編來給你全面講解關於計算機接口。