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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++rs法计算hurst指数_计算机组成原理与接口技术

發(fā)布時(shí)間:2023/12/10 c/c++ 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++rs法计算hurst指数_计算机组成原理与接口技术 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

計(jì)算機(jī)組成原理與接口技術(shù)

——基于MIPS架構(gòu)


@TOC

為什么要寫這個(gè)筆記?

課后整理筆記是一個(gè)復(fù)習(xí)的過程。上學(xué)期寫了一個(gè)數(shù)字電路的筆記,感覺這門課一下子得心應(yīng)手起來。這學(xué)期繼續(xù)這個(gè)做法,選幾門覺得難的課程整理下筆記

寫給讀者

感謝你閱讀本筆記,本文不允許任何形式的轉(zhuǎn)載。有任何問題可以與我聯(lián)系,我的郵箱是wnn2000@hust.edu.cn


第一章 計(jì)算機(jī)基礎(chǔ)

1. 計(jì)算機(jī)結(jié)構(gòu)

計(jì)算機(jī)系統(tǒng)由軟件和硬件組成,這門課主要研究硬件
計(jì)算機(jī)硬件包括CPU、存儲器、I/O設(shè)備等

CPU

CPU由ALU、控制器、寄存器組成ALU是運(yùn)算單元控制器負(fù)責(zé)控制信號
CPU位數(shù) = CPU中寄存器的位數(shù) = CPU能夠一次并行處理的數(shù)據(jù)寬度 = 數(shù)據(jù)總線寬度
例如64位計(jì)算機(jī),其CPU中寄存器的位數(shù)為64。它一次能并行處理64位的數(shù)據(jù)。它的數(shù)據(jù)總線寬度為64

存儲器

存儲器就是內(nèi)存,由存儲矩陣構(gòu)成,最小存儲單位為Byte,即8個(gè)bit

總線

總線是指計(jì)算機(jī)組件間規(guī)范化的交換數(shù)據(jù)的方式
總線分為數(shù)據(jù)總線、控制總線、地址總線數(shù)據(jù)總線是用來傳輸數(shù)據(jù)的,是雙向的控制總線是控制數(shù)據(jù)傳輸方向的信號線,是雙向的地址總線是傳輸數(shù)據(jù)位置的,是單向的

2. 計(jì)算機(jī)工作原理

基本術(shù)語

指令:計(jì)算機(jī)能識別并執(zhí)行的基本操作命令
指令由操作數(shù)和操作碼組成。操作碼決定要完成什么操作,操作數(shù)指參加運(yùn)算的數(shù)據(jù)及其所在的地址
指令以二進(jìn)制的形式存在內(nèi)存中
指令集:計(jì)算機(jī)全部指令的集合
程序:完成既定任務(wù)的指令序列

工作過程

1.讀取指令
2.指令譯碼
3.獲取數(shù)據(jù)
4.執(zhí)行運(yùn)算
5.存儲結(jié)果

3. 計(jì)算機(jī)結(jié)構(gòu)模型

馮諾依曼結(jié)構(gòu)

計(jì)算機(jī)由控制器、運(yùn)算器、存儲器、輸入設(shè)備、輸出設(shè)備五大部分組成
程序和數(shù)據(jù)以二進(jìn)制不加區(qū)分存在存儲器(數(shù)據(jù)類型是由程序決定的)
計(jì)算機(jī)只有一個(gè)CPU,一個(gè)存儲器,一套總線。CPU的速度越來越快,但是由于只有一個(gè)存儲器和一套總線,使得讀數(shù)據(jù)、讀指令、存放結(jié)果不能并行

哈佛結(jié)構(gòu)

為了解決以上問題,提出哈佛結(jié)構(gòu)。提供兩個(gè)存儲器分別存放指令和數(shù)據(jù),同時(shí)提供兩套總線
代價(jià)是增加了復(fù)雜度

改進(jìn)的哈佛結(jié)構(gòu)

提供兩個(gè)存儲器,但只有一套總線

混合結(jié)構(gòu)

現(xiàn)在最常見的是混合結(jié)構(gòu)

4. 計(jì)算機(jī)中的信息表示

計(jì)算機(jī)是數(shù)字電路,存儲的信息都是二進(jìn)制信息

數(shù)制轉(zhuǎn)換

這部分網(wǎng)絡(luò)資料很多,就不記了

整數(shù)的編碼

