计算机组成结构
硬件组成
中央处理器
计算机硬件组成:运算器、控制器、存储器、输入设备、输出设备
存储器:内部存储器、外部储存器
主机:CPU + 主存储器
中央处理单元(CPU)组成:运算器、控制器、寄存器组、内部总线
中央处理单元(CPU)功能:实现程序控制、操作控制、时间控制、数据处理功能
运算器
运算器组成:
-
1. 算术逻辑单元(ALU - Arithmetic Logical Unit)——实现对数据的运算和逻辑运算;完成加减乘除、与或非异或、位移等运算
-
2. 累加寄存器(AC - Accumulator)——运算结果或源操作数的存放区;当运算器的算术逻辑单元执行算术或逻辑运算时,
为ALU提供一个工作区
,暂存运算结果的地方。 -
3. 数据缓冲寄存器(DR - Data Register)——暂时存放内存的指令或数据;
-
- 状态条件寄存器(PSW - Program Status Word)——保存指令运行结果的条件码内容,如运算结果进位标志©,溢出标志(V),为零标志(Z),为负标志(N),中断标志(I),方向标志(D)和单步标志
运算器功能:执行所有的算术运算和逻辑运算
ACC + X = ACC --> 被加数 + 加上 = 和
ACC - X = ACC --> 被减数 - 减数 = 差
X × MQ = ACC_MQ --> 被乘数 × 乘数 = 乘积高位_乘积地位,乘法会导致进位
ACC ÷ X = MQ…ACC --> 被除数 ÷ 除数 = 商…余数
img
控制器
控制器组成:
-
- 指令寄存器(IR - Instruction Register)——暂存CPU执行指令,存放内容来自DR
-
- 程序计数器(PC - Program Counter)——存放下一条要执行的指令地址
-
- 地址寄存器(AR - Address Register)——保存==当前CPU所访问的内存地址
-
- 指令译码器(ID - Instruction Decoder)——分析指令操作码
控制器功能:控制整个CPU的工作,保存程序控制、时序控制
指令,由操作码和地址码组成。操作码表示计算机要执行的某种操作的性质,地址码是操作码执行时的操作对象地址,也叫操作数。
指令的基本概念
指令就是机器语言的一个语句,它是一组具有意义的二进制代码:
image-20211119150505656
操作码部分指出计算机要执行什么性质的操作(加、减、取数、存数等),地址码字段需要包含各个操作数的地址及操作结果的存放地址
image-20211119150514365
寻址方式
寻址方式就是处理器根据指令中给出的地址信息来寻找有效地址的方式,是确定本条指令的数据地址以及下一条要执行的指令地址的方法。
指令寻址
顺序寻址方式:指令在内存中按顺序排放,依次取出必须使用程序计数器(又称指令计数器)PC来计数指令的顺序号,该顺序号就是指令在内存中的地址。
跳跃寻址方式:当程序转移执行的顺序时,指令的寻址就采取跳跃寻址方式。所谓跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出。
注意,程序跳跃后,按新的指令地址开始顺序执行。因此,程序计数器的内容也必须相应改变,以便及时跟踪新的指令地址。采用指令跳跃寻址方式,可以实现程序转移或构成循环程序,从而能缩短程序长度,或将某些程序作为公共程序引用。
操作数寻址
**立即寻址:**指令的地址字段指出的不是操作数的地址,而是操作数本身,这种寻址方式称为立即寻址。特点是指令执行时间很短,但是灵活性差
image-20211119152628651
**隐含寻址:**这种类型的指令,不是明显地给出操作数的地址。而是在指令中隐含着操作数的地址。累加寄存器AC对单地址指令格式来说是隐含地址
**直接寻址:**指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。直接寻址方式常用于处理内存单元的数据,其操作数是内存变量的值,该寻址方式可在64K字节的段内进行寻址。
image-20211119152708453
**间接寻址:**指令地址字段中的形式地址不是操作数的真正地址,而是操作数地址的指示器,或者说此形式地址单元的内容才是操作数的有效地址。
image-20211119152730435
**寄存器寻址方式和寄存器间接寻址:**当操作数不放在内存中,而是放在CPU的通用寄存器中时,可采用寄存器寻址方式。寄存器间接寻址方式与寄存器寻址方式的区别在于:指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。
image-20211119152822143
指令系统
指令系统是计算机硬件的语言系统,也叫机器语言,它是软件和硬件的主要界面,从系统结构的角度看,它是系统程序员看到的计算机的主要属性。
CISC(Complex Instruction Set Computer)复杂指令集计算机:
-
1. 形成原因:
-
- 早期计算机部件昂贵,主频低,运算慢
-
- 为提高速度,将越来越多的复杂指令加入到指令系统中
-
2. 特点:
-
- 指令系统庞大,指令功能丰富
-
- 指令格式和寻址方式较多,多数指令需多个指令周期完成
-
- 各种指令都可以访问存储器,少量的专用寄存器
-
- 通过复杂化硬件来简化软件实现
-
3. 相关技术:
-
- 操作码扩展
-
- 各种寻址方式
-
4. 缺点:
-
- 各种指令的使用频率相差悬殊,80%的指令在20%的时间里才会用到
-
- 指令系统的复杂性带来了计算机体系结构的复杂性,这不 仅增加了研制时间和成本,而且还容易造成设计错误
-
- 由于各条指令的功能不均衡,不利于采 用先进的计算机体系结构技术(如流水技术)来提高系统的性能
RISC(Reduced Instruction Set Computer)精简指令集计算机:
-
1. 形成原因:
-
- “二八”定律,VLSI技术的发展
-
2. 特点:
-
- 指令系统简单、规则(所有指令长度均相同,在一个机器周期内完成)
-
- 只选取实现使用频率较高的一些简单指令,复杂功能通过简单指令的组合来实现
-
- 指令字长固定,指令格式种类少,寻址方式少
-
- 只有取数/存数指令访问存储器,其余指令的操作在寄存器间进行
-
- 寄存器数目相对较多
-
3. 相关技术:
-
- 流水线技术、超标量技术
-
4. 设计原则:
-
- 选取使用频率最高的指令,并补充一些最 有用的指令
-
- 每条指令的功能应尽可能简单,并在一个 机器周期内完成
-
- 所有指令长度均相同
-
- 只有load和store操作指令才访问存储器, 其它指令操作均在寄存器之间进行.
CISC和RISC对比:
项目 | CISC | RISC |
---|---|---|
指令数目 | 一般多于200种 | 一般少于100种 |
指令格式 | 一般多于4种 | 一般少于4种 |
寻址方式 | 一般多于4种 | 一般少于4种 |
指令字长 | 不固定 | 等长 |
可访存指令 | 不限制 | 只有Load/Store |
各种指令使用频率 | 相差很大 | 基本相当 |
各种指令执行时间 | 相差很大 | 多数为一个周期 |
程序代码长度 | 较短 | 较长 |
优化编译实现 | 很难 | 叫容易 |
程序控制 | 微程序 | 组合逻辑 |
指令流水线
时钟周期也称为振荡周期,定义为时钟脉冲的倒数,是计算机中最基本的、最小的时间单位。
机器周期,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。
指令周期, 是执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。
流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。在流水线中,机器周期的长度由最慢的流水级部件处理子过程所需的时间来决定。
Untitled Diagram.drawio
从上图可以看出,不管指令的各阶段耗时怎样,其中最耗时的阶段总是首尾相连,所以流水线的整个耗时会受到这个阶段的影响。t1,t2,t3三个阶段的耗时中,假设t3耗时最长,那第三阶段的所有耗时是t3*N,再加上剩下两个阶段的耗时:
t1+t2+t3∗N=(t1+t2+t3)+t3∗(N−1),其中t1+t2+t3是一个指令执行的周期,t3是其中最耗时的阶段执行时间。
流水线周期:指令分成不同的段执行,其中执行时间最长的段所需的时间成为流水线周期
流水线执行时间:
流水线吞吐率:总指令条数/流水线执行时间,即单位时间执行的指令条数
流水线加速比:指令按常规方式执行的时间/流水线方式执行的时间
流水线的**关键在于同一时间轴,多个部件同时执行,因此如果这个条件不能得到满足,则流水线就会被破坏。**这种破坏主要来自以下3种情况:转移指令、共享资源访问的冲突、响应中断。
存储系统
在这里插入图片描述
高速缓冲存储器(Cache)用来改善主存储器与中央处理器的速度匹配问题(主存和 CPU 一直保持了大约一个数量级的差距),高速缓存-主存层级拥有接近于缓存的速度和接近于主存的容量,解决了速度和成本之间的矛盾,主要用于提高 CPU 的访问速度;
辅助存储器(外存)则使用来存放当前不在运行的大量程序及数据,主存-辅存层级拥有接近于主存储器的速度和接近于辅存储器的容量,解决了大容量和低成本的需求,主要用于扩大存储空间。
高速缓存
高速缓存的提出建立在著名的局部性原理之上,局部性原理表示:程序访问的地址往往集中在存储器逻辑地址空间很小的范围之内
-
• 时间局部性原理:相邻的时间里很可能会访问同一个数据项
-
• 空间局部性原理:相邻空间的数据项很可能会被访问到
Cache 的工作原理有三点值得我们注意:
-
1. 主存和 Cache 都会采用分字块的方式进行管理,Cache 中保存的就是对应的主存字块的一个副本。每一个 Cache 字块都会有一个标记位,用于表示当前字块里存放的是哪一个内存字块的副本。通过这个标准位,CPU 就可以判断出希望访问的内存字块是否已经存在于 Cache 中了。
-
2. 当 Cache 已经用满,但主存还将新的字块调入 Cache 时,就会执行一次 Cache 字块的替换。这种替换遵守一定的规律,最好使得被替换的字块是下一个时间段内估计最小使用的,这种规则成为替换策略或替换算法,有替换部件实现。
-
3. 当程序对 Cache 的字块执行写入时,如何保证 Cache 字块和内存字块的一致性。通常的有两种写入方式:一个是先写 Cache 字块,待 Cache 字块被替换出去时再一次性写入内存字块;在一个是在写 Cache 字块的同时也写入内存字块。
image-20211220172208784
上图是通过一个内存地址找到高速缓存中存放的数据过程:
-
- CPU拿到一个包含Tag、Index和Offset的地址
-
- 通过Index索引找到Cache line
-
- 判断有效位,有效就继续,无效则从内存中去获取
-
- 对比地址中的Tag和Cache line中的Tag,判断是否是要访问的内存数据,是则从缓存中获取数据
-
- 根据Offset读取具体的数据
主存储器
主存储器和 CPU 的连接是由总线来支持的,包括数据总线、地址总线和控制总线。CPU 通过 AR(地址寄存器)& AB(地址总线)、DR(数码寄存器)& DB(数据总线)和主存进行数据传输。若 AR 为 K 位字长,表示 CPU 的寻址宽度,即允许主存包含有 2^K 个可寻址存储单位;若 DR 为 n 位字长,则表示在一个存储周期内,CPU 和主存之间通过总线进行 n 位数据传输。控制总线包括控制数据传输的读(READ)、写(WRITE)和表示存储器功能完成的(READY)的三种控制线。
CPU 读取主存数据:当 CPU 从存储器读取一个存储字时,CPU 必须指定该存储字的地址,将该地址送到 AR 再经 AB 送到存储器,同时,CPU 通过控制线发送 READ 信号到存储器。此后,CPU 等到存储器通过控制线发来一个 READY 信号,表示已经完成了数据的读,并将数据经 DB 放到 DR 上了,CPU 再从 DR 取出相应的数据。以此来完成了一个存储器字的读与取。
CPU 存放数据到主存:CPU 为了存放一个字到存储器,首先将存储字在存储器中的存放地址通过 AR 经 AB 发送到存储器,并将存储字放到 DR,同时发出一个 WRITE 信号到存储器。此后,CPU 等到接收 READY 信号。存储器会根据 AB 收到的地址来存放 DB 接收到的存储字,然后通过 READY 控制线发送 READY 信号给 CPU 接收。以此完成了一个存储字的存放。
可见,主存和 CPU 之间采用的是异步工作方式,以 READY 信号表示以此访存操作的结束。
辅助存储器
辅存的主要技术指标有:存储密度、存储容量、寻址时间、数据传输率、误码率和价格。
主存储器和辅存储器之间也引入了缓存层,即磁盘 Cache。磁盘 Cache 同样基于局部性原理,对数据使用了预读策略。
虚拟存储器
在早期的计算机系统中,程序员会直接对主存储器的物理地址进行操作,这种编程方式导致了当程序出现寻址错误时有可能会导致整个系统崩溃,当一个进程出现寻址错误时也可能会导致另一个进程崩溃。显然,直接操作主存的物理地址不是一个好的方法。而且,由于不存在分页或分段的存储空间管理手段,所以 CPU 寻址宽度就成为了存储容量的限制,例如:32 位 CPU 只支持 4GB 内存的寻址。这导致了该计算机无法运行存储空间需求大于实际内存容量的应用程序。
为了解决这些问题,现代计算机系统通过操作系统和硬件的结合,把主存储器和辅存储器从逻辑上统一成了一个整体,这就是虚拟存储器,或称为虚拟存储系统。虚拟存储器是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的完美交互,它为每个进程提供了一个大的、一致的和私有的地址空间。
虚拟存储器的两大特点:
-
• 允许用户程序使用比实际主存空间大得多的空间来访问主存
-
• 每次访存都要进行虚实地址转换。
-
• 物理地址,即物理主存的地址空间。主存被组织成一个由 M 个连续的、字节大小的单元组成的数组,每字节都有一个唯一的物理地址(Physical Address,PA)。第一个字节的地址为 0,接下来的字节的地址为 1,依此类推。给定这种简单的结构,CPU 访问存储器的最自然的方式就是使用物理地址,即物理寻址。
-
• 虚拟地址,即虚拟存储地址空间,它能够让应用程序误以为自己拥有一块连续可用的 “物理” 地址,但实际上从程序视角所见的都是虚拟地址,而且这些虚拟地址对应的物理主存空间通常可能是碎片的,甚至有部分数据还可能会被暂时储存在外部磁盘设备上,在需要时才进行数据交换。
虚拟存储器的核心思路是根据程序运行时的局部性原理,一个程序运行时,在一小段时间内,只会用到程序和数据的很小一部分,仅把这部分程序和数据装入主存即可,更多的部分可以在需要用到时随时从辅存调入主存。在操作系统和相应硬件的支持下,数据在辅存和主存之间按程序运行的需要自动成批量地完成交换。
虚拟存储器提供了三个重要的能力:
-
1. 它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,它高效地使用了主存。
-
2. 它为每个进程提供了一致的地址空间,从而简化了存储器管理。
-
3. 它保护了每个进程的地址空间不被其他进程破坏。
虚拟存储器解决了三个根本需求:
-
- 确保可以运行存储空间需求比实际主存储容量大的应用程序。
-
- 确保可执行程序被装载后占用的内存空间是连续的。因为 PC 程序计数器是自增的,换句话说就是程序执行必须顺序存放在存储器中,PC 才能够按照程序语句,一条一条的读取指令,不错乱。
-
- 确保同时加载多个程序的时候不会造成内存地址冲突。虽然在生成可执行文件时指令已经有了对应的内存地址,但实际加载的时候,其实没办法保证程序一定就运行在这些内存地址上,因为多个程序同时运行的话,预期的内存地址很可能已经被其他程序占用了。
进制表示
浮点数的二进制表示
根据国际标准IEEE 754规定,任意一个二进制浮点数可以表示成 V = (-1)^s * M * 2^E ,其中:
• 表示符号位,S = 0时 V为正数,S = 1时 V为负数;
• M表示有效数字,大于等于1,小于2
• 2E中的E表示指数
对于32位的浮点数,最高1位是符号位S,接着8位是指数E,剩下的23位是有效数字M;对于64位浮点数,最高1位是符号位,接着11位是指数E,剩下的52位是有效数字M。
因为M的取值范围是[1, 2),所以M的整数部分总是1。IEEE 754规定,在计算机内部保存M时,默认第一位总是1,因此可以被舍去,只保存后面的小数部分。
指数E是一个无符号整数,意味着在32位浮点数中,它的取值范围是0~255,在64位浮点数中,它的取值范围是0~2047。但是科学计数法中的指数是可以为负数的,所以IEEE 754规定,E必须再减去一个中间数才是它的真实值,对于32位浮点数,这个中间数是127,对于64位浮点数,这个中间数是1023。
除此之外,E还分3种情况:
-
1. E不全为0或不全为1,这个就应用上面的规则,E - 127 得到真实的指数值,M在整数部分补1,得到真实的有效数字。
-
2. E全为0,这时指数就是它范围内的最小值 1 - 127 或者 1 - 1023,M也随之不再补1,而是0,这是为了表示±0,以及无限接近于0的数字。
-
3. E全为1,这时指数就是它范围内的最大值 255 - 127 或者 2047 - 1023,如果M全是0,则表示±无穷大(正负取决于符号位),如果M不全为0,则表示不是一个数NaN。
0x41D56A8CDDC00000
这个十六进制表示的浮点数是多少?
-
- 将0x41D56A8CDDC00000转为二进制
100000111010101011010101000110011011101110000000000000000000000
补齐为64位是0100000111010101011010101000110011011101110000000000000000000000
- 将0x41D56A8CDDC00000转为二进制
-
- 第1位0,表示正数
-
- 后面11位为E = 10000011101 = 1053,E - 中间数(1023) = 1053 - 1023 = 30,所以表示的指数值是30
-
- 剩余的52位为M = 0101011010101000110011011101110000000000000000000000,根据上面E的规则(1),M的整数部分补1,即有效数字的二进制为1.0101011010101000110011011101110000000000000000000000
-
5. 带入公式:相当于小数点向右移动30位,得到1010101101010100011001101110111.0000000000000000000000,转为十进制为1437217655.0
校验码
因为在数据存储和传送的过程中,由于元器件或者噪音的干扰,导致数据编码出错。校验码是指能够发现或能够自动纠正错误的数据编码,也称作检错纠错码。原理是通过增加一些冗余码,来检验或纠错编码。
码距:一个编码系统中任意两个合法编码(码字)之间不同的二进数位(bit)数叫这两个码字的码距,而整个编码系统中任意两个码字的的最小距离就是该编码系统的码距。
奇偶校验码
奇偶校验码是奇校验码和偶校验码的统称,它们都是通过在要校验的编码上加一位校验位组成。如果是奇校验加上校验位后,编码中1的个数为奇数个;如果是偶校验加上校验位后,编码中1的个数为偶数个。
原编码 | 奇校验 | 偶校验 |
---|---|---|
0000 | 0000 1 | 0000 0 |
0010 | 0010 0 | 0010 1 |
1100 | 1100 1 | 1100 0 |
1010 | 1010 1 | 1010 0 |
缺点:
-
- 只能检测出奇数位出错. 如果发生偶数位错误就无法检测
-
2. 奇偶校验码无法检测出哪位出错.所以属于无法矫正错误的校验码。
海明校验码
海明码是一种多重奇偶校验码,原理是在有效信息位中加入几个校验位形成海明码,并把海明码的每个二进制位分配到几个奇偶校验组中;当某一位出错后,就会引起有关的几个校验位的值发生变化,不但可以发现错位,还能指出出错的位置,为自动纠错提供依据。
-
• 海明校验码是放在2的幂次位上的,即“1,2,4,8,16,32······”;
-
• 信息位为m的原始数据,需要加入k位的校验码,它满足m+k+1<2k;
|
| 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | S |
| — | — | — | — | — | — | — | — | — | — | — | — | — | — |
| 2^0 |
| D7 |
| D5 |
| D4 |
| D2 |
| D1 |
| P1 | S1 |
| 2^1 |
| D7 | D6 |
|
| D4 | D3 |
|
| D1 | P2 |
| S2 |
| 2^2 | D8 |
|
|
|
| D4 | D3 | D2 | P3 |
|
|
| S3 |
| 2^3 | D8 | D7 | D6 | D5 | P4 |
|
|
|
|
|
|
| S4 |
假设原始数据序列为:D_8,D_7,D_6,D_5,D_4,D_3,D_2,D_1,根据上面的规则8 + k + 1 ≤ 2^k得k = 4,所以在原始数据的1,2,4,8位插入校验码,结合之后的数据序列是D8D7D6D5P4D4D3D2P3D1P2P1,把这组数按编号重新组合之后是H12H11H10H9H8H7H6H5H4H3H2H1,其中是校验位,是原始数据位,对于数据位的角标进行二进制转换:
脚标 | 二进制 |
---|---|
12 | 1100 |
11 | 1011 |
10 | 1010 |
9 | 1001 |
7 | 0111 |
6 | 0110 |
5 | 0101 |
3 | 0011 |
那么校验码第一位由二进制第一位为1的数据位异或得到,即,对应到原始数据即D1,D2,D4,D5,D7;
同理,校验码第二位由二进制位第二位为1的数据位异或得到,即,对应到原始数据位即D1,D3,D4,D6,D7;
同理,校验码第三位由二进制位第三位为1的数据位异或得到,即,对应到原始数据位即D2,D3,D4,D8;
同理,校验码第四位由二进制位第四位为1的数据位异或得到,即,对应到原始数据位即D5,D6,D7,D8。所以
根据上表列出的关系校验码第一位P1由第一行的D1,D2,D4,D5,D7异或得出:,其余校验码以此类推:
P_1 = D_1 ⊕ D_2 ⊕ D_4 ⊕ D_5 ⊕ D_7
P_2 = D_1 ⊕ D_3 ⊕ D_4 ⊕ D_6 ⊕ D_7
P_3 = D_2 ⊕ D_3 ⊕ D_4 ⊕ D_8
P_4 = D_5 ⊕ D_6 ⊕ D_7 ⊕ D_8
接收方在收到数据后对数据进行校验,运算方式类似上面的编码方式:
P_1 ⊕ D_1 ⊕ D_2 ⊕ D_4 ⊕ D_5 ⊕ D_7 -> S_1
P_2 ⊕ D_1 ⊕ D_3 ⊕ D_4 ⊕ D_6 ⊕ D_7 -> S_2
P_3 ⊕ D_2 ⊕ D_3 ⊕ D_4 ⊕ D_8 -> S_3
P_4 ⊕ D_5 ⊕ D_6 ⊕ D_7 ⊕ D_8 -> S_4
唯一的区别是上面的等号换成的异或符号,相当于和它本身再做一次异或,如果是偶校验,那么得到的结果全是0,如果是奇校验,那么得到的结果全是1。
在偶校验的情况下,将上面得到的结果按的顺序排列,如果不全为0,则其二进制表示的是几,说明第几位的数据出错了。
CRC校验码
CRC检验原理实际上就是在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列;附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。
-
1. 将X的最高次幂为R的生成多项式G(X)转换成对应的R+1位二进制数。
-
2. 将信息码左移R位,相当于对应的信息多项式C(X)∗2R。
-
- 用生成多项式(二进制数[1])对信息码做除,得到R位的余数。
-
4. 将余数拼到信息码左移后空出的位置,得到完整的CRC码。
设需要发送的信息为M = 1010001101
,产生多项式对应的代码为P = 110101
,R=5
。在M后加5个0为计算序列:101000110100000
,然后对P做模2除法运算,得余数r(x)对应的代码:01110
。故实际需要发送的数据是101000110101110
。其中CRC校验码就为:01110
。
img
当接收方收到数据后,用收到的数据对P(事先约定的)进行模2除法,若余数为0,则认为数据传输无差错;若余数不为0,则认为数据传输出现了错误,由于不知道错误发生在什么地方,因而不能进行自动纠正,一般的做法是丢弃接收的数据。
计算机体系结构分类
Flynn分类法
体系结构类型 | 结构 | 关键特性 | 代表 |
---|---|---|---|
单指令流单数据流(SISD) | 控制部分:一个 处理器:一个 主存模块:一个 | ||
单处理器系统 | |||
单指令流多数据流(SIMD) | 控制部分:一个 处理器:多个 主存模块:多个 | 各处理机以异步的形式执行同一条指令 | 并行处理机、阵列处理机、超级向量处理机 |
多指令流单数据流(MISD) | 控制部分:多个 处理器:一个 主存模块:多个 | 被证明是不可能的,至少是不实际的 | 目前没有,有资料记载流水线处理机为此类 |
多指令流多数据流(MIMD) | 控制部分:多个 处理器:多个 主存模块:多个 | 能够实现作业、任务、指令等各级全面并行 | 多处理机系统、多计算机 |
题外话
“不是只有程序员才要学编程?!”
认真查了一下招聘网站,发现它其实早已变成一项全民的基本技能了。
连国企都纷纷要求大家学Python!
世界飞速发展,互联网、大数据冲击着一切,各行各业对数据分析能力的要求越来越高,这便是工资差距的原因,学习编程顺应了时代的潮流。
在这个大数据时代,从来没有哪一种语言可以像Python一样,在自动化办公、爬虫、数据分析等领域都有众多应用。
更没有哪一种语言,语法如此简洁易读,消除了普通人对于“编程”这一行为的恐惧,从小学生到老奶奶都可以学会。
《2020年职场学习趋势报告》显示,在2020年最受欢迎的技能排行榜,Python排在第一。
它的角色类似于现在Office,成了进入职场的第一项必备技能。
如果你也想增强自己的竞争力,分一笔时代的红利,我的建议是,少加点班,把时间腾出来,去学一学Python。
因为,被誉为“未来十年的职场红利”的Python,赚钱、省钱、找工作、升职加薪简直无所不能!
目前,Python人才需求增速高达**174%,人才缺口高达50万,**部分领域如人工智能、大数据开发, 年薪30万都招不到人!
感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。
👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典
简历模板
