第一代:(1946-1957)电子管时代,第一台电子数字计算机 ENIAC。
第二代:(1958-1964)晶体管时代,出现高级语言,操作系统具雏形。
第三代:(1965-1971)中小规模集成电路时代,出现分时操作系统。
第四代:(1972至今)超大规模集成电路时代,产生微处理器。
摩尔定律
每间隔18个月计算机性能提升一倍。揭示了信息技术进步的速度。
半导体存储器的发展
存储器从1970发展到现在,从KB-MB-GB,1Byte=8bit。
微处理器的发展
1971年第一个微处理器Intel4004至今Corei7,机器字长到64位,计算机进行一次整数运算所能处理的二进制数据的位数为64位。
计算机语言的发展从面向机器的机器语言和汇编语言,面向问题的高级语言。
高级语言的发展从科学计算和工程计算的FORTRAN、结构化程序设计的PASCAL到面向对象的C++和适应网络环境的JAVA。
计算机硬件和计算机软件共同构成了一个完整的计算机系统。
冯~诺依曼在研究ENVAC时提出”存储程序“的概念。存储程序的思想奠定了现代计算机的基本结构。
冯诺依曼机特点如下:
1)采用”存储程序“的工作方式;
2)计算机硬件系统由运算器、存储器、控制器、输入设备和输出设备5大部分组成;
3)指令和数据以同等地位存储在存储器中,形式上没有区别;
4)指令和数据均用二进制代码表示。指令由操作码和地址码组成,操作码指出操作的类型,地址码指出操作数的地址。
将程序和数据以机器所能识别和接受的信息形式输入计算机。
将计算机处理的结果以人们所能接受的形式或其他系统所要求的信息形式输出。
存储器又分为主存储器(又称内存)和辅助存储器(又称外存)。
CPU可以直接访问主存,辅助存储器的信息必须调入到主存后,才能被CPU访问。
按地址存取方式:
主存储器的工作方式是按存储单元的地址进行存取。
主存储器的构成:

存储体存放二进制信息,地址寄存器(MAR)存储访存地址,数据寄存器(MDR)用于暂存要从存储器中读或写的信息,时序控制逻辑用于产生存储器操作所需的各种时许信号。
存储体由很多存储单元构成,每个存储单元包含若干存储元件,每个存储元件存储一位二进制代码“0”或“1”。因此存储单元可存储一串二进制代码,称这串代码为存储字,位数为存储字长。
MAR用于寻址,其位数对应着存储单元的个数,MAR有n位,则有2n个存储单元。MAR的长度于PC的长度相同。
MDR的位数和存储字长相等。
运算器是计算机的执行部件,用于进行算术计算和逻辑计算。
算术计算是按算术运算规则进行的计算;
逻辑计算是按逻辑运算规则进行的运算。
算术逻辑单元(ALU) 是运算器的核心。运算器包含若干通用寄存器,用于暂存操作数和中间结果,如累加器(ACC),乘商寄存器(MQ),操作数寄存器(X),变址寄存器(IX),基址寄存器(BR)等。
程序状态寄存器PSW 是标志寄存器,用于存放ALU运算得到的一些标志信息或处理机的状态信息。
控制器是计算机的指挥中心,由程序计数器(PC),指令寄存器(IR),控制单元(CU) 组成。
程序计数器PC用来存放当前欲执行指令的地址,可以自动加1以形成下一条指令的地址,与主存的MAR之间有一条直接通路。
指令寄存器IR用来存档当前的指令,内容来自主存的MDR。指令中的操作码 OP(IR) 送至控制单元CU,用以分析指令并发出各种微操作命令序列;而地址码 Ad(IR) 送往MAR,用以取操作数。
一般将运算器和控制器集成在同一个芯片上,称为中央处理器(CPU)。
CPU和主存储器共同构成主机,而除主机外的其他硬件装置统称为外部设备,简称外设。
CPU与主存之间通过一组总线相连,总线中有地址、控制和数据3组信号线。
1、MAR中的地址信息会直接送到地址线上,用于指向读写操作的主存存储单元;
2、控制线中有读写信号线,指出数据是从CPU写入主存还是从主存读出到CPU,根据读操作还是写操作来控制将MDR中的数据是直接送到数据线上还是将数据线上数据接收到MDR中。
计算机软件可分为系统软件以及应用软件。
系统软件主要有:操作系统OS,数据库管理系统DBMS,语言处理程序,分布式软件系统,网络软件系统,标准库系统,服务性程序等。
应用软件是指用户为解决某个应用领域中的各类问题而编制的程序。
1)机器语言
二进制代码语言,机器语言是计算机唯一可以直接识别和执行的语言。
2)汇编语言
用英文单词代替二进制的指令代码,更容易让人们理解。
使用汇编语言编辑的程序,必须经过一个称为汇编程序的系统软件的翻译,将其转换为机器语言程序后,才能在计算机的硬件系统上执行。
3)高级语言
高级语言是为了方便程序设计人员写出解决问题的处理方案和解题过程的程序。
通常高级语言需要经过编译程序成汇编语言程序,然后经过汇编操作得到机器语言程序;有时直接从高级语言转换为机器语言程序。
从高级语言转换为机器语言的翻译程序有三类:
(1)汇编程序(汇编器): 将汇编语言翻译成机器语言程序。
(2)解释程序(解释器): 将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行。
(3)翻译程序(编译器): 将高级语言程序翻译成汇编语言或机器语言程序。
硬件实现的往往是最基本的算术和逻辑运算功能,而其他大部分通过软件的扩充得以实现。对某一功能来说,即可用硬件实现,也可以软件实现。
当研制一台计算机时,设计者必须明确分配每一级的任务,确定哪些功能使用硬件实现,哪些功能使用软件实现。
软件和硬件功能界面的划分由设计目标、性能价格比、技术水平等综合因素决定的。
第1级是微程序机器层,是一个实在的硬件层,由机器硬件直接执行微指令。
第2级是传统机器语言层,是一个实际的硬件层,由微程序解释机器指令系统。
第3级是操作系统层,由操作系统程序实现。操作系统程序由机器指令和广义指令组成。
第4级是汇编语言层,符号化的语言,由汇编程序支持和执行。
第5级是高级语言层,面向用户,为方便用户编写应用程序而设置的。
程序执行前,将程序所含的指令和数据送入主存。
一个程序的执行就是周而复始地执行一条一条指令的过程:从主存取指令、对指令进行译码、计算下条指令地址、取操作数并执行、将结果送回存储器。
高级语言程序都必须转换为一系列低级机器指令,这些指令按照可执行目标文件的格式打包,并以二进制磁盘文件的形式存放起来。
处理过程:
1)预处理阶段:
预处理器cpp对源程序中以字符#开头的命令进行处理,将类似.h的文件插入程序文件,输出一个以 .i 为扩展名的源文件。
2)编译阶段:
编译器ccl对预处理后的源程序进行编译,生成一个汇编语言源程序 .s。
3)汇编阶段:
汇编器as将.s翻译成机器语言指令,把这些指令打包成一个可重定位目标文件 .o,是一个二进制文件。
4)链接阶段:
链接器Id将多个可重定位目标文件和标准库函数合并为一个可执行目标文件,生成好的可执行文件最终被保存在磁盘上。
可执行文件代码段由机器指令构成,用来指示CPU完成一个特定的原子操作。
根据PC取指令到IR:
将PC的内容送MAR,MAR中的内容直接送地址线,同时控制器将读信号送读写信号线,主存根据地址线上的地址和读信号,从指定存储单元读出指令,送到数据线上,MDR从数据线接收指令信息,并传到IR上。
指令译码并送出控制信号。控制器根据IR中的指令的操作码,生成相应的控制信号,送到不同的执行部件。
取数操作。将IR中指令的地址码送至MAR,MAR中的内容送至地址线,同时控制器将读信号送至读写信号线,从主存中读出操作数,并通过数据线送至MDR,再传送到ACC中。
每取完一条指令,还须为取下条指令做准备,计算下条指令的地址,即(PC)+1->PC
字长是指计算机进行一次整数运算所能处理的二进制数据的位数。字长一般等于内部寄存器的大小。
计算机字长通常选定为字节(8位)的整数倍。
指数据总线一次所能并行传送信息的位数。指的是外部数据总线的宽度而非内部的。
指主存储器所能存储信息的最大容量,以Byte作为单位。
有意思的是,可以根据MAR的位数以及MDR的位数计算出存储容量:
MAR的位数反映存储单元的个数;
MDR的位数是存储字长,反映存储单元的长度。
所以 主存容量=2MAR位数 * MDR位数(Byte)
当然,1KB = 1024 Byte
(1)吞吐量
系统在单位时间内处理请求的数量。系统吞吐量主要取决于主存的存取周期。
(2)响应时间
指从用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结果的等待时间。
(3)CPU时钟周期
主频的倒数,CPU中最小的时间单位,执行指令的每个动作至少需要一个时钟周期。
(4)主频
机器内部主时钟的频率,1Hz(赫兹)表示每秒1次。
常用的CPU主频有1.8GHz,2.4GHz,2.8GHz。
(5)CPI(Clock cycle Per Instruction)
执行一条指令所需的时钟周期数。对于一台机器来说,CPI指的是所有指令执行所需的平均时钟周期数。
(6)CPU执行时间
指的是运行一个程序所花费的时间。
CPU执行时间 = CPU时钟周期数/主频 = (指令条数*CPI)/主频
(7)MIPS(Million Instructions Per Second)
指每秒执行多少百万条指令。
MIPS = 指令条数/(执行时间106) = 主频/(CPI106)
(8)MFLOPS等
MFLOPS(Mega Floating-point Operations Per Second)每秒执行多少百万次浮点数运算。
具有基本相同的体系结构,使用相同基本指令系统的多个不同型号的计算机组成的一个产品系列。
指软件或硬件的通用性。即运行在某个型号的计算机系统中的硬件/软件也能应用于另一个型号的计算机系统。
把某个系列计算机中的软件直接或进行很少修改就能运行在另一个系列计算机的可能性。
将程序固化在ROM中组成的部件称为固件。
固件是一种具有软件特性的硬件。吸收了软/硬件各自的优点,执行速度快于软件,灵活性优于硬件,是软硬件结合的产物。