计算机器-图灵机 - DRIVEHQ_第1页
计算机器-图灵机 - DRIVEHQ_第2页
计算机器-图灵机 - DRIVEHQ_第3页
计算机器-图灵机 - DRIVEHQ_第4页
计算机器-图灵机 - DRIVEHQ_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CPU的基本部件CPU

*计算机的基本模型有两个部件

内存

・存储需要处理的数据

.存储处理好的数据.I

♦存储程序内存

CPU

执行存储在内存中的程序,把需要

处理的数据变换成所期望的新格式

或内容(处理好的数据)

结构比内存复杂得多

2012年12月12日MachineStructure

CPU的基本部件

亲CPU究竟需要哪些部件?

CPU的工作:执行程序(program)

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

•指令:对一个或多个数进行某个操作

让工作的第

②二0CPU

告诉它操作和操作

数的信息

CPU只认识二进制数

操作数操作

(operand)(operator)把指令编码成二进

制数

2012年12月12日MachineStructure3

1,

CPU的基本部件

*指令编码

编码操作

饼常用操作个数:20-30个

用4.5位二进制数即可编码

2012年12月12日MachineStructure4

CPU的基本部件

*指令编码

编码操作数

♦操作数存储在内存中

*内存用地址索引

分用地址编码操作数?.

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

•3操作数指令的话,地址要32*3二96位!

•现代内存相对于现代CPU的速度来说也太慢了

玲把操作数放到快而小的存储空间

玲指令中只编码一个地址

2012年12月12日MachineStructure

CPU的基本部件

*指令编码

编码操作数

标操作数放在哪里?

.比较小,可以用很短的地址编码

•非常快,和CPU的计算速度相当

•要快,就要小!

少寄存器(register)

2012年12月12日MachineStructure6

CPU的基本部件

*指令编码

寄存器(register)

♦CPU中存放操作数的空间

内存

♦小:一般不超过32个

••快:一般一个CPU周期可访问多次(2到10多次)

I编码操作数

♦编码寄存器的地址

•32个寄存器须用5位二进制编码,3个操作数需要

3*5二15位二进制数

2012年12月12日MachineStructure

CPU的基本部件

*指令编码

寄存器中的数从何而来?

数据总是存储在内存中的少数据必须从内存读

内存访问指令:只编码一个地址

•RISC类CPU甚至只编码半个地址,一个32位地址须

由两条指令装载到寄存器并拼接而成

CPU需要内存访问单元(memoryunit)

内存

2012年12月12日MachineStructure8

CPU的基本部件

警指令所指定的操作需要执行

CPU需要有执行部件

不同功能的执行部件有不同的名字

•ALU:算术逻辑单元(执行整数算术逻辑运算)

•FPU:浮点单元(执行浮点运算)

为何ALU/FPU要接到MU上?

CPU

ALU1.CISC类CPU允许指令使

烧用内存操作数

MU2,现代CPU为优化执行速

度而这么设计

