定义
计算机体系结构主要包含以下几个方面:指令系统结构、计算机硬件结构、CPU微结构、并行处理结构、计算机性能分析等。其中,指令系统结构是指计算机中所有指令的集合,它是计算机体系结构的基础;计算机硬件结构是指计算机中各种部件的组成和相互连接方式;CPU微结构是指CPU内部各个部分的组成和相互连接方式;并行处理结构是指多处理器系统中各处理器之间的相互协作方式;计算机性能分析是指对计算机系统性能进行评估和分析。
计算机体系结构(Computer Architecture)是描述计算机各组成部分及其相互关系的一组规则和方法,是程序员所看到的计算机属性。计算机体系结构主要研究内容包括指令系统结构(Instruction Set Architecture,简称ISA)和计算机组织结构(Computer Organization)。
构造运算器
运算器,也被称为算术逻辑部件(ALU),在计算机中起着至关重要的作用。它是负责执行各种算术和逻辑运算操作的部件,包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作。此外,运算器内常设若干可以寄存数据的寄存器,用于临时保存数据。
电路图
三元运算器
多元运算器
ALU
根据所代入的值不同而获得不同的结果
云算器是cpu的核心,更与cpu的性能有关联
构造内存
DFF
时间是计算机里面设置好的,现实生活中的时间是连续的,计算机里面的时间是离散的,叫 cycle。因为计算机中的时间是离散的,即计算机是基于数字信号来处理信息的,这意味着他只在特定的时间点上有定义,而不是连续的时间范围内,因此需要cycle规定离散时间间隔
sequential logic
时序逻辑单元,普通(组合)的逻辑组件和DFF的组合(或者是单独的DFF):
构造Bit
构造寄存器
构造RAM(内存)
如果是16个寄存器,那么k的长度(宽度)是4;
0-15个寄存器;
1111 = 15
如果是32个寄存器,那么k的宽度是5
寄存器0,寄存器1,寄存器2,... 寄存器15;
取第0个寄存器:0000
取第2个寄存器:0010
取第15个寄存器:1111
查找次数
内存的查找次数取决于内存的大小,
如果从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;
例子
import time
import random
import numpy as np
import timeit
# 创建一个大型的二维数组
size = 3000
twoDarray = np.random.rand(size, size)
# 对行求和
def sum_rows():
return np.sum(twoDarray, axis=1)
# 对列求和
def sum_columns():
return np.sum(twoDarray, axis=0)
#测量执行时间
rows_time = timeit.timeit(sum_rows, number=size)
columns_time = timeit.timeit(sum_columns, number=size)
print(f"列求和时间:{columns_time}")
print(f"行求和时间:{rows_time}")
Counter
指令-hacker
寄存器操作
add R1, R2 ; R2 = R1 + R2
Store R1, @A; 代表把寄存器里面的值放到内存地址是A的内存里面, Mem[A]= R1
Add R1, M[200]; 代表Mem[200] = Mem[200] + R1
Add 73, R1;R1 = R1+73;
控制流
101 Load R1, 0;
102 Add 1, R1
...
156 Jump 102
JGT R1, 0, count // Jump if R1 > 0
一行汇编的代码对应一行机器码
D+1;JLE ---> 1110011111000110
寄存器分析
寄存器越多越好,寄存器多就可以减少去内存获取存储数据,从而提高缓存的利用率;
CPU的构成
内存和设备
内存里面有数据和指令