早期:存储程序、运算器为中心、集中控制。
现代:存储程序、存储器为中心,总线结构、分散控制。
电子管->晶体管->小规模集成电路(SSI)->大规模集成电路(LSI)->超大规模集成电路(VLSI)。
(1)非用户片:功能由制造厂商生产时确定。如逻辑类的门、触发器、寄存器、计数器、加法器;存储类的ROM。
(2)现场片:用户可在机器组装现场设定内容。如PROM、EPROM、FPLA。
(2.5)半用户片:用户可根据自己需求烧结成用户片,如PAL、GAL。
(3)用户片:完全按用户要求定制。
以上从上到下,生产性价比变大、设计成本变高。
(1)提高主频,(2)改进系统结构。主要是(2)的效应好。
数据处理、信息处理、知识处理、智能处理。
(0)硬联逻辑
(1)微程序控制(微指令由硬件直接执行)
(2)机器指令系统
(3)操作系统
(4)汇编程序
(5)高级语言编译或解释程序
(6)应用程序
(7)应用系统算法和数学模型
A对B透明,即B感觉不到A的存在。
不妨分个级,越往底层不透明的东西越多。画张图记录一下规则:
表格中绿色位置的事物,对蓝色位置的人员都不透明,对橙色位置的人员都透明。下面是具体表格:
人员类别 | 从该类人员,包括该人员及以下就已经不透明的东西 |
---|---|
应用程序员 | - |
高级语言程序员 | - |
汇编语言程序员 | 数据表示、运算指令、通用寄存器、条件码、中断字 |
机器语言程序员 | |
系统程序员 | 存储器容量、总线宽度、微程序、虚存 |
硬件设计和高级维修人员 | 主存地址寄存器、指令缓冲寄存器、cache、数据通路 |
对机器语言计算机的软、硬件功能分配和对界面的定义。
由程序设计者所看到的一个计算机系统的属性,即概念性结构和功能特性。
计算机组成:计算机系统结构的逻辑实现。
计算机实现:计算机系统结构的物理实现。
具有相同的系统结构,但组成和实现技术不同的一系列计算机。
向上兼容(尽量):低档机器的机器语言级程序不加修饰运行在高档机器。
向下兼容:高档机器的机器语言级程序不加修饰运行在低档机器。
向后兼容(必须):系列机内,旧上市的机器的机器语言级程序不加修饰运行在新上市的机器。
向前兼容:系列机内,新上市的机器的机器语言级程序不加修饰运行在旧上市的机器。
模拟:用机器语言程序(2层级)解释实现程序移植的方法。A上模拟B,则A为宿主机,B称虚拟机。
仿真:用微程序(1层级)去解释另一机器指令实现程序移植的方法。A上仿真B,则A为宿主机,B称目标机。
模拟慢但通用。适合运行时间短,使用次数少的程序。
仿真快但限制多。适合系统结构差距小,不需I/O和存储系统的机器间。
硬件单机上价格:
加快经常性事件的速度,即加速使用频率较高的事件的速度。
系统中某部件速度加快后,整个系统性能的提高与其使用频率和占总执行事件的比例有关。我认为Amdahl定律非常片面,但是用在考察程序的执行速度上却非常合适。
一些需要知道的量:
引入每条指令所需的平均时钟周期数CPI的倒数——每个时钟周期平均能执行的指令数IPC。
则可以用 ∗IPS ∗ I P S 如 MIPS M I P S 、 GIPS G I P S 、 TIPS T I P S 表达指令执行速度,即每秒能执行的指令数,第一位数字仅仅代表单位,显然:
自上而下:适合专用计算机的设计。
自下而上:完全是早期计算机的设计。
从中间向上下(目前比较好的方法):
指令流:机器执行的指令序列。
数据流:由指令调用的数据序列。
多倍性:在系统受限的部件上,同时处于统一执行阶段的指令或数据的最大个数。
(1)单指令流单数据流(SISD):指令部件一次只对一条指令进行译码,并且只对一个执行部件分配数据。
SISD如IBM360。
(2)单指令流多数据流(SIMD):所有处理单元PU接受从控制部件CU传来的同一条指令,但操作对象却是不同数据流的数据组。
SIMD如并行处理机(阵列处理机)、相联处理机。
(3)多指令流单数据流(MISD):每个PU接收不同的指令,往往来自不同CU,操作的却是同一个数据流及其派生数据流,每个处理器的输出结果是下一处理器的输入。目前没有实际机器是MISD的。
(4)多指令流多数据流(MIMD):n个处理机之间相互作用,所有数据流均来源于由全体处理机共享的一个数据空间(紧密耦合),也可以来源于共享存储器的不相邻子空间(松散耦合,或称MSISD)。
紧密耦合MIMD如IBM3081/3084,松散耦合MIMD如D-825,Cmmp,CRAY-2。
最大并行度:计算机系统在单位时间内理应能处理的最大的二进制位数。
平均并行度:对多个时钟周期内能处理的二进制位数 Pi P i 的观测。
平均利用率:因为 Pm P m 是理论上的, Pa P a 是测出来的,这个值实际上就是反映了现实于理论的比例。