本章主要介绍计算机的发展史以及CPU的功能。

存储程序的概念:将指令以二进制代码的形式事先输入计算机的主存储器,然后按照其在存储器中的首地址执行程序的第一条指令,以后就按照该程序的规定顺序执行其他指令,直至程序执行结束。
存储器为核心 CPU = 运算器 + 控制器


CPU分成了运算器(ALU)+控制器,存储器包括主存+辅存(外设)+输入+输出。

解释图中的每一个线路:红色的是控制线路,通过控制器操作ALU进行加减乘除运算,操作存储器进行读写操作;绿色的线路是操作指令使用,从存储器将数据传递到MDR中,然后传递到IR寄存器中,进行译码;
根据冯·诺依曼结构基本思想,可以给出一个模型计算机的基本硬件结构。

模型机中主要包括:
冯·诺依曼结构计算机的功能通过执行程序实现,程序的执行过程就是所包含的指令的执行过程。指令(instruetion)是用0和1表示的一串0/1序列,用来指示CPU完成一个特定的原子操作。例如,取数指令(load)从主存单元中取出数据存放到通用寄存器中;存数指令(store)将通用寄存器的内容写入主存单元;加法指令(add)将两个通用寄存器内容相加后送入结果寄存器;传送指令(mov)将一个通用寄存器的内容送到另一个通用寄存器;如此等等。
指令通常被划分为若干个字段,有操作码、地址码等字段。操作码字段指出指令的操作类型,如取数、存数、加、减、传送、跳转等;地址码字段指出指令所处理的操作数的地址,如寄存器编号、主存单元编号等。
系统可以分成软件+硬件,一般的软件通过编译变成汇编语言,然后汇编语言通过汇编变成机器码,机器码在硬件上运行。


Hello程序被启动后,计算机的动作过程如下:
计算机系统所完成的所有任务都是通过执行程序所包含的指令来实现。计算机系统由硬件和软件两部分组成。

ISA指Instruction Set Architecture,即指令集体系结构,有时简称为指令系统。ISA是一种规约(Specification),它规定了如何使用硬件。


比较计算机的性能时,用执行时间来衡量完成同样工作量所需时间最短的那台计算机就是性能最好的处理器时间往往被多个程序共享使用,因此,用户感觉到的程序执行时间并不是程序真正的执行时间(从hello程序执行过程可知)
通常把用户感觉到的响应时间分成以下两个时间:
CPU时间:指CPU真正花在程序执行上的时间。又包括两部分:
1.用户CPU时间:用来运行用户代码的时间
2.系统CPU时间:为了执行用户程序而需要运行操作系统程序的时间
3.其他时间:指等待I/O操作完成或CPU花在其他用户程序的 时间CPU性能(CPU performance):用户CPU时间
本文主要讨论CPU性能,即:CPU真正用在用户程序执行上的时间

**从上图可以看到CPU性能和指令条数、CPI、时钟周期有关系,并不和某一个值有关。怎么证明呢?我们看几个例子:
程序P在机器A上运行需10s,机器A的时钟频率为400MHz。 现在要设计一台机器B,希望该程序在B上运行只需6s.机器B时钟频率的提高导致了其CPI的增加,使得程序P在机器B上时钟周期数是在机器A上的1.2倍。机器B的时钟频率达到A的多少倍才能使程序P在B上执行速度是A上的10/6=1.67倍?
Answer:
时钟周期总数A = 10 sec x 400MHz = 4000M个
时钟频率B = 时钟周期总数B / CPU时间B
= 1.2 x 4000M / 6 sec = 800 MHz
机器B的频率是A的两倍,但机器B的速度并不是A的两倍!
所以证明指令条数、CPI、时钟周期他们之间是息息相关的。
**那么与MIPS有关系吗?**计算公式1s/CPI*时钟周期

假定某程序P编译后生成的目标代码由A 、B 、C 、D 四类指令组成,它们在程序中所占的比例分别为43%、21%、12%、24%,已知它们的CPI 分别为1、2、2、2。现重新对程序P进行编译优化,生成的新目标代码中A 类指令条数减少了50%,其他类指令的条数没有变。请回答下列问题。
① 编译优化前后程序的CPI各是多少?
② 假定程序在一台主频为50MHz 的计算机上运行,则优化前后的MIPS各是多少? 解优化后A类指令的条数减少了50%,因而各类指令所占比例分别计算下。
A 类指令:21.5/(21.5+21+12+24)=27%
B类指令:21/(21.5+21+12+24)=27%
C类指令:12/(21.5+21+12+24)=15%
D类指令:24/(21.5+21+12+24)=31%
① 优化前后程序的CPI 分别计算如下。
优化前:43%×1+21%×2+12%×2+24%×2=1.57
优化后:27%×1+27%×2+15%×2+31%×2=1.73
② 优化前后程序的MIPS 分别计算如下。
优化前:50M/1.57=31.8MIPS
优化后:50M/1.73=28.9MIPS
从 MIPS数来看,优化后程序执行速度反而变慢了。 这显然是错误的,因为优化后只减少了A 类指令条数而其他指令数没变,所以程序执行时间一定减少了。从这个例子可以看出,用 MIPS 数来进行性能估计是不可靠的。
总结:本文主要介绍了计算机组成原理概述,本人会定时发布底层知识供大家学习。