2012年12月12日MachineStructure(

CPU的基本部件

*指令也必须从内存中读取

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

IF要读内存,连上MU?

9较老的CPU是这么设计的

少较新的CPU其MU被分裂

成多个部件以提高速度

2012年12月12日MachineStructure10

CPU的基本部件

弟指令从哪个内存单元取?

IP/PC

InstructionPointer,ProgramCounter

ALU

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

FPU

存适当的值指向下一条指令

少分支指令怎么办?

2012年12月12日

11

MachineStructure

CPU的基本部件

槃控制器(ControlUnit)

控制指令执行过程,协调各部件工作

CPUALU

寄FPU

CPU核心逻辑,

最难设计的部分。

IF

CU

PC设计优劣直接影

响CPU的性能。

2012年12月12日MachineStructure12

指令执行过程

警第一步:取指

把IP/PC的值交给MU

CPU

MU读到指令给IF寄

IP/PC增加,指向下一存

条指令

2012年12月12日MachineStructure13

指令执行过程

麋第三步:运算

执行指令所指定的运算

42

—r3

2012年12月12日MachineStructure

指令执行过程

・…V.

亲第四步:内存访问

如果是要读写内存的指令:读写内存

如果不是?玲暂停等待一周期,或跳过

Hadd;r1,;r2jr3

2012年12月12日MachineStructure16

指令执行过程

麋第五步:写回

把结果写回寄存器

2012年12月12日MachineStructure17

MlPS的指令执行

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

程序的执行

款程序是多条指令的序列

MachineStructure19

加速程序执行的方法

♦流水线(pipeline)

一流水线是工业化生产的重要概念

・极大地提高了劳动生产率

•也可以提高CPU部件的“劳动生产率”

流水线为什么有效?

指令执行各步骤占用的部件不同

玲如果各步骤串行进行,则大部分部件在大部

分时间都空闲

少各步骤并行,让各部件都忙起来

2012年12月12日MachineStructure20

加速指令执行的方法

*指令执行各步骤部件占用情况

第一步:取指

*IP/PC,MU,IF

>第二步:译码

•寄存器

赧第三步:运算

•ALU/FPU

第四步:内存访问

,MU

第五步:写回

•寄存器

2012年12月12日MachineStructure21

加速指令执行的方法

一条指令执行中占用资源情况

第一条指令开始译码的时候,取指的资源已经空闲

9此时已经可以开始取第二条指令了

ALU

FPU

CU

PC

2012年12月12日MachineStructure22

加速指令执行的方法

*指令流水线

加速指令执行的方法

警周期(cycle)

指令执行一步所需要的时间

要使用流水线技术,各不同步骤的执行时间必须

相同:都是一周期

在同一个周期,有多条指令在流水线中

每条指令在不同的执行步骤,占用不同的部件

2012年12月12日MachineStructure24

加速指令执行的方法

警流水线的性能

例:执行10条指令,每指令5步骤,每步骤

一周期

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

个5级流水线:10+(5-1)=14周期

加速比:50/14=3.57

•流水线的理论最高加速比二级数

•指令数越多,加速比越高

・无限多条指令分加速比二级数

•一条指令??f加速比为1f不能加速!

2012年12月12日MachineStructure25

加速指令执行的方法

桑流水线的性能

指令的延迟(latency)

事执行一条指令所需时间

*流水线不能减少单条指令的延迟

•流水线可以减少程序的延迟

指令的产出(throughput)

♦单位时间内系统处理的指令数

流水线可以增加指令的产出

2012年12月12日MachineStructure26

加速指令执行的方法

麋流水线问题

结构竞争:同一个周期使用相同的部件

•1.内存访问竞争

1$D$

1$

1$

2012年12月12日MachineStructure27

加速指令执行的方法

*内存访问竞争存ALU

器FPU

在同一个周期,需要

同时读取数据和指令

少用两个不同的内存:

DSP、嵌入式CPU等

玲用两个高速缓存

(cache):通用CPU

L2Cache

CPU控制核心

设计难点rwi

内存

2012年12月12日MachineStructure28

存ALU

亲寄存器访问竞争器

FPU

给寄存器加高速缓存?

,不现实

Load/StoreIF

寄存器非常快PCcu

.单个周期可以完成一次读

和一次写

分前半个周期写,后半个周D-Cachel-Cache

期读

3为何写在前?

•写操作是在前面的指令L2Cache

执行的

♦寄存器很小MU

•可以做多个读端口内存

2012年12月12日MachineStructure30

机器语百与汇编语百

琳CPU只能识别二进制数

把指令编码成二进制数

编码操作、操作数和其它信息

•机器语言

2012年12月12日MachineStructure31

机器语言与汇编语言

警MIPS的机器语言例

32位

655556

opcodersrtrdshamtfunct

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

rs:SourceRegisterrt:TargetRegister

rd:DestinationRegistershamt:移位位数

2012年12月12日MachineStructure32

机器语百与汇编语百

♦MIPS的机器语言例

add$8,$9,$10

opcode二0(查表)

funct二32(查表)

(操作数1)|

rs二9

rt二10(操作数2)

rd二8(目的操作数)

shamt二0(非移位指令)

2012年12月12日MachineStructure33

机器语言与汇编语言

警MIPS的机器语言例

add$8,$9,$10

十进制表示:

二进制表示:

OOOOOO01001010100100000000100000

机器语言指令

MIPS还有其它格式的指令

2012年12月12日MachineStructure

机器语后与汇编语后

警机器语言适合CPU使用,但不适合程序员

人类对长串的数字不敏感

♦但对符号敏感

玲用符号表示指令的各种信息

♦北二编语言

2012年12月12日MachineStructure35

机器语后与汇编语后

亲汇编语言(assembly)

机器指令与汇编指令一一对应

9在机器语言需要让人看的时候,常常实际使用

汇编语言4

;使用与机器语言相同的概念

)♦操作,操作数,……

