ENIARC: (诞生的时间大概在上个世纪 40 年代,诞生在美国宾夕法尼亚大学,而且在此时候计算的结构 已经进化到有 5 大基本部件组成)
计算机的 5 大部件都遵循冯.诺依曼体系 ,分别为:
CPU:
核心部件:
运算器(主要用于算术运算、逻辑运算、等各种各样的运算)
控制器(控制总线的使用权限、完成寻址、控制对内存当中的读或写的访问) CPU 内部存储器(为了提升 CPU 的性能所提供的辅助性工具):
寄存器(用于锁存数据)
缓存(用于缓存数据 ,分为一级缓存、二级缓存、三级缓存)
存储器:内存 ,被称为 RAM(Random Access Memory) ,也被称为随机访问存储器
Input:下指令 ,提供数据等;
Output:输出数据加工的结果;
计算机的五大部件:运算器、控制器、存储器、输入设备、输出设备
程序:指令(计算机要运行的指令) +数据组成
算法+数据结构组成
CPU 的指令集:
是指 CPU 硬件逻辑上所支持的所有指令的集合 ,称为指令集 ,例:加、减、乘、除、等运算的
指令
指令集分为两类:
普通指令:
运算一些不会影响到其他用户的指令
特权指令:
可以运算一些管理硬件的操作指令
运算器有各种各样的指令 ,而控制器也有各种各样的指令 ,但运算器只是用于做运算 ,但控制器是用于控 制各部件的协调 ,也包括寻址的操作
运算器如何与控制器结合工作:
例:做加法运算 ,但问题上几加几 ,数据在什么地方存放?指令是 CPU 支持的 ,但是加工的对 象存放在什么地方?一般来讲则需要
用到存储器(内存)存储数据了,实际上在存储器内部是有划分各个存储单元的,每个存储单元 也称为 Cells(存储细胞)大小是
固定的 ,每一个 Cells 的大小是 8bits(位),8 位是指 8 位二进制 ,最多能够存储 8 位的二进 制数字当中的任何一种变化形式 ,一个
Cells 的单位也称为一个 Bytes(字节),通常称为小 b 的是 bits(位),称为大 B 的是 Bytes (字节 ,8 位二进制),对于内存最小存
储单位是 Bytes(字节)不能够再小 ,即使只存储一位 ,也需要占用一个字节 ,只不过还有 7 位是空的
在内存当中有很多个 Cells,那么当需要把第 3 个 Cells 和第 8 个 Cells 计算两者数值的总 和时 ,那么是如何寻找 ,在内存中每一个
Cells 是有编址的 ,但对于计算机来讲 ,它们是电子计算机 ,它们更容易理解数字 ,而不是字符 串 ,所以在计算机里通通都用数字编
址,但是数字编址需要在一个平面单元下完成编址才行,内存的编址需要在一个平面化的地址结 构进行编址 ,它的编址方式必须要容
纳所有的内存空间才可以,但是 CPU 是有字长的概念,比如 8 位、16 位、32 位、64 位 CPU, 以 32 位为例:32 位 CPU 指的是存储能力一次存
储 32 位二进制 ,或可以理解为有 32 根线 ,对于计算机来讲 ,这 32 根线莫非也是通电或不通 电 ,有电压则表示 1 ,无电压则表示 0 ,因此
只有 32 根线 ,每一根线都有两种变化 ,那就是 0 或 1 ,那么有 32 根线 ,每根线有两种变化,
那么组合起来则有 2 的 32 次方种变化 ,那么
这 CPU 最多能引用 2 的 32 次方的不同的位置,所以对于 32 位 CPU 来讲最多只能够理解 2 的 32 次方不同的 Cells ,大概是 40 多亿个 Cells,第
一个 Cells 则为 32 个 0 ,第二个则为后 32 位最后一位为 1 ,第三个 ,则为 32 位最后两们为 10
为什么 32 位 CPU 最大支持 4G 内存
2^10 =1024 2 的 10 次方 ,等于 1024
1024*1024*1024*4 Bytes 2 的 32 次方,则相当于 3 个 1024 相乘,最后还有 2 的 2 次方, 所以再乘于 4 Bytes
1024*1024*4 KB 做向上进制 ,1KB 等于 1024 Bytes ,所以向上进一阶换算:单位为 KB ,则为两个 1024 相乘 ,再乘于 4 KB
1024*4 MB 再向上进一阶换算:单位为 MB ,则为 1024 乘于 4 MB
4 GB 现向上进一阶换算:单位为 GB
由以上的计算结果可知 ,32 位的 CPU 最多只支持 4GB 内存
计算机如何运行程序:
程序是指令+数据 ,对于计算机来讲 ,为了运行指令+数据 ,程序是由程序员所编写的 ,程序员 一般写好的程序 ,为了永久存储 ,一般是
存放在外部存储设备上,那么这些程序要进行运行 ,则需要先装载到内存中 ,因为 CPU 只能与 内存做交互 ,不会直接与硬盘做交互的 ,所
以 ,所需要运行的数据都需要装载到内存中 ,硬盘是 I/O 设备 ,一个程序需要运行 ,那么则需 要先装载入内存当中 ,而程序是由指令+数
据组成,那么指令+数据都在内存当中了 ,比如:需要做加法运算,假设,指令存放到内存中的 1、2、3 号 Cells,数据存放在 4、5、6、7、
8、9 号 Cells 当中 ,那么 CPU 则需要加载第一个指令 ,而在这个指令当中 ,会向 CPU 说明需 要运算的数据在那些内存的 Cells ,因此 CPU 会找
到数据所在的内存 Cells 当中把数据取出来,比如,需要运算第 4 个和第 8 个 Cells 中的数值做 加法运算 ,于是 ,第一步先取出指令 ,第二
步,指令中关联着有数据,则把数据取出来,在运算器中做加法运算,因此说明,指令和数据都 存放在内存中 ,需要把指令和数据都取出
来才可以进行运算 ,而内存则是编址的存储单元
当数据取出来以后,就在 CPU 中运算,运算完成后则产生运算的结果,在此之前还有一个 步骤 ,指令在完成以后会有第二、第三个指
令,也可能数据会进一步加工 ,所以为了让 CPU 知道运行完第一条指令以后 ,紧着运行第二条 指令在什么地方 ,所以 CPU 内部则会有寄
存器 ,常见的寄存器“指令指针寄存器”也称为 PC ,而这个 PC 指的是 ,当加载完成一个指令 以后 ,每一个程序它的指令运行大体上都是
由算法+数据结构组成的,也就意味着一个程序中的多条指令彼此之间是有关联关系的,而这种 关系通常对于一个过程式编程言语来讲 ,它
内部控制逻辑分为有三种
过程式编程语言的运行方式:
顺序执行:依次(第一条运行完成 ,则到第二条 ,之后再到第三条、等等)
循环执行:将整个循环体执行 n 次;
选择执行:仅执行其中的一个分支(选择程序中的部分代码执行);