原碼、反碼、補(bǔ)碼參考:https://www.jianshu.com/p/36ec7a047f29
這里提一下模的概念,模是符號位的進(jìn)位位的權(quán)值。例如有8位二進(jìn)制,模是第9位的權(quán)值,即28=256負(fù)數(shù)的補(bǔ)碼為模減去該數(shù)的絕對值,這是負(fù)數(shù)補(bǔ)碼的定義,可以越過原碼和反碼事實(shí)上,有些負(fù)數(shù)的原碼和反碼不存在,不能通過反碼+1的方法計(jì)算補(bǔ)碼。比如計(jì)算-128的8位補(bǔ)碼,-128的8位反碼不存在,那么-128的補(bǔ)碼為:256-128=128,即1000 0000機(jī)器碼的概念:機(jī)器碼包括原碼、反碼、補(bǔ)碼和移碼

小數(shù)的編碼

定點(diǎn)數(shù)

不需要保存小數(shù)點(diǎn)的位置,所有位置都用來存儲數(shù)字
包括定點(diǎn)整數(shù)、定點(diǎn)純小數(shù)、定點(diǎn)帶小數(shù)

浮點(diǎn)數(shù)

遵循IEEE 754編碼,分為單精度和雙精度。單精度有32位,雙精度有64位。浮點(diǎn)數(shù)從高位到低位分別是符號域、指數(shù)域和尾數(shù)域。其中符號域?yàn)榱苏?fù)數(shù)的統(tǒng)一,需要加上偏移量
具體過程如圖所示,首先將實(shí)數(shù)進(jìn)行二進(jìn)制小數(shù)規(guī)范化,再填入對應(yīng)的域,注意指數(shù)域需要加上偏差

以下是特殊情況和單精度規(guī)范化浮點(diǎn)數(shù)的表示范圍

5. 計(jì)算機(jī)的運(yùn)算基礎(chǔ)

整數(shù)運(yùn)算

無符號數(shù)運(yùn)算

直接算溢出:當(dāng)最高為向更高位有進(jìn)位(或借位)時(shí)產(chǎn)生溢出
產(chǎn)生的進(jìn)位或借位由狀態(tài)寄存器的CF位保存

有符號數(shù)運(yùn)算

加減統(tǒng)一為補(bǔ)碼運(yùn)算溢出:最高位進(jìn)位狀態(tài)⊕次高位進(jìn)位狀態(tài)=1,則溢出。溢出只可能發(fā)生在同符號的數(shù)運(yùn)算之間

最高位和次高位,一個(gè)有進(jìn)位一個(gè)沒有進(jìn)位,則他們的狀態(tài)異或得1,則結(jié)果就有溢出

浮點(diǎn)數(shù)運(yùn)算(難點(diǎn))

1.檢測0操作數(shù),如果有一個(gè)是0就不用算了
2.指數(shù)對齊。小的指數(shù)向大的對齊。原因是:小的向大的對齊時(shí),指數(shù)小的那個(gè)數(shù)的小數(shù)點(diǎn)左移,其尾數(shù)域右端的數(shù)字被移出,誤差小;而反過來誤差較大
3.尾數(shù)求和。都用補(bǔ)碼運(yùn)算
4.結(jié)果規(guī)范化

例題:計(jì)算1.5 - 27.5(單精度)
首先把兩個(gè)浮點(diǎn)數(shù)表示出來

把1.5的小數(shù)點(diǎn)左移,與-27.5的補(bǔ)碼相加。得到的結(jié)果依然是補(bǔ)碼,再變回原碼

已經(jīng)是規(guī)范化的小數(shù)了,本題結(jié)束

6.計(jì)算機(jī)中的信息存儲

當(dāng)數(shù)據(jù)存在連續(xù)的存儲空間時(shí),其地址是就是存儲空間的首地址
大字節(jié)序:高位存入低地址,低位存入高地址(MIPS采用大字節(jié)序)
小字節(jié)序:高位存入高地址,低位存入低地址

第二章 MIPS匯編語言

1.計(jì)算機(jī)語言

高級語言:獨(dú)立于硬件,描述算法
匯編語言:使用助記符號和地址符號來表示指令的語言,又稱符號語言
機(jī)器語言:依賴硬件,是二進(jìn)制代碼,計(jì)算機(jī)可以直接執(zhí)行
匯編:把匯編語言翻譯成機(jī)器語言的過程
匯編程序:實(shí)現(xiàn)匯編過程的軟件
匯編語言程序:用戶用匯編語言編寫的程序

2.計(jì)算機(jī)指令架構(gòu)

CISC(復(fù)雜指令集計(jì)算機(jī))

RISC(精簡指令集計(jì)算機(jī))

兩種架構(gòu)的對比

可以看出CISC的指令種類較多,長度不固定
而RISC只有三類指令,長度固定。注意:RISC只有裝載和存儲可以訪問存儲器,其他指令都在寄存器之間進(jìn)行
二者各用用處,這門課我們學(xué)習(xí)的MIPS架構(gòu)采用精簡指令集(RISC)