*允许使用名字来索引变量

♦比地址方便得多

2012年12月12日MachineStructure36

机器语言与汇编语言

橐MIPS的汇编语言

操作操作数(寄存器)

add$8,$9,$10

II

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

sub

beq

2012年12月12日MachineStructure37

机器语后与汇编语后

亲汇编语言程序设计

f用汇编语言写程序

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

比之机器语言前进了一大步

T,被称为第二代程序设计语言

*问题

♦机器指令相对简单

•程序员希望用较复杂的表达式I

♦与硬件相关

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

2012年12月12日MachineStructure38

程序语言

槃什么力是适合程序设计的语言?

接近人类的思维特性

♦看起来象人类语言

♦分学习较容易

机器无关

少同一个程序可以在不同硬件运行

少无需学习机器相关内容

.如果不关注最佳性能的话

程序语言

2012年12月12日MachineStructure39

程序语言

♦计算机如何执行程序语言程序?

解释(interpret)

*逐条读取程序语句并立即执行

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

由解释器处理(interpreter)

翻译(translate)

*把程序语言程序翻译成机器程序■

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

♦由编译器处理(Compiler)I

•为何一1般不叫translator?

•不仅仅是翻译的工作

2012年12月12日MachineStructure40

程序语后

亲为何解释和编译都存在?

<各有优缺点

解释

无需专门开发工具,易于扩充,灵活性大,升级

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

♦执行效率低I

编译.JI

♦执行效率IRJ

开发较复杂,不便扩充,编译程序升级后所有现

有程序必须重新编译才能得到更新

2012年12月12日MachineStructure41

程序语言

槃程序语言设计原则

尽可能接近人的思维习惯

*为何不用自然语言?

玲目前的计算机软硬件平台还不能很好地理解自

然语言

少程序语言是机器思维与人类思维之间的折衷

机器思维人类思维

机器语言汇编语言程序语言自然语言

2012年12月12日MachineStructure42

程序语言

槃程序语言设计原则

越接近自然语言

更容易被程序员使用,更容易学习,程序设计效

率高

更远离计算机设计原理,更难以被计算机有效处

卜理,执行效率低

♦越接近机器语言

事更容易被计算机处理,执行效率高

更难使用,程序设计效率低

2012年12月12日MachineStructure43

程序语言

槃早期程序语言

强调执行效率

•一次设计,多次运行

运行时间远多于设计时间

•机器慢、少,任务多

•程序少,一般由专业人员设计

»FORTRAN

•很容易被翻译成高效率的机器程序

•不太容易使用

2012年12月12日MachineStructure44

程序语言

*现代程序语言

有侧重各方面因素的语言

现代计算机已经非常快,对很多任务已经可以不

考虑执行效率■

少程序语言可以考虑其它方面的因素

.设计效率,可移植性,……

■•各种面向对象程序语言,Java,...

♦现代软件技术可以兼顾多个因素

•较大范围内都适用的程序语言及其开发工具

•结合C++的-些开发工具

2012年12月12日MachineStructure45

程序语后

警程序语言对计算机设计思想的影响

程序语言出现后,迅速替代汇编语言成为程

序设计的主要语言

■令计算机必须针对程序语言优化?!

复杂指令集计算机(CISC:ComplexInstruction

SetComputer)

•复杂的指令:尽量向程序语言的语句靠拢,I

•完备的指令:尽量实现程序语言使用的所有语句

•正父指令集

少编译优化技术尚不完善,不能很好优化程序

少主要用硬件设计填补程序语言和硬件间的差异

2012年12月12日MachineStructure46

程序语言

*程序语言对计算机设计思想的影响

精简指令集(RISC:ReducedInstruction

SetComputer)

只实现少数必须的指令,利用编译优化技术生成

优化的程序、

•指令数量少,简单,可以编码成等长格式

•3可以实现得非常快

