部分计算机体系结构和操作系统个人学习总结
计算机体系结构
处理器体系结构
处理器工作执行一系列的指令,每条指令执行某个简单的操作,例如两个数相加。指令被编码成由一个或多个字节序列组成的二进制格式。
在硬件设计中,用电子电路计算对位进行运算的函数,类似于现代电路中用信号线上的高电压和低电压表示不同的位值。1代表高电压
大部分处理器都有一个最小最基本的计算单元,此处以nand作为最小计算单元,nand就是(非and)(!&&),其他所有运算都在此计算单元基础上完成。
nand运算逻辑
a | b | nand(a,b) |
---|---|---|
0 | 0 | 1 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
nand电路图
and运算逻辑
a | b | and(a,b) |
---|---|---|
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
and电路图
and逻辑运算由两个nand基本计算单元构成,a和b nand出的结果同时作为第二个nand的a和b
not逻辑运算
a | not(a) |
---|---|
0 | 1 |
1 | 0 |
not电路图
not逻辑运算由一个nand构成,自己作为输入1和输入2得出
or逻辑运算
a | b | or(a,b) |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
or电路图
or由三个nand构成,也可以说是由a的not,b的not,(a的not和b的not的nand)构成。
xor逻辑运算
a | b | xor(a,b) |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
xor电路图
xor由四个nand构成
MUX选择器
a | b | sel | out |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 0 |
1 | 0 | 0 | 1 |
1 | 1 | 0 | 1 |
0 | 0 | 1 | 0 |
0 | 1 | 1 | 1 |
10 | 0 | 1 | 0 |
1 | 1 | 1 | 1 |
MUX电路图
MUX选择器可以实现if,else的功能,做出二选一
MUX选择器由两个and、一个not和一个or构成。
ALU(运算逻辑单元)
加法运算
carry表示进位,sum表示运算结果
a | b | carry | sum |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 1 | 0 |
电路图
三个数相加运算
a | b | c | carry | sum |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 1 |
1 | 0 | 1 | 1 | 0 |
1 | 1 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 1 |
三个数相加是由多个两个数相加的运算单元结合构成
以此类比,最终可以实现16位的相加运算
ALU是cpu的核心
构造内存
计算机的内容是一次性的
DFF
时间在计算机中是不连续的,是离散的,叫做【cycle】,因此可以将时间切片。此刻的输入可以作为下一刻的输出
sequential logic
(时序逻辑单元),普通(组合)的逻辑组件和DFF的组合
在DFF的基础上加了一个load,任意时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态。
构造Bit
bit由MUX选择器和DFF构成
构造寄存器
寄存器越多,性能越好
寄存器多就可以减少去内存获取存储数据,从而提高缓存的利用率
构造RAM(内存)
如果是16个寄存器,那么k的长度(宽度)是4;
0-15个寄存器;
1111 = 15
如果是32个寄存器,那么k的宽度是5
寄存器0,寄存器1,寄存器2,... 寄存器15;
取第0个寄存器:0000
取第2个寄存器:0010
取第15个寄存器:1111
一个一个小的register构成RAM8,多个RAM8构成RAM64……
内存的查找次数取决于内存的大小,
如果从RAM8里面找寄存器,例如输入的K=001,那么找的是第1个寄存器;
如果从RAM64里面找寄存器,例如输入的K=001010,那么找到的是第2(010)个RAM8里面找第1个(001)寄存器。
内存越大,查找的次数越多。
内存越大,速度越慢
缓存的局部性原理
能从“近”的地方取就不会到“远”的地方去。
1. 空间局部性;
sum = sum + a[i];主要指的是a[i]
2. 时间局部性;
sum = sum + a[i];主要指的是sum;
缓存局部性的拓展
缓存的速度是比内存要快的,什么样的数据需要从磁盘或者内存读到缓存中呢,计算机将指令邻近的指令或者数据读到缓存中,说白了就是赌,赌用户会用到邻近的数据或者指。想要利用好缓存,肯定是想要被读到缓存中的数据接着就会被使用,因此,程序设计者需要将相关数据尽量存放在一起。
缓存需要淘汰旧的缓存数据,不经常使用的缓存数据,使用LRU(least recently used)
缓存已经将需要的数据从更远更慢的介质读到了缓存中,即使是这样,但是缓存中的数据还是以百万、千万、亿条计数,从这么多数据中找到需要的数据也需要提高性能。
就像平时从字典中查找汉字,往往是通过目录确定汉字所在的具体页数,因此在缓存中,我们也需要类似目录一样的东西,也就是索引。索引有很多种,此处着重B+树索引,为了在索引中更多的存放信息,B+树的非叶子节点中只存放索引字段,而不存放整条数据,同时将所有叶子结点用指针连起来。必要时可以创建二级索引,将经常需要搜索的信息拿出,按照搜索次数排序。二级索引叶子结点存放的是主键的值。因此通过二级索引也可以快速定位到聚簇索引中的位置。
Counter
CPU的构成
内存和设备
计算机
计算机的内存中存放的是
1. 数据
2. 指令
计算机体系结构(Computer Architecture)是描述计算机各组成部分及其相互关系的一组规则和方法,是程序员所看到的计算机属性。计算机体系结构主要研究内容包括指令系统结构(Instruction Set Architecture,简称ISA)和计算机组织结构(Computer Organization)。
ISA
RISC(精简指令系统)
代表MIPS(寄存器是32个)和ARM。一般是用于手机。
针对效率的提升,我们可以用流水线(piple line)的原理。
假设洗衣房
1. 洗衣服
2. 烘干
3. 折叠衣服
4. 装包;
(4小时)
很多人要用洗衣房完成洗衣服,第一个人和第二个人没有先后顺序的情况下,第一个人完成第一个步骤时,第二个人就可以进行第一个步骤,以此类推。本来四个人需要16小时完成,而利用流水线只需要7个小时即可,大大提高了效率。
比如对一个数组进行求和,可以分别对数组的奇数项和数组的偶数项进行相加,最后进行总求和,奇数项和偶数项的相加可以同时进行,提高效率,减少时间。
CICS(复杂指令系统)
代表x86。一般用于个人电脑。