計算機(jī)器-圖靈機(jī) - DRIVEHQ_第1頁
計算機(jī)器-圖靈機(jī) - DRIVEHQ_第2頁
計算機(jī)器-圖靈機(jī) - DRIVEHQ_第3頁
計算機(jī)器-圖靈機(jī) - DRIVEHQ_第4頁
計算機(jī)器-圖靈機(jī) - DRIVEHQ_第5頁
已閱讀5頁,還剩66頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

CPU的基本部件CPU

*計算機(jī)的基本模型有兩個部件

內(nèi)存

?存儲需要處理的數(shù)據(jù)

.存儲處理好的數(shù)據(jù).I

?存儲程序內(nèi)存

CPU

執(zhí)行存儲在內(nèi)存中的程序,把需要

處理的數(shù)據(jù)變換成所期望的新格式

或內(nèi)容(處理好的數(shù)據(jù))

結(jié)構(gòu)比內(nèi)存復(fù)雜得多

2012年12月12日MachineStructure

CPU的基本部件

親CPU究竟需要哪些部件?

CPU的工作:執(zhí)行程序(program)

程序:一系列的指令(instruction)

?指令:對一個或多個數(shù)進(jìn)行某個操作

讓工作的第

②二0CPU

告訴它操作和操作

數(shù)的信息

CPU只認(rèn)識二進(jìn)制數(shù)

操作數(shù)操作

(operand)(operator)把指令編碼成二進(jìn)

制數(shù)

2012年12月12日MachineStructure3

1,

CPU的基本部件

*指令編碼

編碼操作

餅常用操作個數(shù):20-30個

用4.5位二進(jìn)制數(shù)即可編碼

2012年12月12日MachineStructure4

CPU的基本部件

*指令編碼

編碼操作數(shù)

?操作數(shù)存儲在內(nèi)存中

*內(nèi)存用地址索引

分用地址編碼操作數(shù)?.

32位平臺,地址一般是32位.

?3操作數(shù)指令的話,地址要32*3二96位!

?現(xiàn)代內(nèi)存相對于現(xiàn)代CPU的速度來說也太慢了

玲把操作數(shù)放到快而小的存儲空間

玲指令中只編碼一個地址

2012年12月12日MachineStructure

CPU的基本部件

*指令編碼

編碼操作數(shù)

標(biāo)操作數(shù)放在哪里?

.比較小,可以用很短的地址編碼

?非???,和CPU的計算速度相當(dāng)

?要快,就要??!

少寄存器(register)

2012年12月12日MachineStructure6

CPU的基本部件

*指令編碼

寄存器(register)

?CPU中存放操作數(shù)的空間

內(nèi)存

?小:一般不超過32個

??快:一般一個CPU周期可訪問多次(2到10多次)

I編碼操作數(shù)

?編碼寄存器的地址

?32個寄存器須用5位二進(jìn)制編碼,3個操作數(shù)需要

3*5二15位二進(jìn)制數(shù)

2012年12月12日MachineStructure

CPU的基本部件

*指令編碼

寄存器中的數(shù)從何而來?

數(shù)據(jù)總是存儲在內(nèi)存中的少數(shù)據(jù)必須從內(nèi)存讀

內(nèi)存訪問指令:只編碼一個地址

?RISC類CPU甚至只編碼半個地址,一個32位地址須

由兩條指令裝載到寄存器并拼接而成

CPU需要內(nèi)存訪問單元(memoryunit)

內(nèi)存

2012年12月12日MachineStructure8

CPU的基本部件

警指令所指定的操作需要執(zhí)行

CPU需要有執(zhí)行部件

不同功能的執(zhí)行部件有不同的名字

?ALU:算術(shù)邏輯單元(執(zhí)行整數(shù)算術(shù)邏輯運算)

?FPU:浮點單元(執(zhí)行浮點運算)

為何ALU/FPU要接到MU上?

CPU

ALU1.CISC類CPU允許指令使

燒用內(nèi)存操作數(shù)

MU2,現(xiàn)代CPU為優(yōu)化執(zhí)行速

度而這么設(shè)計

2012年12月12日MachineStructure(

CPU的基本部件

*指令也必須從內(nèi)存中讀取

存儲程序今取指部件(instructionfetch)

IF要讀內(nèi)存,連上MU?

9較老的CPU是這么設(shè)計的

少較新的CPU其MU被分裂

成多個部件以提高速度

2012年12月12日MachineStructure10

CPU的基本部件

弟指令從哪個內(nèi)存單元取?

IP/PC

InstructionPointer,ProgramCounter

ALU

寄每次取到指令后,IP/PC自動加

FPU

存適當(dāng)?shù)闹抵赶蛳乱粭l指令