3.MIPS匯編指令概述

MIPS指令結(jié)構(gòu)

MIPS匯編指令基本結(jié)構(gòu)如下圖

在下面這條示例指令中,add是操作碼,決定這條指令進(jìn)行加法操作;a, b, c是三個(gè)操作數(shù),是操作的對象,其中a是目的操作數(shù)b, c是源操作數(shù)

add a, b, c

MIPS操作數(shù)類型

操作數(shù)只有三種,分別是寄存器、存儲器和立即數(shù)寄存器操作數(shù):是CPU內(nèi)部的寄存器,表示方法是美元符加上寄存器的名稱或編號,如$s0,$s7,$3存儲器操作數(shù):是內(nèi)部存儲器,在MIPS架構(gòu)下僅用于裝載(Load)和存儲(Store)指令。表示方法是常數(shù)加上括號寄存器的形式,其中的常數(shù)是偏移量,如4($s3)立即數(shù)操作數(shù):就是常數(shù),如4,8

MIPS指令類型

指令中的u表示操作數(shù)據(jù)是無符號數(shù)。這就解釋了為什么之前說內(nèi)存中的數(shù)據(jù)類型是程序決定的
指令中的i表示這條指令的操作數(shù)含有立即數(shù)
數(shù)據(jù)傳送指令中的w h b分別表示這條指令針對的數(shù)據(jù)是字、半字、字節(jié)
這里將MIPS指令按照功能分類,之后我們還會(huì)按照編碼方式分類

4.MIPS指令操作數(shù)

寄存器操作數(shù)

MIPS有32個(gè)通用寄存器(0-0?31),具體內(nèi)容如下圖

沒列出的$26,$27寄存器保留給異常處理函數(shù)使用

存儲器操作數(shù)

MIPS數(shù)據(jù)存儲要求邊界對齊。半字存儲地址需要為偶數(shù);字的存儲地址需要為4的整數(shù)倍。MIPS指令是32位的,即一個(gè)字,所以指令的地址也是4的整數(shù)倍
表示方法僅有一種,是常數(shù)加上括號寄存器的形式,其中的常數(shù)是偏移量,如4($s3)
例如,A中存儲int,A保存在$s8中,請表示A[8]
答案為:32($8)。因?yàn)槊恳粋€(gè)int占據(jù)4個(gè)字節(jié),偏移量為32

立即數(shù)操作數(shù)

是指出現(xiàn)在指令中的常數(shù),如下列指令中的40

addi $s1,$s2,40

立即數(shù)可以有10進(jìn)制或者16進(jìn)制表達(dá)方式。后者需要有0x作為前綴

5.MIPS指令編碼

我們知道MIPS的指令編碼都是定長的,那么如何用二進(jìn)制編碼指令,即如何表示指令的操作碼和操作數(shù)?
回答這個(gè)問題前,我們將指令分為R型,I型,J型三種指令。實(shí)際上,我們分類的標(biāo)準(zhǔn)是這三種指令有不同的編碼形式

R型指令

I型指令

J型指令

小結(jié)

三種指令的編碼形式如下圖

6.MIPS常用匯編指令

數(shù)據(jù)傳送指令

裝載(Load)

指令格式如下

lx $Rt, Imm($Rs)

顯然,裝載指令是I型指令。指令中的lx,Rt,Rs,Imm分別與I型指令的各個(gè)域?qū)?yīng)lx并不代表真的有l(wèi)x這個(gè)指令,在實(shí)際代碼中,要被替換成lw,lh,lhu,lb,lbu等lw指令將一個(gè)字的數(shù)據(jù)拷貝到寄存器。注意MIPS寄存器的左邊儲存數(shù)據(jù)的高位,存儲器的低地址存放數(shù)據(jù)的高位lh,lhu拷貝半字到寄存器。由于寄存器是32位,半字只有16位,所以二者需要分別進(jìn)行有符號擴(kuò)展和無符號擴(kuò)展

有符號擴(kuò)展是在高位補(bǔ)充符號位
無符號擴(kuò)展是在高位補(bǔ)充0
例如,16位立即數(shù)0x8000,進(jìn)行有符號擴(kuò)展和無符號擴(kuò)展得到如下結(jié)果
有符號擴(kuò)展:0xFFFF8000
無符號擴(kuò)展:0x00008000

