版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
數(shù)字邏輯與數(shù)字系統(tǒng)指令集體系結構(ISA)5馮?諾依曼計算機結構指令集體系結構(ISA)匯編語言機器語言馮?諾依曼計算機結構VonNeumannComputer1電子計算機的問世,奠基人是英國科學家圖靈(AlanTuring)和美籍匈牙利科學家馮·諾依曼(JohnVonNeumann)。圖靈的貢獻是建立了圖靈機的理論模型,奠定了人工智能的基礎。而馮·諾依曼則是首先提出了計算機體系結構的設想。馮·諾依曼計算機VonNeumannComputer馮·諾依曼和奧本海默在第一臺計算機前合影馮·諾依曼計算機VonNeumannComputer馮?諾依曼計算機馮·諾依曼計算機VonNeumannComputer馮?諾依曼計算機的特點馮·諾依曼計算機VonNeumannComputer數(shù)據(jù)和指令一律用二進制數(shù)表示;存儲器按線性一維編址,且每個存儲單元的位數(shù)固定;采用存儲程序方式,指令/數(shù)據(jù)存儲在同一個存儲器中;指令在存儲器中按順序存放,按順序執(zhí)行的,但執(zhí)行順也會根據(jù)運算結果或指定的條件而改變;以(運算器和控制器,即CPU)為中心,輸入輸出設備和存儲器之間的數(shù)據(jù)傳送都要通過CPU。馮?諾依曼計算機的優(yōu)缺點馮·諾依曼計算機VonNeumannComputer本質(zhì)特征存儲程序和指令驅(qū)動執(zhí)行目前的計算機沒有能突破該特征的,都是對其的變種(如哈佛結構等)優(yōu)點自動、快速執(zhí)行缺點指令驅(qū)動的順序執(zhí)行CPU和存儲器分開,而且越來越遠指令集體系結構InstructionSetArchitecture(ISA)2InstructionSetArchitecture(ISA)指令集體系結構不同的處理器擁有不同的指令集不同國家/種族的人使用不同的語言思考題:為什么一個軟件可以運行在裝配有不同Intel處理器的個人電腦上?思考題:為什么一個軟件可以運行在裝配有不同ARM處理器的安卓手機上?兼容性IBMSystem/360InstructionSetArchitecture(ISA)指令集體系結構指令集體系結構(ISA)微體系結構功能模塊數(shù)字電路模擬電路器件層物理層系統(tǒng)軟件(操作系統(tǒng))應用軟件軟件硬件指令集體系結構的定義InstructionSetArchitecture(ISA)指令集體系結構指令集體系結構(ISA,也稱指令系統(tǒng)),是對處理器硬件細節(jié)的抽象描述,即設計規(guī)范,定義了處理器能夠做什么,也是系統(tǒng)級程序員所能看到的處理器的屬性。指令系統(tǒng)結構不僅僅是關于指令功能的編碼(指令集),還包括:基本數(shù)據(jù)類型寄存器尋址模式存儲管理機制異常和中斷處理運行時環(huán)境和運行級別控制硬件的功能是通過ISA提供出來軟件按ISA規(guī)定使用硬件ISA中的“五朵金花”InstructionSetArchitecture(ISA)指令集體系結構x86ARMPOWERSPARCMIPS
MIPS指令集體系結構MIPS(無內(nèi)部互鎖流水級處理器)是最經(jīng)典的RISC處理器,被視為處理器教科書的典范。由斯坦福大學的校長,JohnL.Hennessy領導的研究小組在1981年開始設計的。其設計理念就是使用相對簡單的指令,結合優(yōu)秀的編譯器以及采用流水線技術執(zhí)行指令,從而使用更少的晶體管生產(chǎn)出更快的處理器。1986年Hennessy檢查首款MIPS處理器R2000的電路圖InstructionSetArchitecture(ISA)指令集體系結構PresidentofStanfordUniversityProfessorofElectricalEngineeringandComputerScienceatStanfordsince1977CoinventedtheReducedInstructionSetComputer(RISC)withDavidPattersonDevelopedtheMIPSarchitectureatStanfordin1984andcofoundedMIPSComputerSystemsAsof2004,over300millionMIPSmicroprocessorshavebeensoldJohnHennessyInstructionSetArchitecture(ISA)指令集體系結構JohnHennessy&DavidPatterson2017年圖靈獎得主InstructionSetArchitecture(ISA)指令集體系結構簡單設計有助于規(guī)整化加快常見功能越小的設計越快好的設計需要好的折中MIPS體系架構設計準則InstructionSetArchitecture(ISA)指令集體系結構指令集體系結構為什么重要InstructionSetArchitecture(ISA)指令集體系結構指令集體系結構是計算機產(chǎn)業(yè)的樞紐,控制產(chǎn)業(yè)生態(tài)如成千上萬家企業(yè)參與到x86生態(tài)(x86是最好的ISA嗎?)指令體系結構是計算機軟硬件的重要標準一個人當然可以發(fā)明自己的語言,但是如何別人接受才是真正的問題指令系統(tǒng)決定系統(tǒng)性能和實現(xiàn)復雜性等如RISC、CISC如32位/64位,媒體指令、向量指令等微體系結構的定義InstructionSetArchitecture(ISA)指令集體系結構微體系結構是指令集體系結構的一種具體硬件實現(xiàn),如指令的數(shù)據(jù)通路結構,計算單元的電路結構(加法器等),存儲器體系(寄存器文件、主存的結構)等等。x86SandyBridgeIvyBridgeARMv8ARMA53/A72AppleTwisterMIPS32MIPS4K/24K龍芯GS232匯編語言AssemblyLanguage3計算機機器語言——指明了需要完成什么操作以及操作數(shù)的來源匯編語言:
便于人來閱讀,包括匯編指令、偽指令(標簽)、宏指令等機器語言:
機器可讀(0和1形式)的指令,也叫機器指令匯編指令和機器指令是一一對應的關系。本章主要介紹MIPS匯編指令(匯編語言)由JohnHennessy和同事于1980’s在斯坦福大學提出。應用于許多商業(yè)系統(tǒng):SiliconGraphics,Nintendo和Cisco等。匯編語言匯編語言AssemblyLanguage匯編指令格式:助記符目的操作數(shù)源操作數(shù)add(sub):
助記符,表明該指令完成什么操作,也稱操作符b,c:源操作數(shù),表明輸入數(shù)據(jù)的來源a:
目的操作數(shù),表明輸出數(shù)據(jù)的去處CCodea=b+c;a=b-cMIPSassemblycodeadda,b,csuba,b,c加法指令匯編語言AssemblyLanguage指令格式前后一致操作數(shù)格式一致易于在硬件中編碼和處理設計準則1:簡單設計有助于規(guī)整化匯編語言AssemblyLanguageCCodea=b+c-d;MIPSassemblycodeaddt,b,c#t=b+csuba,t,d#a=t-d匯編語言AssemblyLanguage復雜代碼MIPS僅僅包含了簡單常用的指令。硬件解碼和執(zhí)行指令可以變得簡單、短小、速度快。更復雜的指令由多條MIPS指令完成MIPS為RISC(精簡指令),而Intel的x86為CISC(復雜指令)。設計準則2:加快常見功能匯編語言AssemblyLanguage操作數(shù)物理位置寄存器存儲器常數(shù)(立即數(shù))匯編操作數(shù)匯編語言AssemblyLanguageMIPS定義了32個32位寄存器組成的寄存器文件(registerfile)。寄存器的訪問速度快于內(nèi)存,但存儲容量有限MIPS被稱為32位體系,因為其操作的數(shù)據(jù)寬度為32位數(shù)據(jù)操作數(shù)——寄存器匯編語言AssemblyLanguageMIPS體系只包含了數(shù)目不多的32個寄存器。3.越小的設計越快匯編語言AssemblyLanguage助記符編號用途$0$0theconstantvalue0$at$1assemblertemporary$v0-$v1$2-$3Functionreturnvalues$a0-$a3$4-$7Functionarguments$t0-$t7$8-$15temporaries$s0-$s7$16-$23savedvariables$t8-$t9$24-$25moretemporaries$k0-$k1$26-$27OStemporaries$gp$28globalpointer$sp$29stackpointer$fp$30framepointer$ra$31FunctionreturnaddressMIPS寄存器匯編語言AssemblyLanguage寄存器名字前面加$表示例如:$0,代表寄存器0有些寄存器有專有用途$0總是表示立即數(shù)0.$s0-$s7為保存寄存器,用于保存變量.$t0-$t9為臨時寄存器,用于保存大型計算中的中間值本課程中除了$0寄存器,其它寄存器可以任意使用操作數(shù)—寄存器匯編語言AssemblyLanguageCCodea=b+cMIPSassemblycode#$s0=a,$s1=b,$s2=cadd$s0,$s1,$s2帶寄存器的指令匯編語言AssemblyLanguage存儲器可以存儲更多的數(shù)據(jù);存儲器的訪問時間更長,故經(jīng)常使用的變量會存在寄存器中;綜合使用存儲器和寄存器,程序可以以較快的速度訪問大量數(shù)據(jù);對于MIPS而言,存儲器的地址為32位,一個存儲字的長度也為32位。MIPS采用字節(jié)編址存儲器,每個字節(jié)有一個單獨地址。但可以按字節(jié)、半字和字的方式進行尋址。操作數(shù)——存儲器匯編語言AssemblyLanguage按字編址和尋址匯編語言AssemblyLanguage注意:MIPS是按字節(jié)編址的,不是字編址。為了便于理解,先講字編址再講字節(jié)編址每個字有一個獨立地址按字編址和尋址匯編語言AssemblyLanguage讀存儲器的指令稱為加載指令(load指令)加載一個字的指令助記符為“l(fā)w”(loadaword)加載指令格式:lw$s0,5($t1)計算訪存地址:基地址($t1寄存器中的值)+偏移(5)訪存地址=($t1+5)含義:從主存地址“$t1+5”處,讀取一個字,將其存放到寄存器$s0中基地址可以存放在任意寄存器中按字編址和尋址匯編語言AssemblyLanguage寫存儲器的指令稱為存儲指令(store指令)存儲一個字的指令助記符為“sw”(storeaword)存儲指令格式:sw$s0,5($t1)計算訪存地址:基地址($t1寄存器中的值)+偏移(5)訪存地址=($t1+5)含義:向主存地址“$t1+5”處,寫入寄存器$s0中的字基地址可以存放在任意寄存器中按字節(jié)編址匯編語言AssemblyLanguage每個字節(jié)有一個獨立地址具有加載/存儲字節(jié)、半字和字指令加載/存儲字節(jié):lb,sb加載/存儲半字:lh,sh加載/存儲字節(jié):lw,sw一個字(32-bit)為4字節(jié),字地址按4遞增讀按字節(jié)編址存儲器匯編語言AssemblyLanguage示例:從存儲器地址4處,加載一個字到寄存器$s3中。MIPS匯編代碼:lw$s3,4($0)#$0寄存器中存放的數(shù)據(jù)為0,$s3=0xF2F1AC07注意:訪問一個字時,地址必須是4的倍數(shù)(4對齊),即地址最后兩位均為0,否則出錯。例如:lw$s3,1($0)寫按字節(jié)編址存儲器匯編語言AssemblyLanguage示例:將寄存器$t7中的值寫入到存儲器地址44處。MIPS匯編代碼:sw$t7,44($0)#$0寄存器中存放的數(shù)據(jù)為0,$s3=0xF2F1AC07思考題匯編語言AssemblyLanguage對于按字節(jié)編址的存儲器,加載或存儲一個半字,匯編代碼是什?MIPS匯編代碼:lh$s3,4($0)sh$t7,44($0)#對于半字,訪存地址必須是2的倍數(shù)(2對齊)MIPS匯編代碼:lb$s3,4($0)sb$t7,44($0)#對于字節(jié)沒有地址要求對于按字節(jié)編址的存儲器,加載或存儲一個字節(jié),匯編代碼是什?大端和小端匯編語言AssemblyLanguage在字節(jié)編址的存儲器中,根據(jù)一個字中的字節(jié)的存儲順序?qū)⒋鎯ζ鞯慕M織方式分為兩種:大端(big-endian)和小端(little-endian)大端:一個字中,最高有效字節(jié)存儲在低地址。小端:一個字中,最高有效字節(jié)存儲在高地址。兩種組織方式,字地址都是相同的,只是一個字中的字節(jié)地址不同。大端/小端由ISA確定,對于MIPS而言,二者都可以使用。大端和小端匯編語言AssemblyLanguage大端訪問地址0:0x00112233小端訪問地址0:0x33221100大端和小端匯編語言AssemblyLanguage假設$s0中的初始值為0x23456789。對于大端或小端組織形式,下面程序執(zhí)行后,$s0的值是多少?sw$s0,0($0)lb$s0,1($0)大端:$s0的值0x00000045小端:$s0的值0x00000067思考題匯編語言AssemblyLanguage編寫一段C程序,確定所運行機器采用大端存儲還是小端存儲?intbig_little_endian(){inti=0x12345678;char*c=(char*)&i;
return(*c==0x12);}如果返回值是“1”:大端如果返回值是“0”:
小端操作數(shù)既不來自寄存器,也不來自存儲器,而直接來自指令;立即數(shù)通常被表示為一個16位的二進制補碼,嵌入在指令中。操作數(shù)——立即數(shù)匯編語言AssemblyLanguageCCodea=a+4;b=a–12;MIPSassemblycode#$s0=a,$s1=baddi$s0,$s0,4addi$s1,$s0,-12機器語言MachineLanguage33種指令格式:寄存器類型指令(R型指令)()立即數(shù)類型指令(I型指令)跳轉類型指令(J型指令)機器語言機器語言MachineLanguage寄存器類型指令機器語言MachineLanguage32位指令字被劃分為6個字段op字段表示操作碼,通常為全0func字段與op字段一起決定指令的功能rs字段和rt字段為寄存器編號,表示兩個源操作數(shù)來自于寄存器rd字段表示目的寄存器的編號sa(shamt)字段只在移位指令中使用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版圖書產(chǎn)品試用及讀者評價協(xié)議3篇
- 2025年變電站電氣設備絕緣試驗與安裝合同3篇
- 2024年魚苗供需協(xié)議2篇
- 2025年度石場開采與地質(zhì)勘探承包合同3篇
- 2025年文創(chuàng)商業(yè)街出售合同3篇
- 2024版鉆井工程承包合同范本
- 二零二五年度重點區(qū)域安全保衛(wèi)外包專項合同2篇
- 2024版畫室租賃與創(chuàng)作分成合同版B版
- 二零二五年度城市綠化工程承包管理協(xié)議2篇
- 2024科技公司股東之間股權轉讓協(xié)議
- 校園熱水方案
- 跟蹤服務項目活動實施方案
- 新能源汽車產(chǎn)業(yè)鏈中的區(qū)域發(fā)展不均衡分析與對策
- 財務機器人技術在會計工作中的應用
- 《保單檢視專題》課件
- 建筑保溫隔熱構造
- 智慧財務綜合實訓
- 安徽省合肥市2021-2022學年七年級上學期期末數(shù)學試題(含答案)3
- 教育專家報告合集:年度得到:沈祖蕓全球教育報告(2023-2024)
- 肝臟腫瘤護理查房
- 護士工作壓力管理護理工作中的壓力應對策略
評論
0/150
提交評論