1.请简述精简指令集 RISC 和复杂指令集 CISC的区别。
- 1.简单指令集一般在一个cycle就完成执行。
- 2.CISC指令集更容易做到向前兼容,凭借此一统PC和服务器市场。
- 3.RISC指令集,只保留简单的指令集,可以省下很多晶体管,所以更容易实现低功耗和嵌入式。
2. 请简述数值0x12345678 在大小端字节序处理器的存储器中的存储方式
0x430:1234 5678 0000 0000
0x440:0000 0000 0000 0000
- 2.小端模式数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址。
0x430:7856 3412 0000 0000
0x440:0000 0000 0000 0000
3. 请简述在你所熟悉的处理器(比如双核Cortex-A9)中一条存储读写指令的执行全过程
- 1.在一个支持超标量和乱序执行技术的处理器当中,一条存储读写指令的执行过程被分解为若干步骤。
- 2.指令首先进入流水线(pipeline)的前端(front-end),包括预取(fetch)和译码(decode),经过分发(dispatch)和调度(scheduler)后进入执行单元,最后提交执行结果。
- 3.所有的指令采用顺序方式(In-Order)通过前端,并采用乱序的方式进行发射,然后乱序执行,最后用顺序方式提交结果,并将最终结果更新到LSQ(Load-Store-Queue)部件。
- 4.LSQ部件是指令流水线的一个执行部件,可以理解为存储子系统的最高层,其上接收来自CPU的存储器指令,其下连接着存储器子系统。其主要功能是将来自CPU的存储器请求发送到存储器子系统,并处理其下存储器子系统的应答数据和消息。
4.请简述内存屏障(memory barrier)产生的原因
- 1.是因为内存乱序访问,程序在运行时的实际内存访问顺序和程序代码编写不一致,会导致内存乱序访问。
- 2.内存乱序访问的出现是为了提高程序运行时的性能。内存乱序访问主要发生在如下两个阶段。
5.ARM有几条memorybarrier的指令?分别有什么区别?
- 1.数据存储屏障(Data Memory Barrier,DMB)数据存储器隔离。DMB指令保证:仅当所有在它前面的存储器访问操作都执行完毕后,才提交(commit)在它后面的存取访问操作指令。当位于此指令前的所有内存访问均完成时,DMB指令才会完成。
- 2.数据同步屏障(Data synchronization Barrier,DSB)数据同步屏障,比DMB要更严格一些,仅当所有在它前面的存储访问操作指令都执行完毕后,才会执行在它后面的指令,即任何指令都要等待DSB前面的存储访问完成。位于此指令前的所有缓存,如分支预测和TLB(Translation Look-aside Buffer)维护操作全部完成。
- 3.指令同步屏障(Instruction synchronization Barrier,ISB)指令同步屏障。它最严格,冲洗流水线(Flush pipeline)和预取buffers(pertLbuffers)后,才会从cache或者内存中预取ISB指令之后的指令。ISB通常用来保证上下文切换的效果,例如更改ASID(Address Space Identifier)、TLB维护操作和C15寄存器修改等。
6.请简述cache的工作方式。
7.cache 的映射方式有 full-associative(全关联)、direct-mapping(直接映射)和 set-associative(组相联)3种方式,请简述它们之间的区别。为什么现代的处理器都使用组相联的cache映射方式?
8.在一个32KB的4路组相联的cache中,其中cacheline为32Byte,请画出这个cache的cache line、way和set的示意图。
9.ARM9处理器的 Data Cache组织方式使用的 VIVT,即虚拟 Index虚拟 Tag,而在 Cortex-A7处理器中使用PIPT,即物理Index物理Tag,请简述PIPT比VIVT有什么优势?
10.请画出在二级页表架构中虚拟地址到物理地址查询页表的过程。
11.在多核处理器中,cache的一致性是如何实现的?请简述 MESI 协议的含义。
12.cache在Linux内核中有哪些应用?
13.请简述ARMbig.LITTLE架构,包括总线连接和 cache管理等。
14.cache coherency和memory consistency有什么区别?
15.请简述cache的write back有哪些策略。
16.请简述cacheline的替换策略。
17.多进程间频繁切换对TLB有什么影响?现代的处理器是如何面对这个问题的?
18.请简述NUMA架构的特点。
19.ARM从Cortex系列开始性能有了质的飞跃,比如Cortex-A8/A15/A53/A72,请说说Cortex系列在芯片设计方面做了哪些重大改进?