玲主要用编译器填补程序语言和硬件间的差异

2012年12月12日MachineStructure47

程序语言

♦RISCvs.CISC结果

RISC支持者开发了大量的优化指令执行速度

的技术

高速缓存,深度流水线,分支预测,寄存器重命

名,超标量,乱序执行……

RISC支持者开发了大量的编译优化技术

循环展开,软件流水,相关分析……

CISC支持者把这些技术都用上了

“伪CISC”:不再以指令集为目标

x86依靠“事实上的工业标准”获得了空前成功

2012年12月12日MachineStructure48

程序语言

麋现代计算机开发模式

馨软件和硬件结合考虑

同时设计硬件和编译器,并照顾操作系统的

需要

研Q究热点:指令级并行j|I

程序语言改变了整个计算机产业

।2012年12月12日Structure

程序语言

集程序语言类型

说明型(例:Prolog)

程序员描述程序的问题本身,而不是解决问题的

算法

I•对简单的问题:描述问题本身比算法更麻烦,

•对复杂的问题:现有硬件必须要用特定的算法才能解

决,通用解决算法难以胜任

说明型程序语言只在较窄的范围使用

2012年12月12日MachineStructure50

程序语言要素

♦语句(statement)

r构成程序的原子

声明语句(declarativestatement)

程序的规格说明:数据类型,参数,..

命令语句(imperativestatement)

橐程序的算法说明

注释(comment)

2012年12月12日MachineStructure52

程序语言要素

♦变量(variable)与数据类型(type)

变量:在程序执行过程中可以改变的量

・用于存储各类信息

事是对内存的抽象

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

暴有类型

•不同类型有不同的运算

•不兼容类型之间不能进行运算

•例:float*string

2012年12月12日MachineStructure53

程序语言要素

款基本数据类型(primitivedatatype)

编译器缺省支持的数据类型

intfloatchar...

某些语言还有string

奈数据结构(datastructure)

*由基本数据类型组成的有结构的数据类型

♦数组(array)

结构(structure)

2012年12月12日MachineStructure54

程序语言要素

♦数组(array)

.一系列相同类型的数据

定义

intRooms[10];

引用

Rooms[0101;

MyRoomRooms[5];

2012年12月12日MachineStructure55

程序语言要素

♦结构(structure)

馨由不同类型的数据组成的数据类型

一*又叫异构数组(heterogeneousarray)

structTZoomlnfo

intID;合理划分程序的所有

floatw,h;数据为恰当的结构会

极大简化程序设计

TZoomlnfoMyZoom;

MyZoom.lD=110;

2012年12月12日MachineStructure56

程序语言要素

♦字面量(literal)

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

义的量—

•与变量相对:表示变量的文字串是其名字,其值

和名字无关,在程序中还可以改变

例:整数650,字符串〃Smith"

常量(constant)

嫌给字面量的名字

constintRoomNo=517;

2012年12月12日MachineStructure57

程序语言要素

警运算

处理数据所需要的操作

四则运算+-*/

逻辑运算&&|!!■

关系运算==!=><>=<=

♦位运算&

计算机硬件特有的运算,但在很多算法中有很大

的用处,所以很多程序语言都有

2012年12月12日MachineStructure58

程序语言要素

亲运算

赋值运算=

一把一个表达式的值赋给某个变量

注意与相等关系的区别

・•=才是相等关系运算■

事与数学上使用的二有所不同

•某些语言使用不同的符号

•Pascal:=

•APLQ

2012年12月12日MachineStructure

程序语言要素

槃控缶I结构

程序有各种不同的执行顺序

顺序(sequence)

分支(branch)

循环(loop)

必须有不同的控制语句(controlstatement)

if(…)switch(...)for

case1:}

else

case2:

2012年12月12日MachineStructure60

程序语言要素

♦过程(procedure)与函数(function)

人类解决复杂问题的方法:分治(divide&

conquer)

分解成多个较小的问题,然后逐一解决,最后把

小问题的解拼接成大问题的解

少程序语言也必须有类似的功能

•过程与函数,

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

设计

2012年12月12日MachineStructure61

程序语言要素

程序过程/函数

警过程与函数

把程序总的任务分解成多个

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

个小问题,再把小问题的解

・拼接

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论