欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【计算机组成原理面试】

程序员文章站 2022-07-06 12:28:30
...

【计算机硬件组成】

【计算机组成原理面试】

1、P半导体 N半导体》PN结》二极管》场效应管》逻辑开关
2、基本逻辑电路》组成加法器》进行逻辑运算 
3、高级语言》编译器》机器语言(汇编)
4、	volatile:可见性《》禁止指令重排序(只能顺序执行)《》禁止 CPU优化,一般物理上用锁实现
	synchronize(同步):同一时间只能有一个线程调用该方法。

【存储器层次(存取速度)】:寄存器高主储存速差一百倍

【计算机组成原理面试】

5、超线程:一个ALU对应多个PC|register,所谓四核八线程就是一个核两个寄存器和指令寄存器
		线程是cpu执行最小单位,执行指令A的时候,指令放在PS(指令寄存器),数据放在寄存器,
		但当系统想暂停执行指令A的时候,会将此时的执行状态(包括寄存器中的数据)
		都转存到内存,以便继续执行A时恢复线程,而超线程就是在cpu只有一个运算器的情况下,增加
		寄存器和指令寄存器,让暂停执行的线程不用存到内存,提高恢复时资源调用速度。
	

【多级缓存】:多核共享三级缓存,都有各自的一级,二级缓存

【计算机组成原理面试】

 

【缓存行】

【计算机组成原理面试】

6、缓存行:cpu每次从内存读数据都是读一行(一般取64个字节byte:64byte*8 bit)而不是一个字节,这就是cache line。
		也即是当cpu需要数据时的寻找顺序是: L1》L2》L3》主存 ,当从主存中找到数据时,会读取一行数据
		到L3缓冲区》L2》L1》寄存器。
		
  --行对齐:字节对齐(按最大对齐)
  
  --伪共享:当一块数据同时被AB两个线程读取,假设A中数据被volatile绑定,由于volatile的可见性,所以B必须通知B,
          这就需要用到一个缓存一致性协议(缓存锁),来让缓存区保持一致性。而对于缓存一致性协议来说,A中的
          数据被标记为修改的状态,则B中该数据会被标记为无效(invalid),需要重新从内存中读取新的已经被修改的数据。

 

【MESI CACHE: 其中一种缓存一致性协议】

【计算机组成原理面试】

7、DCL单例中需要用到volatile吗? 
	一般DCL(Double Cheack Lock)单例是利用两个synchronize 设置双重锁,以保证多线程只创建唯一单例
	if(fun)[第一次检查]  --多线程等待--synchronize(每次进入一个线程)   if(fun)[第二次检查]   --功能主体实现--
—但是必须添加volatile:
	因为对于类对象的创建过程,它的反汇编后的步骤是分配内存》初始化》创建关联,在高并发情况下不加volatile时
	创建关联的指令可能会在初始化之前执行,导致对象绑定的是默认值,然后因为对象此时已经不为空,所以初始化指令
	不会进行,导致对象参数出错,而volatile禁止内存重排序,所以是必须的。

【volatile禁止指令重排序】

【计算机组成原理面试】

8、合并写技术:
	-当CPU需要进行写操作时,会先写到WC buffer(介于L1缓冲区和缓冲寄存器BUFF之间,只有4byte),
	一下写四个字节, 然后再转存到L1>L2>L3>主存。