少分支指令怎么辦?

2012年12月12日

11

MachineStructure

CPU的基本部件

槃控制器(ControlUnit)

控制指令執(zhí)行過程,協(xié)調(diào)各部件工作

CPUALU

寄FPU

CPU核心邏輯,

最難設(shè)計的部分。

IF

CU

PC設(shè)計優(yōu)劣直接影

響CPU的性能。

2012年12月12日MachineStructure12

指令執(zhí)行過程

警第一步:取指

把IP/PC的值交給MU

CPU

MU讀到指令給IF寄

IP/PC增加,指向下一存

條指令

2012年12月12日MachineStructure13

指令執(zhí)行過程

麋第三步:運算

執(zhí)行指令所指定的運算

42

—r3

2012年12月12日MachineStructure

指令執(zhí)行過程

?…V.

親第四步:內(nèi)存訪問

如果是要讀寫內(nèi)存的指令:讀寫內(nèi)存

如果不是?玲暫停等待一周期,或跳過

Hadd;r1,;r2jr3

2012年12月12日MachineStructure16

指令執(zhí)行過程

麋第五步:寫回

把結(jié)果寫回寄存器

2012年12月12日MachineStructure17

MlPS的指令執(zhí)行

uS」

oA

-」SA

ooJ

l_

D,trs6sO

uuEI

l①U

sL(a

uUCD

-DL

」U

+4

..:?

警簡化表示IlFtchlDcd|Exec|Mem|WB

1$

2012年12月12日MachineStructure18

程序的執(zhí)行

款程序是多條指令的序列

MachineStructure19

加速程序執(zhí)行的方法

?流水線(pipeline)

一流水線是工業(yè)化生產(chǎn)的重要概念

?極大地提高了勞動生產(chǎn)率

?也可以提高CPU部件的“勞動生產(chǎn)率”

流水線為什么有效?

指令執(zhí)行各步驟占用的部件不同

玲如果各步驟串行進(jìn)行,則大部分部件在大部

分時間都空閑

少各步驟并行,讓各部件都忙起來

2012年12月12日MachineStructure20

加速指令執(zhí)行的方法

*指令執(zhí)行各步驟部件占用情況

第一步:取指

*IP/PC,MU,IF

>第二步:譯碼

?寄存器

赧第三步:運算

?ALU/FPU

第四步:內(nèi)存訪問

,MU

第五步:寫回

?寄存器

2012年12月12日MachineStructure21

加速指令執(zhí)行的方法

一條指令執(zhí)行中占用資源情況

第一條指令開始譯碼的時候,取指的資源已經(jīng)空閑

9此時已經(jīng)可以開始取第二條指令了

ALU

FPU

CU

PC

2012年12月12日MachineStructure22

加速指令執(zhí)行的方法

*指令流水線

加速指令執(zhí)行的方法

警周期(cycle)

指令執(zhí)行一步所需要的時間

要使用流水線技術(shù),各不同步驟的執(zhí)行時間必須

相同:都是一周期

在同一個周期,有多條指令在流水線中

每條指令在不同的執(zhí)行步驟,占用不同的部件

2012年12月12日MachineStructure24

加速指令執(zhí)行的方法

警流水線的性能

例:執(zhí)行10條指令,每指令5步驟,每步驟

一周期

少不用流水線:5*10=50周期

個5級流水線:10+(5-1)=14周期

加速比:50/14=3.57

?流水線的理論最高加速比二級數(shù)

?指令數(shù)越多,加速比越高

?無限多條指令分加速比二級數(shù)

?一條指令??f加速比為1f不能加速!

2012年12月12日MachineStructure25

加速指令執(zhí)行的方法

桑流水線的性能

指令的延遲(latency)

事執(zhí)行一條指令所需時間

*流水線不能減少單條指令的延遲

?流水線可以減少程序的延遲

指令的產(chǎn)出(throughput)

?單位時間內(nèi)系統(tǒng)處理的指令數(shù)

流水線可以增加指令的產(chǎn)出

2012年12月12日MachineStructure26

加速指令執(zhí)行的方法

麋流水線問題

結(jié)構(gòu)競爭:同一個周期使用相同的部件

?1.內(nèi)存訪問競爭

1$D$

1$

1$

2012年12月12日MachineStructure27

加速指令執(zhí)行的方法

*內(nèi)存訪問競爭存ALU

器FPU

在同一個周期,需要

同時讀取數(shù)據(jù)和指令

少用兩個不同的內(nèi)存:

DSP、嵌入式CPU等

玲用兩個高速緩存

(cache):通用CPU

L2Cache

CPU控制核心

設(shè)計難點rwi

內(nèi)存

2012年12月12日MachineStructure28

存ALU

親寄存器訪問競爭器

FPU

給寄存器加高速緩存?

,不現(xiàn)實

Load/StoreIF

寄存器非常快PCcu

.單個周期可以完成一次讀

和一次寫

分前半個周期寫,后半個周D-Cachel-Cache

期讀

3為何寫在前?

?寫操作是在前面的指令L2Cache

執(zhí)行的

?寄存器很小MU

?可以做多個讀端口內(nèi)存

2012年12月12日MachineStructure30

機(jī)器語百與匯編語百

琳CPU只能識別二進(jìn)制數(shù)

把指令編碼成二進(jìn)制數(shù)

編碼操作、操作數(shù)和其它信息

?機(jī)器語言

2012年12月12日MachineStructure31

機(jī)器語言與匯編語言

警MIPS的機(jī)器語言例

32位

655556

opcodersrtrdshamtfunct

opcode:操作碼funct:操作碼第二部分

rs:SourceRegisterrt:TargetRegister

rd:DestinationRegistershamt:移位位數(shù)

2012年12月12日MachineStructure32

機(jī)器語百與匯編語百

?MIPS的機(jī)器語言例

add$8,$9,$10

opcode二0(查表)

funct二32(查表)

(操作數(shù)1)|

rs二9

rt二10(操作數(shù)2)

rd二8(目的操作數(shù))

shamt二0(非移位指令)

2012年12月12日MachineStructure33

機(jī)器語言與匯編語言

警MIPS的機(jī)器語言例

add$8,$9,$10

十進(jìn)制表示:

二進(jìn)制表示:

OOOOOO01001010100100000000100000

機(jī)器語言指令

MIPS還有其它格式的指令

2012年12月12日MachineStructure

機(jī)器語后與匯編語后

警機(jī)器語言適合CPU使用,但不適合程序員

人類對長串的數(shù)字不敏感

?但對符號敏感

玲用符號表示指令的各種信息

?北二編語言

2012年12月12日MachineStructure35

機(jī)器語后與匯編語后

親匯編語言(assembly)

機(jī)器指令與匯編指令一一對應(yīng)

9在機(jī)器語言需要讓人看的時候,常常實際使用

匯編語言4

;使用與機(jī)器語言相同的概念

)?操作,操作數(shù),……