lb,lbu拷貝字節(jié)到寄存器。同樣要進(jìn)行擴(kuò)展,方式與上述一致
以上都是規(guī)則字的裝載,下面來講非規(guī)則字的裝載。這種情況發(fā)生在地址不是4的整數(shù)倍的時(shí)候(針對MIPS架構(gòu)大字節(jié)序)lwl是左邊界對齊非規(guī)則字訪問。復(fù)制存儲器中從高位到低位的數(shù)據(jù),粘貼在寄存器的左邊lwr是右邊界對齊非規(guī)則字訪問。復(fù)制存儲器中從低位到高位的數(shù)據(jù),粘貼在寄存器的右邊
舉個(gè)lwl的例子。lwr與例子相反,就不舉了

從高字節(jié)的0到低字節(jié)的1,依次復(fù)制到寄存器的左邊。結(jié)果如下圖

非規(guī)則字的裝載可以和非規(guī)則字的存儲配合使用,實(shí)現(xiàn)小字節(jié)序

存儲(Store)

指令格式如下

sx $Rt, Imm($Rs)

存儲指令和裝載指令一樣,都是I型指令sx在實(shí)際代碼中為sw,sh,sbsw直接將寄存器中的一個(gè)字存到存儲器,注意地址必須是4的整數(shù)倍sh存半字,而且是低半字。因?yàn)楦呶皇峭卣苟鴣淼?#xff0c;不會(huì)影響數(shù)據(jù)的值sb存字節(jié),而且是低字節(jié)
存儲指令中也有非規(guī)則字存儲指令swl是將寄存器中從左邊界開始的值,以從高位到低位的方式存到存儲器swr是將寄存器中從右邊界開始的值,以從低位到高位的方式存到存儲器swl與lwl過程相反,swr與lwr過程相反
舉個(gè)swl的例子

得到結(jié)果如下

一句話概括非規(guī)則裝載存儲:裝載是中間裝到邊界,存儲是邊界存到中間

