组成原理 - 必学原理

组成原理 - 必学原理

先来看个例子, 感性认识为什么要学组成原理

int sumarrayrows(int a[M][N])
{
	int i, j, sum =0;
	for(i = 0; i < M; i++)
		for(j = 0; j < N; j++)
			sum += a[i][j];
	return sum;
}
int sumarraycols(int a[M][N])
{
	int i, j, sum =0;
	for(j = 0; j < N; j++)
		for(i = 0; i < M; j++)
			sum += a[i][j];
	return sum;
}

直接给结论, 第二个函数将比第一个函数慢非常多.
因为第二个函数完美避开局部性原理, 而这正是组成原理的内容之一.

组成原理, 是除了计算机导论这门课之后, 讲述硬件组成,数据存储等原理的一门课程.
这门课程也是很重要的基础.学好了,以后的时间就可以吃它的利息了.

计算机组成原理主要有四大块内容。

第一块,计算机的基本组成,主要包含:

  • 硬件设备组成:CPU、主板、内存、硬盘、显示器等;

  • 冯诺依曼体系结构:运算器、控制器、存储器、输入设备、输出设备;

  • 计算机性能:CPU 主频、响应时间、吞吐率

第二块,计算机的指令和运算,主要包含:

  • 计算机指令:机器码(编译 -> 汇编 -> 机器码、指令格式和跳转、函数调用和程序栈)、程序的编译、链接、装载和执行;

  • 计算机运算:二进制编码(整数、反码、补码、浮点数、定点数)、数字电路(门电路、加法器、乘法器);

第三块,处理器设计,主要包含:

  • CPU:建立数据通路、面向流水线和设计、控制冒险和数据冒险、分支预测、异常和中断、并行计算

第四块,存储器和 I/O 系统,主要包含:

  • 存储器的层次结构:SRAM 存储技术、寄存器、CPU 高速缓存、内存、固态硬盘、机械硬盘;

  • 存储器和 I/O 系统:虚拟内存、CPU和内存的通信、DMA技术、访问输入输出设备;

  • CPU 高速缓存:局部性原理、缓存一致性协议、伪共享问题、write through 和 write back;

  • 虚拟存储:缺页异常、TLB 加速地址转化、MMU 虚拟地址和物理地址转换;

其中第一、第二、第四是对开发者而言是比较重要的内容,而第三部分处理器的设计如果没时间可以先不用去了解。

image

在组成之上,其实还有一层, 叫计算机体系(系统)结构.搞清楚他们的区别.

这里内容太多, 不能写到博客里, 还是建议:

麻省理工MIT计算机组成原理 公开课.
伯克利CS61C 计算机组成原理 公开课

计算机组成原理(哈工大刘宏伟) https://www.bilibili.com/video/BV1t4411e7LH?p=1
王道的计算机组成原理考研视频.
北大的计算机组成也很不错,数电没学好又不想补的,可以看北大的视频.
北大的计组是把知识点分切开讲的,每一集也就10来分钟.

这么多内容, 已经够了.
知识点就那么多, 基本已经完全覆盖了.
对于后面能不能写出好程序, 至关重要的一门课程.

如果上面都不想看, 可以看我总结的详细的知识内容:
https://github.com/TonyK922/Computer-Organization

posted @ 2022-10-12 15:17  道阻且长行则将至Go  阅读(116)  评论(0编辑  收藏  举报