*允許使用名字來索引變量

?比地址方便得多

2012年12月12日MachineStructure36

機(jī)器語言與匯編語言

橐MIPS的匯編語言

操作操作數(shù)(寄存器)

add$8,$9,$10

II

add$0~$31(32個寄存器)

sub

beq

2012年12月12日MachineStructure37

機(jī)器語后與匯編語后

親匯編語言程序設(shè)計

f用匯編語言寫程序

*可以有最高的效率(如果程序員合格)

比之機(jī)器語言前進(jìn)了一大步

T,被稱為第二代程序設(shè)計語言

*問題

?機(jī)器指令相對簡單

?程序員希望用較復(fù)雜的表達(dá)式I

?與硬件相關(guān)

?移植到不同的CPU非常不方便

2012年12月12日MachineStructure38

程序語言

槃什么力是適合程序設(shè)計的語言?

接近人類的思維特性

?看起來象人類語言

?分學(xué)習(xí)較容易

機(jī)器無關(guān)

少同一個程序可以在不同硬件運行

少無需學(xué)習(xí)機(jī)器相關(guān)內(nèi)容

.如果不關(guān)注最佳性能的話

程序語言

2012年12月12日MachineStructure39

程序語言

?計算機(jī)如何執(zhí)行程序語言程序?

解釋(interpret)

*逐條讀取程序語句并立即執(zhí)行

橐各種script:.bat,.vbs,.js,.py,

由解釋器處理(interpreter)

翻譯(translate)

*把程序語言程序翻譯成機(jī)器程序■

C/C++,FORTRAN,Pascal,..

?由編譯器處理(Compiler)I

?為何一1般不叫translator?

?不僅僅是翻譯的工作

2012年12月12日MachineStructure40

程序語后