特殊數(shù)據(jù)傳輸指令

  • 特殊寄存器和通用寄存器之間數(shù)據(jù)互傳
  • 四條都是R型指令。$Rd,$Rs代表域

  • 寄存器賦初值
  • 代碼如下

    lui $Rt,Imm

    這是I型指令,功能是把16位立即數(shù)賦給寄存器的高16位,低16位補(bǔ)0
    代碼的u不是無符號數(shù)的意思,而是高位(up)的意思
    如何給寄存器賦32位值?需要用到后續(xù)課程的邏輯運(yùn)算指令

    算術(shù)運(yùn)算指令

    加減運(yùn)算

    先來看4條R型加減運(yùn)算指令

    add $Rd,$Rs,$Rt # 有OF作為溢出標(biāo)志位 addu $Rd,$Rs,$Rt sub $Rd,$Rs,$Rt # 有OF作為溢出標(biāo)志位,運(yùn)算結(jié)果是Rs的值-Rt的值 subu $Rd,$Rs,$Rt

    還有2條I型加減運(yùn)算指令

    addi $Rt,$Rs,Imm #Imm是16位的,高16位補(bǔ)充符號位 addiu $Rt,$Rs,Imm #Imm是16位的,高16位充0

    立即數(shù)參與的時(shí)候就沒有減法了,因?yàn)橹灰由弦粋€(gè)負(fù)數(shù)就可以實(shí)現(xiàn)減法

    乘法運(yùn)算

    mult $Rs,$Rt multu $Rs,$Rt

    乘法結(jié)果的符號由參與運(yùn)算的數(shù)的符號決定,所以要區(qū)分有符號和無符號(乘法的實(shí)現(xiàn)比較復(fù)雜,這只是簡單理解,想了解更多請看乘法電路)
    乘法的結(jié)果保存在特殊寄存器中。高32位存在hi寄存器,低32位保存在lo寄存器中
    想得到結(jié)果需要用到前文的mfhi,mflo等

    除法運(yùn)算

    與乘法類似

    div $Rs,$Rt divu $Rs,$Rt

    進(jìn)行$Rs/$Rt的運(yùn)算,結(jié)果保存在特殊寄存器中。余數(shù)存在hi寄存器,商存在lo寄存器中

    位運(yùn)算指令

    位邏輯運(yùn)算指令

    先講與、或、或非、異或四類運(yùn)算,這里都是位邏輯運(yùn)算
    邏輯運(yùn)算的具體功能請參考《數(shù)字電路》課程可以通過或非0,異或1,實(shí)現(xiàn)非運(yùn)算

    and $Rd,$Rs,$Rt #Rs和Rt位與,結(jié)果存到Rd andi $Rd,$Rs,Imm #Imm是16位的,高16位充0后再和Rs位與 or $Rd,$Rs,$Rt #或運(yùn)算 ori $Rd,$Rs,Imm #Imm是16位的,高16位充0 xor $Rd,$Rs,$Rt #異或運(yùn)算 xori $Rd,$Rs,Imm #Imm是16位的,高16位充0 nor $Rd,$Rs,$Rt #或非運(yùn)算,注意沒有nori指令

    移位指令

    還有一類移位指令,分為邏輯移位和算術(shù)移位

    # 邏輯移位指令,移入0,都是R型指令,Imm存在移位域 sll $Rd,$Rt,Imm #邏輯左移Imm srl $Rd,$Rt,Imm #邏輯右移Imm sllv $Rd,$Rs,$Rt #邏輯左移,移動(dòng)的位數(shù)是$Rt的值 srlv $Rd,$Rs,$Rt #邏輯右移,移動(dòng)的位數(shù)是$Rt的值# 算術(shù)移位指令,移入符號位,都是R型指令,Imm存在移位域 # 沒有算術(shù)左移,因?yàn)樽笠茣?huì)丟失符號位 sra $Rd,$Rt,Imm #算術(shù)右移Imm srav $Rd,$Rs,$Rt #算術(shù)右移,移動(dòng)的次數(shù)是$Rt的值

    程序控制指令

    在學(xué)這部分知識前,我們先要復(fù)習(xí)以下幾個(gè)知識:

    1.MIPS指令都是32位的,即4個(gè)字節(jié),即1個(gè)字
    2.MIPS架構(gòu)的存儲器要求邊界對齊,字的存放的首地址必須是4的整數(shù)倍,也就是地址的最低兩位是0
    3.指令存放在存儲器中,且是順序存儲。在程序中相鄰的指令在內(nèi)存中也相鄰
    4.PC寄存器指向下一條指令的地址
    5.在無跳轉(zhuǎn)指令時(shí),程序依靠PC寄存器依次+4來順序執(zhí)行指令;實(shí)現(xiàn)跳轉(zhuǎn)的關(guān)鍵是改變PC寄存器的值

    相等條件控制指令

    有beq和bne兩條指令,都是I型指令

    beq $Rs,$Rt,label # $Rs,$Rt相等時(shí)跳轉(zhuǎn)到label bne $Rs,$Rt,label # $Rs,$Rt不相等時(shí)跳轉(zhuǎn)到label

    label是程序前的標(biāo)號,代表指令的地址。實(shí)際上是一個(gè)常數(shù),存在Imm域label實(shí)際上保存的是相對地址,即label-PC再右移兩位的低16位。結(jié)果是一個(gè)符號數(shù),正數(shù)往后跳,負(fù)數(shù)往前跳
    原因是地址的最低兩位是0,沒必要存。剩下的從低到高存16位。可見這兩條指令的跳轉(zhuǎn)有范圍限制

    無條件控制指令

    只有一條j指令

    j label # 無條件跳轉(zhuǎn)到label

    J型指令的Imm域是26位的。實(shí)際上,保存的是label的去除高4位和低2位的中間26位j指令的跳轉(zhuǎn)也是有限的,跳轉(zhuǎn)到的指令的地址高4位必須和PC一樣

    大小條件控制指令

    與0比較

    滿足條件時(shí),跳轉(zhuǎn)到label

    與非0比較

    滿足條件時(shí),會(huì)給第一個(gè)寄存器操作數(shù)置1
    再結(jié)合beq和bne指令,實(shí)現(xiàn)跳轉(zhuǎn)

    7.子程序原理

    子程序調(diào)用和返回

    子程序調(diào)用的過程實(shí)際上是main函數(shù)向sub函數(shù)跳轉(zhuǎn)的過程
    調(diào)用子程序時(shí),采用jal指令,這是一條J型指令
    格式如下,label為標(biāo)號

    jal label

    使用jal指令時(shí),會(huì)將PC寄存器中的值暫存到$ra寄存器
    函數(shù)調(diào)用結(jié)束后,使用jr指令就可跳轉(zhuǎn)回主程序,這是R型指令,格式如下

    jr $ra

    調(diào)用子程序時(shí),依次使用$a0-$a3寄存器保存入口參數(shù)。使用$v0-$v1寄存器保存返回值

    數(shù)據(jù)進(jìn)出遵循先進(jìn)后出原則
    出棧:先取出數(shù)據(jù),再改變棧頂指針
    入棧:先改變棧頂指針,再存入數(shù)據(jù)$sp指示棧頂$fp指示當(dāng)前子程序可操作的棧的棧頂

    8.MIPS尋址原理

    尋址是指處理器獲得數(shù)據(jù)和指令的存儲地址

    操作數(shù)尋址:獲取操作數(shù)的方式

    1.寄存器尋址。例如指令add $Rd,$Rs,$Rt,操作數(shù)在寄存器中
    2.基址尋址。例如指令lw $Rt,(Imm)$Rs,地址由基地址和偏移地址組成
    3.立即尋址。例如指令addi $Rt,$Rs,Imm,操作數(shù)來自指令中的立即數(shù)

    指令尋址:獲取下一條指令存儲地址的方式

    1.寄存器間接尋址。例如指令jr $Rs,PC來自寄存器
    2.PC相對尋址。例如指令beq $Rs,$Rt,label,新PC的值和原PC的值相關(guān)
    3.偽直接尋址。例如指令j label,新PC的值基本來自指令

    9.編譯、匯編、鏈接、裝載

    c語言程序經(jīng)過編譯,成為匯編語言程序
    匯編語言程序經(jīng)過匯編,成為目標(biāo)文件
    目標(biāo)文件經(jīng)過鏈接,成為可執(zhí)行文件
    可執(zhí)行文件裝載到內(nèi)存中運(yùn)行

    10.偽指令、宏指令和系統(tǒng)功能調(diào)用

    偽指令

    宏指令

    系統(tǒng)功能調(diào)用

    系統(tǒng)功能調(diào)用由系統(tǒng)軟件提供,作用為屏蔽不同特定硬件的具體操作,作為硬件抽象層。

    第三章 微處理器

    數(shù)據(jù)通路和控制信號如圖所示

    1.控制器

    ALU控制信號

    通過兩級譯碼,來確定ALU執(zhí)行哪種運(yùn)算。
    如果是I型指令,操作碼就可以確定運(yùn)算類型;如果是R型指令,操作碼譯碼后還需結(jié)合功能碼,進(jìn)一步譯碼來確定運(yùn)算類型

    主控制器

    以下是控制信號和它們的具體含義

    RegDst控制寫寄存器的編號RegWr和MemWr是寄存器和存儲器的寫控制信號ALUSrc控制ALU的第二個(gè)數(shù)據(jù)源是立即數(shù)還是寄存器Mem2Reg控制寫入寄存器的數(shù)據(jù)的來源是存儲器還是ALU運(yùn)算的輸出這些控制信號由指令的操作碼譯碼而來,如圖所示

    以下是各條指令的各個(gè)控制信號的取值

    2.現(xiàn)代微處理器新技術(shù)

    流水線、超標(biāo)量和多核

    3.異常處理

    被中斷時(shí),進(jìn)入中斷程序前需要保存PC的值。用棧或者特殊功能寄存器MIPS EPC
    中斷技術(shù)一章中詳細(xì)學(xué)習(xí)

    第四章 存儲系統(tǒng)

    1.分級存儲結(jié)構(gòu)

    時(shí)間局部性:剛剛訪問的存儲區(qū)域又馬上訪問空間局部性:訪問剛剛訪問的存儲區(qū)域的相鄰區(qū)域
    存儲器的發(fā)展基本跟不上CPU的腳步。速度快的存儲器價(jià)格太貴,便宜的存儲器速度太慢
    計(jì)算機(jī)內(nèi)采用分級的存儲結(jié)構(gòu)提高效率,如下圖

    2.高速緩存

    如果將經(jīng)常使用的數(shù)據(jù)或指令裝載到高速緩存中,就可以提高速度
    cache的容量小于內(nèi)存,不可能把所有的數(shù)據(jù)都裝進(jìn)cache。故需要建立一種映射機(jī)制,也就是說cache數(shù)據(jù)和內(nèi)存數(shù)據(jù)的對應(yīng)關(guān)系

    cache映射機(jī)制

    這里有三種映射機(jī)制,分別是直接映射(一路組相聯(lián))、全相聯(lián)映射、組相聯(lián)映射
    參考:https://blog.csdn.net/l_nan/article/details/78883996

    cache寫策略

    CPU寫緩存時(shí),有以下幾種方式
    1.透寫:既寫緩存,也寫內(nèi)存
    2.回寫:只寫緩存,當(dāng)需替換時(shí)再寫入內(nèi)存
    3.配寫:寫內(nèi)存后,再拷貝到緩存
    4.不配寫:僅寫內(nèi)存
    1和3配合使用;2和4配合使用

    3.虛擬存儲器

    將外存當(dāng)作內(nèi)存使用
    管理方式有分段管理和分頁管理

    分段管理

    從虛擬空間裝載一段數(shù)據(jù)到物理空間時(shí),是連續(xù)裝載的,偏移地址是一樣的。因此要得到物理地址,只需要記錄段的首地址,即段地址。
    保存段地址的方式有兩種:
    1.用專用寄存器來保存。稱為實(shí)模式
    2.用內(nèi)存中的段地址描述符保存。稱為保護(hù)模式
    以下是段地址描述符的結(jié)構(gòu)

    分頁管理

    把內(nèi)存和外存分為大小相同的頁,以頁為單位裝載
    頁表存儲在內(nèi)存中,頁表的索引是虛擬地址,值是物理地址
    可以建立多級頁表,索引是虛擬地址的一部分,數(shù)據(jù)是下一級頁表的地址

    TLB

    把頁表存進(jìn)高速緩存(全相聯(lián)映射),提高查找的效率

    第五章 總線

    1.總線分類

    按位置分

    片內(nèi)總線:微處理器內(nèi)部的總線,如AXI總線系統(tǒng)總線:連接計(jì)算機(jī)系統(tǒng)各個(gè)模塊的總線,通常在服務(wù)器上使用局部總線:專門針對某些類型的設(shè)備設(shè)計(jì)的總線,如PCI總線、PCIE總線外部總線:連接外部設(shè)備的總線,或稱為外部接口,如USBUARTSATASPIIIC

    按定時(shí)分

    同步:SPIIIC異步:USBUARTSATA半同步:AXIPCI

    按數(shù)據(jù)傳輸方式分

    并行:片內(nèi)總線、系統(tǒng)總線、局部總線一般是并行。如AXIPCI串行:目前外部總線一般采用串行。局部總線PCIE是串行

    按是否復(fù)用方式分

    復(fù)用:所有串行總線都是復(fù)用的。也有并行總線采用復(fù)用,如PCI專用:AXI總線

    2.總線操作類型

    寫操作:主設(shè)備傳到從設(shè)備讀操作:從設(shè)備傳到主設(shè)備

    3.AXI總線

    4.PCI總線

    并行

    5.外部總線

    目前,外部總線一般都是串行總線
    異步串行的外部總線USBUARTSATA的特點(diǎn)如下

    同步串行的外部總線SPIIIC的特點(diǎn)如下

    第六章 半導(dǎo)體存儲器接口

    1.常見半導(dǎo)體存儲器

    2.容量擴(kuò)展

    3.空間映射

    4.多類型數(shù)據(jù)訪問

    5.存儲控制器

    第七章 IO接口

    http://1.IO尋址

    分為存儲器映像IO尋址和獨(dú)立IO尋址
    前者將IO接口映射到邏輯存儲空間,相當(dāng)于存儲器;后者訪問IO接口時(shí)需要提供獨(dú)立的控制信號,不占用邏輯存儲空間
    前者主要用于嵌入式系統(tǒng),后者主要用于PC機(jī)

    http://2.IO讀寫操作函數(shù)

    介紹Standalone BSP端口讀寫C語言函數(shù)

    Xil_In8(addr) # 從addr讀入8位數(shù)據(jù) Xil_In16(addr) # 從addr讀入16位數(shù)據(jù) Xil_In32(addr) # 從addr讀入32位數(shù)據(jù) Xil_Out8(addr,value) # 向addr輸出8位數(shù)據(jù) Xil_Out16(addr,value) # 向addr輸出16位數(shù)據(jù) Xil_Out32(addr,value) # 向addr輸出32位數(shù)據(jù)

    3.常見IO設(shè)備接口設(shè)計(jì)

    輸入設(shè)備與總線相連接時(shí)需要緩沖器,如74**244
    輸出設(shè)備與總線相連接時(shí)需要鎖存器,如74**373

    開關(guān)和LED燈

    這部分比較簡單,就不記了

    矩陣鍵盤

    電路及控制程序如下

    要識別一個(gè)按鍵,首先要判斷是否有按鍵按下。如果沒有按鍵按下,程序?qū)⒃诘谝粋€(gè)while處死循環(huán)。當(dāng)有按鍵按下時(shí),ABCD引線會(huì)出現(xiàn)低電平。接下來逐列掃描,確定掃描碼

    七段數(shù)碼管

    四個(gè)七段數(shù)碼管接口電路如下

    輸出位碼,即可選中對應(yīng)的數(shù)碼管;然后再輸出段碼,即可點(diǎn)亮該數(shù)碼管
    顯示5678的程序如下

    LED點(diǎn)陣

    行輸出1,列輸出0時(shí),對應(yīng)位置LED被點(diǎn)亮。接口電路和控制程序如下

    4.GPIO

    接口電路和寄存器含義如下

    例題:設(shè)計(jì)控制程序,將16位開關(guān)實(shí)時(shí)反應(yīng)到16位LED上,且16位開關(guān)表示的二進(jìn)制數(shù)以十六進(jìn)制形式顯示在4位七段數(shù)碼管上

    第八章 中斷技術(shù)

    1.中斷控制器

    中斷控制器應(yīng)該具有以下部分
    1.中斷狀態(tài)寄存器:用來指示是哪一個(gè)設(shè)備產(chǎn)生中斷
    2.中斷響應(yīng)寄存器:響應(yīng)后,用來清除中斷狀態(tài)
    3.中斷使能寄存器:使能中斷
    電路如下

    2.AXI INTC中斷控制器

    結(jié)構(gòu)和寄存器含義如下圖

    ISR為中斷狀態(tài)寄存器,某位為1時(shí),表示對應(yīng)位產(chǎn)生了中斷IER為中斷使能寄存器,某位為1時(shí),使能對應(yīng)位中斷輸入IAR為中斷響應(yīng)寄存器,某位為1時(shí),清除對應(yīng)位中斷IMR為工作模式寄存器,某位為0時(shí),標(biāo)志工作在普通中斷模式;為1時(shí),標(biāo)志工作在快速中斷模式IVR保存最高優(yōu)先級中斷源的編碼,intr0的優(yōu)先級最高,intr31優(yōu)先級最低。如果intr2產(chǎn)生中斷,而intr0和intr1沒有中斷,則IVR的值為0x2MER寄存器僅兩位。D1=1表示使能硬件中斷。D0=1表示允許Irq產(chǎn)生中斷請求ILR寄存器保存阻止的最高優(yōu)先級中斷源的編碼。如果ILR=0x3,表示阻止intr3到intr31產(chǎn)生中斷IVAR寄存器共有32個(gè)寄存器,每個(gè)寄存器4B,保存各個(gè)中斷源的中斷向量

    3.INTC編程控制

    4.c語言中斷方式程序設(shè)計(jì)

    microblaze_enable_interrupts();//微處理器開中斷 microblaze_disable_interrupts();//微處理器關(guān)中斷 void name() __attribute__((interrupt_handler));//注冊總中斷服務(wù)程序,用于普通中斷 void name() __attribute__((fast_interrupt));//用于快速中斷

    5.普通中斷方式應(yīng)用

    鴿了

    6.快速中斷方式應(yīng)用

    鴿了

    7.GPIO中斷

    結(jié)構(gòu)

    相關(guān)寄存器

    初始化程序(普通中斷)

    清除中斷狀態(tài)。寫GPIO的IPISR寄存器和INTC的IAR寄存器
    開放中斷。寫GPIO的GIER和IPIER寄存器開放GPIO中斷;寫INTC的IER,MER和IMR寄存器,開放INTC中斷并設(shè)定工作模式;開放微處理器的中斷
    注冊中斷服務(wù)程序
    配置GPIO的工作方式。寫GPIO_TRI寄存器

    中斷服務(wù)程序(普通中斷)

    1.識別中斷源,執(zhí)行對應(yīng)的中斷事務(wù)處理函數(shù)
    2.返回前需要清除GPIO和INTC的中斷狀態(tài)

    8.AXI Timer定時(shí)器

    以下是定時(shí)器的結(jié)構(gòu)和寄存器

    以下是TCSR的各位的含義

    定時(shí)器的計(jì)時(shí)模式過程如下

    9.SPI接口

    SPI是同步串行總線接口MOSI傳輸方向?yàn)橹髟O(shè)備到從設(shè)備;MISO傳輸方向?yàn)閺脑O(shè)備到主設(shè)備
    選中從設(shè)備時(shí),從設(shè)備選擇信號ss為低電平CPOL表示從設(shè)備空閑時(shí)的始終電平CPHA表示時(shí)鐘相位,0為0度,1為180度。第一個(gè)時(shí)鐘邊沿為相位0度,第二個(gè)時(shí)鐘邊沿為相位180度。

    第九章 DMA技術(shù)

    1.DMA傳輸系統(tǒng)構(gòu)成

    2.DMA傳輸分類

    IO到存儲器存儲器到IO存儲器到存儲器(DMAC內(nèi)部有FIFO存儲器)

    3.DMA傳輸模式

    單字節(jié)模式:DMA傳一個(gè)字節(jié)釋放總線塊傳輸模式:DMA傳輸塊時(shí)一直占用總線請求傳輸模式:外設(shè)和DMA中存在DREQ請求和DACK響應(yīng)。當(dāng)外設(shè)保持DREQ請求時(shí),一直占用總線,否則釋放級聯(lián)模式:主DMA僅僅負(fù)責(zé)DMA請求,從DMA工作在前三種模式中的一種

    總結(jié)

    以上是生活随笔為你收集整理的c++rs法计算hurst指数_计算机组成原理与接口技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。