親為何解釋和編譯都存在?

<各有優(yōu)缺點

解釋

無需專門開發(fā)工具,易于擴(kuò)充,靈活性大,升級

解釋器就可以改善所有已有程序

?執(zhí)行效率低I

編譯.JI

?執(zhí)行效率IRJ

開發(fā)較復(fù)雜,不便擴(kuò)充,編譯程序升級后所有現(xiàn)

有程序必須重新編譯才能得到更新

2012年12月12日MachineStructure41

程序語言

槃程序語言設(shè)計原則

盡可能接近人的思維習(xí)慣

*為何不用自然語言?

玲目前的計算機(jī)軟硬件平臺還不能很好地理解自

然語言

少程序語言是機(jī)器思維與人類思維之間的折衷

機(jī)器思維人類思維

機(jī)器語言匯編語言程序語言自然語言

2012年12月12日MachineStructure42

程序語言

槃程序語言設(shè)計原則

越接近自然語言

更容易被程序員使用,更容易學(xué)習(xí),程序設(shè)計效

率高

更遠(yuǎn)離計算機(jī)設(shè)計原理,更難以被計算機(jī)有效處

卜理,執(zhí)行效率低

?越接近機(jī)器語言

事更容易被計算機(jī)處理,執(zhí)行效率高

更難使用,程序設(shè)計效率低

2012年12月12日MachineStructure43

程序語言

槃早期程序語言

強(qiáng)調(diào)執(zhí)行效率

?一次設(shè)計,多次運行

運行時間遠(yuǎn)多于設(shè)計時間

?機(jī)器慢、少,任務(wù)多

?程序少,一般由專業(yè)人員設(shè)計

?FORTRAN

?很容易被翻譯成高效率的機(jī)器程序

?不太容易使用

2012年12月12日MachineStructure44

程序語言

*現(xiàn)代程序語言

有側(cè)重各方面因素的語言

現(xiàn)代計算機(jī)已經(jīng)非???,對很多任務(wù)已經(jīng)可以不

考慮執(zhí)行效率■

少程序語言可以考慮其它方面的因素

.設(shè)計效率,可移植性,……

■?各種面向?qū)ο蟪绦蛘Z言,Java,...

?現(xiàn)代軟件技術(shù)可以兼顧多個因素

?較大范圍內(nèi)都適用的程序語言及其開發(fā)工具

?結(jié)合C++的-些開發(fā)工具

2012年12月12日MachineStructure45

程序語后

警程序語言對計算機(jī)設(shè)計思想的影響

程序語言出現(xiàn)后,迅速替代匯編語言成為程

序設(shè)計的主要語言

■令計算機(jī)必須針對程序語言優(yōu)化?!

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

SetComputer)

?復(fù)雜的指令:盡量向程序語言的語句靠攏,I

?完備的指令:盡量實現(xiàn)程序語言使用的所有語句

?正父指令集

少編譯優(yōu)化技術(shù)尚不完善,不能很好優(yōu)化程序

少主要用硬件設(shè)計填補(bǔ)程序語言和硬件間的差異

2012年12月12日MachineStructure46

程序語言

*程序語言對計算機(jī)設(shè)計思想的影響

精簡指令集(RISC:ReducedInstruction

SetComputer)

只實現(xiàn)少數(shù)必須的指令,利用編譯優(yōu)化技術(shù)生成

優(yōu)化的程序、

?指令數(shù)量少,簡單,可以編碼成等長格式

?3可以實現(xiàn)得非???/p>

玲主要用編譯器填補(bǔ)程序語言和硬件間的差異

2012年12月12日MachineStructure47

程序語言

?RISCvs.CISC結(jié)果

RISC支持者開發(fā)了大量的優(yōu)化指令執(zhí)行速度

的技術(shù)

高速緩存,深度流水線,分支預(yù)測,寄存器重命

名,超標(biāo)量,亂序執(zhí)行……

RISC支持者開發(fā)了大量的編譯優(yōu)化技術(shù)

循環(huán)展開,軟件流水,相關(guān)分析……

CISC支持者把這些技術(shù)都用上了

“偽CISC”:不再以指令集為目標(biāo)

x86依靠“事實上的工業(yè)標(biāo)準(zhǔn)”獲得了空前成功

2012年12月12日MachineStructure48

程序語言

麋現(xiàn)代計算機(jī)開發(fā)模式

馨軟件和硬件結(jié)合考慮

同時設(shè)計硬件和編譯器,并照顧操作系統(tǒng)的

需要

研Q究熱點:指令級并行j|I

程序語言改變了整個計算機(jī)產(chǎn)業(yè)

?2012年12月12日Structure

程序語言

集程序語言類型

說明型(例:Prolog)

程序員描述程序的問題本身,而不是解決問題的

算法

I?對簡單的問題:描述問題本身比算法更麻煩,

?對復(fù)雜的問題:現(xiàn)有硬件必須要用特定的算法才能解

決,通用解決算法難以勝任

說明型程序語言只在較窄的范圍使用

2012年12月12日MachineStructure50

程序語言要素

?語句(statement)

r構(gòu)成程序的原子

聲明語句(declarativestatement)

程序的規(guī)格說明:數(shù)據(jù)類型,參數(shù),..

命令語句(imperativestatement)

橐程序的算法說明

注釋(comment)

2012年12月12日MachineStructure52

程序語言要素

?變量(variable)與數(shù)據(jù)類型(type)

變量:在程序執(zhí)行過程中可以改變的量

?用于存儲各類信息

事是對內(nèi)存的抽象

用名索引,不必使用地址索引

暴有類型

?不同類型有不同的運算

?不兼容類型之間不能進(jìn)行運算

?例:float*string

2012年12月12日MachineStructure53

程序語言要素

款基本數(shù)據(jù)類型(primitivedatatype)

編譯器缺省支持的數(shù)據(jù)類型

intfloatchar...

某些語言還有string

奈數(shù)據(jù)結(jié)構(gòu)(datastructure)

*由基本數(shù)據(jù)類型組成的有結(jié)構(gòu)的數(shù)據(jù)類型

?數(shù)組(array)

結(jié)構(gòu)(structure)

2012年12月12日MachineStructure54

程序語言要素

?數(shù)組(array)

.一系列相同類型的數(shù)據(jù)

定義

intRooms[10];

引用

Rooms[0101;

MyRoomRooms[5];

2012年12月12日MachineStructure55

程序語言要素

?結(jié)構(gòu)(structure)

馨由不同類型的數(shù)據(jù)組成的數(shù)據(jù)類型

一*又叫異構(gòu)數(shù)組(heterogeneousarray)

structTZoomlnfo

intID;合理劃分程序的所有

floatw,h;數(shù)據(jù)為恰當(dāng)?shù)慕Y(jié)構(gòu)會

極大簡化程序設(shè)計

TZoomlnfoMyZoom;

MyZoom.lD=110;

2012年12月12日MachineStructure56

程序語言要素

?字面量(literal)

在程序語言中,其值等于其文字串的本來含

義的量—

?與變量相對:表示變量的文字串是其名字,其值

和名字無關(guān),在程序中還可以改變

例:整數(shù)650,字符串〃Smith"

常量(constant)

嫌給字面量的名字

constintRoomNo=517;

2012年12月12日MachineStructure57

程序語言要素

警運算

處理數(shù)據(jù)所需要的操作

四則運算+-*/

邏輯運算&&|!!■

關(guān)系運算==!=><>=<=

?位運算&

計算機(jī)硬件特有的運算,但在很多算法中有很大

的用處,所以很多程序語言都有

2012年12月12日MachineStructure58

程序語言要素

親運算

賦值運算=

一把一個表達(dá)式的值賦給某個變量

注意與相等關(guān)系的區(qū)別

??=才是相等關(guān)系運算■

事與數(shù)學(xué)上使用的二有所不同

?某些語言使用不同的符號

?Pascal:=

?APLQ

2012年12月12日MachineStructure

程序語言要素

槃控缶I結(jié)構(gòu)

程序有各種不同的執(zhí)行順序

順序(sequence)

分支(branch)

循環(huán)(loop)

必須有不同的控制語句(controlstatement)

if(…)switch(...)for

case1:}

else

case2:

2012年12月12日MachineStructure60

程序語言要素

?過程(procedure)與函數(shù)(function)

人類解決復(fù)雜問題的方法:分治(divide&

conquer)

分解成多個較小的問題,然后逐一解決,最后把

小問題的解拼接成大問題的解

少程序語言也必須有類似的功能

?過程與函數(shù),

程序語言中非常重要的概念,極大地方便了程序

設(shè)計

2012年12月12日MachineStructure61

程序語言要素

程序過程/函數(shù)

警過程與函數(shù)

把程序總的任務(wù)分解成多個

/[、的部分,然后逐一解決每

個小問題,再把小問題的解

?拼接

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論