《破解数字VLSI验证面试》翻译计划——第二章

前言

本文基于《破解数字VLSI验证面试》翻译计划——综述展开翻译的!
阅读这篇文章,有什么不懂的地方,可以参考计算机组成原理:最详细笔记!查阅理解!

第二章:计算机体系结构

由于摩尔定律和半导体技术的不断创新,数字VLSI系统设计正将越来越多的元件集成到单个芯片上。数字集成电路的设计趋向于越来越多的SOC(System-on-Chip)设计,它将微处理器或微控制器与GPU或DSP等处理器以及许多系统组件集成在一起。系统组件可以是硬件加速器、内存控制器、外围设备和控制器,如PCIE、USB、SATA、以太网等。另一个趋势是越来越多的处理器核(从双核到四核再到八核)集成在一个芯片上。

随着这一趋势的发展,了解计算机体系结构的基本原理对VLSI设计和验证工程师具有重要意义。大多数SOC设计验证都是围绕CPU进行的,可能涉及编写测试,这些测试可以对CPU进行编程或初始化,并使用CPU访问其他系统组件。因此,可以观察到,在许多SOC设计或验证面试中,候选人是根据他们的计算机体系结构知识来判断的。

在本节中,我们列出了计算机体系结构中一些最常见的问题。

51.RISC和CISC架构有什么区别?

RISC表示精简指令集计算,CISC表示复杂指令集计算。

  • RISC体系结构的指令数较少,这些指令是简单的指令(即固定长度的指令和较少的寻址模式)。另一方面,CISC体系结构有更多的指令,这些指令本质上是复杂的(即变长指令和更多的寻址模式)。

  • RISC方法是拥有更小的指令和更少复杂的硬件,而CISC方法是拥有更复杂的硬件来解码和分解复杂的指令。因此,在RISC架构中,重点更多地放在软件上,而在CISC架构中,重点更多地放在硬件上。

  • 由于CISC具有复杂的硬件,它需要更小的软件代码,因此存储编程指令的RAM更少。由于RISC的硬件不太复杂,RISC需要使用更多指令的软件程序,因此需要更多的RAM来存储指令。

  • RISC体系结构中的指令通常需要一个时钟周期来完成,而CISC体系结构中的指令可能需要多个时钟周期来完成,这取决于指令的复杂性。因此,在RISC架构中流水线是可能的。

  • RISC体系结构旨在通过减少每条指令的周期数来提高性能,而CISC体系结构则试图通过最小化每条程序的指令数来提高性能。

CISC体系结构支持单个指令,这些指令可以从内存读取、执行某些操作并存储回内存(称为内存到内存操作)。

另一方面,RISC架构需要多条指令:1)将值从内存加载到内部寄存器,2)执行预期操作,3)将寄存器结果写回内存。

示例:如果我们必须将存储在内存位置M1和M2的两个数字相乘,并将结果存储回内存位置M1,则可以通过一条CISC指令来实现:

MULT M1, M2

而对于RISC,我们需要以下多个指令:

LOAD A, M1 

LOAD B, M2 

PROD A, B 

STORE M1, A

上面提到了所有的区别,有必要指出的是,在先进的计算机微体系结构中,甚至许多CISC体系结构实现都会首先在内部将复杂的指令转换为简单的指令。

52.冯·诺依曼和哈佛架构有什么不同?你更喜欢哪一种?

在冯·诺依曼的体系结构中,只有一个存储器可以同时保存数据和指令。通常,这意味着从CPU到内存只有一条总线,可以访问数据和指令。此体系结构具有用于数据和指令的统一缓存。

在哈佛体系结构中,数据和指令是分开存储的。可以有两条独立的总线同时访问数据和指令存储器。在这个体系结构中,还将有单独的指令和数据缓存。

冯·诺依曼体系结构相对比较古老,大多数现代计算机体系结构都基于哈佛体系结构。

53.从内存存储的角度解释Little Endian 和 Big Endian formats的概念?(小端和大端格式)

字节顺序是指字节存储在内存中的顺序(它也适用于数字传输系统,它描述了传输的字节顺序)

内存通常是按照字节寻址的,但大多数计算机体系结构使用32位或字大小(4字节)的操作数。因此,将字存储到字节可寻址存储器中有两种方法:

  • 将字的最高有效字节存储在较小的地址。这种类型的存储是指Big-Endian格式。

  • 将字的最低有效字节存储在较小的地址。这种类型的存储是指Little Endian格式。

例如:如果CPU试图将字0xDDCCBBAA写入从0x1000开始的地址(地址范围:0x1000到0x1003),则字节可以存储在以下两种不同的endianness中,如下所示。

《破解数字VLSI验证面试》翻译计划——第二章_第1张图片

54. SRAM和DRAM有什么区别?

DRAM代表动态随机存取存储器。它是一种以电荷形式存储数据的存储器。DRAM中的每个存储单元由一个晶体管和一个电容器组成。数据存储在电容器中。DRAM是易失性器件,因为电容器会因漏电而失去电荷。因此,为了将数据保存在内存中,必须定期刷新设备。

另一方面,SRAM是一种静态存储器,只要供电,SRAM就保持一个值。SRAM通常比DRAM快,因为它没有刷新周期。每个SRAM存储单元由6个晶体管组成(不像DRAM存储单元由1个晶体管和1个电容组成)。因此,SRAM的每个存储单元的成本更高

  • 在使用方面,sram用于高速缓存是因为速度更快,dram用于PC的主存储器是因为密度更高。

55.对于256KB的内存,如果按字节寻址,需要多少地址位?

因为总内存大小是256KB(2^8 * 2^10 Bytes),所以每个地址都是18位宽。

56. CPU中实现的寄存器有哪些不同类型?

    1. 程序计数器(PC):程序计数器是保存当前正在执行的指令地址的寄存器。
    1. 指令寄存器(IR):指令寄存器是保存当前正在执行的指令的寄存器。(将在PC指定的地址处显示值)
    1. 累加器:累加器是一个寄存器,它保存处理器内部算术和逻辑运算的中间结果
    1. 通用寄存器:通用寄存器是可以存储程序所需的任何瞬态数据的寄存器。通用寄存器的数量由体系结构定义,这些寄存器可由软件(汇编程序)用于在程序执行期间存储临时数据。通用寄存器的数量越多,CPU的执行速度就越快。
    1. 堆栈指针寄存器(SP):堆栈指针寄存器是一个特殊用途的寄存器,用于存储最近推送到堆栈上的项的地址。堆栈最典型的用途是存储子例程调用的返回地址。SP寄存器有助于维护栈顶地址。

57.解释计算机体系结构中流水线的概念?

流水线是一种在单个处理器中实现一种称为指令级并行的并行形式的技术。基本指令周期被分解为一系列步骤,称为流水线。不是按顺序处理每条指令(在开始下一条指令之前先完成一条指令),而是将每条指令分成一系列步骤,以便不同的步骤可以并行执行,指令可以并行处理(先启动一条指令,再完成前一条指令)。

流水线通过同时执行多个操作来提高指令吞吐量,但并不能减少指令延迟,即从开始到完成一条指令所需的时间,因为它仍然必须经历所有步骤。

例如:一条指令的生命周期可以分为五个阶段:获取、解码、执行、内存访问和写回。这允许处理器并行处理多条指令。

58. 什么是pipeline hazard?处理器中有几种pipeline hazard?(应该是流水线冲突)

点击跳转,结合 5.5.3 影响流水线的因素,理解

pipeline hazard是由于某种原因无法执行程序中的下一条指令的情况。存在以下三种类型:

  • Structural Hazards结构冲突:这些冲突是由于资源冲突而产生的,资源冲突会阻止重复执行。例如:如果设计只有一个浮点执行单元,并且每次执行需要2个时钟周期,那么在程序中使用背靠背浮点指令将导致流水线暂停。另一个可能发生冲突的资源是内存/缓存访问。

  • Data Hazards数据冲突:当一条指令依赖于前一条指令的结果时,这些冲突就会出现,这种结果是通过管道重叠执行暴露出来的。有三种类型的数据冲突:

  1. 先读后写(RAW)-如果一条指令需要一个由前一条指令写入的源,则会发生这种情况。
  2. 先写后写(WAW)-如果一条指令写入一个寄存器,而该寄存器也是由前一条指令写入的,则会发生这种情况
  3. 读后写(WAR)-如果一条指令写入一个寄存器,而该寄存器是前一条指令的源,则会发生这种情况
  • 控制冲突:这些冲突是由于分支和跳转指令改变了程序执行的顺序而产生的。

59. 可以使用哪些技术来避免三种类型的pipeline hazard(流水线冲突)-结构冲突、数据冲突和控制冲突?

以下是用于避免每种流水线冲突的一些技术:

  • 结构冲突:a)复制资源以实现并行执行-分离指令和数据缓存,为整数和浮点操作提供多个执行单元,分离加载和存储单元等。

  • 数据冲突:a)无序执行—互不依赖的指令可以在依赖指令暂停时执行。b)数据转发—对于原始危险,指令的写入可以转发到下一个相关指令以消除危险。

  • 控制冲突:a) 使用分支预测算法对分支结果进行预测,以便可以在分支之后获取正确的指令集。

60. 流水线机器有10个阶段,如下所示。每个阶段需要1ns来处理一个数据元素。假设没有危险,计算机器处理100个数据元素所用的时间。

《破解数字VLSI验证面试》翻译计划——第二章_第2张图片

流水线的每个阶段需要1ns来处理一个数据元素。由于有10个阶段,第一个元素需要10*1ns才能从管道中出来。管道将满,所有其他99个元素将只需要1ns。因此,所用总时间=(10+99)ns=109 ns

61.指令有哪些不同类型的寻址模式?

  • 立即寻址模式:在此模式下,操作数作为常量作为指令本身的一部分,如下所示:
add r0 r1 0x12 将r1+0x12的结果存在r1
  • 直接寻址模式:在这种模式下,操作数的地址直接在指令中指定。
load r0 0x10000 将地址0x10000的数据存到r0中
  • 寄存器寻址模式:在这种模式下,操作数放在寄存器中,寄存器名直接在指令中指定
mul r0, r1 , r2 将r1*r2的结果存在r0中
  • 偏移量寻址模式:在这种模式下,索引寄存器的内容加上一个偏移量(这是指令的一部分)以获得有效地址。
load r0 r1 offset r1包含了及地址,r1+offset才是真实的地址

注意:点击跳转,在网页内搜索指令寻址和地址寻址加以了解

下面这是常见的指令寻址

《破解数字VLSI验证面试》翻译计划——第二章_第3张图片

下面这是常见的数据寻址方式《破解数字VLSI验证面试》翻译计划——第二章_第4张图片

62.What is the principle of spatial and temporal locality of reference?(什么是时间局域性和空间局域性?)

Locality of reference is a principle that defines if a memory location is accessed by a program, how frequently will the same memory location or nearby storage locations be accessed again.

There are two types of locality of reference explained as below:

  • Temporal Locality时间局域性: If at one point in time a particular memory location is referenced, then it is likely that the same location will be referenced again in the near future.

  • Spatial Locality空间局域性: If a particular memory location is referenced at a particular time, then it is likely that nearby memory locations will be referenced in the near future.

点击跳转,在网页内搜索”局部性“加以了解

《破解数字VLSI验证面试》翻译计划——第二章_第5张图片

63. 计算机系统中有哪些不同类型的存储?

  • Register
  • Cache
  • Main Memory/Primary Memory
  • Secondary Memory(Magnetic/Optical)

64.什么是Cache?

Cache是一个小容量的快速内存。它位于Main Memory和CPU之间。它也可以位于CPU芯片/模块上。

《破解数字VLSI验证面试》翻译计划——第二章_第6张图片

65.概述Cache操作。Cache运行的原理是什么?

每当CPU请求内存位置的内容时,首先检查缓存中的该数据。如果缓存中存在数据,则CPU直接从缓存中获取数据。这种情况下CPU不需要访问Main Memory的数据,因此速度更快。如果缓存中不存在数据,则将一块内存从Main Memory读取到Cache,然后以字块的形式从Cache传递到CPU。高速缓存包括标识每个高速缓存插槽中的主内存块的标记。

66. What is a cache miss or hit condition?(Cache的命中与不命中)

在缓存中查找地址时,如果缓存包含该内存位置,则称为缓存命中。如果找不到在缓存中查找的地址,则称为缓存未命中情况。(此处,Cache=缓存!)

67. Will there be a difference in the performance of a program which searches a value in a linked list vs a vector on a machine that has cache memory present?(在有缓存的机器上,通过链表和向量搜索一个值,性能会有区别吗?)

链表是将其元素存储在非连续内存位置的数据结构,而向量是将元素存储在连续位置的数据结构。

对于带有高速缓存的设计:如果其中一个内存位置存在于高速缓存中,则后续字节(连续字节)很可能也存在于高速缓存中,因为从主内存到高速缓存的取指令通常是以高速缓存线(通常是64或128字节)的形式回迁的。正此,在一台有高速缓存的机器上,通过向量搜索要比通过链表搜索快。

68. 将内存映射到缓存有哪些不同的机制?比较每种方法的优缺点。

这部分不理解的,一定要跳转后面的链接学习查看3.6.2 Cache的基本工作原理在这篇文章里,点击标题可以跳转到对应的视频讲解

有三种主要的映射技术用于将主存映射到缓存,如下所述。在每个映射中,主存储器和高速缓存被划分为内存块(也称为高速缓存线,通常为64字节),这是用于映射的最小大小。

  • 直接映射 (Direct Mapping) :在直接映射中,主内存块和高速缓存之间总是存在一对一的映射。例如:在下图中,缓存的大小是128块,而主存的大小是4096块。主存储器的块0将始终映射到高速缓存的块0,块1映射到块1…。,块127将映射到块127。此外,块128将再次映射到块0,块129映射到块1。。,依此类推,这可以概括为主存储器的块“k”将映射到块“k模128”上的高速缓存。

《破解数字VLSI验证面试》翻译计划——第二章_第7张图片

如果块大小为64B,地址为32位,则地址[5:0]将用于索引到块中,地址[12:6]将用于标识该地址可以映射到缓存中的哪个块,剩余的地址位地址[31:13]将与缓存中的数据一起存储为标记位。

这是所有映射中最简单的一种,通过知道内存地址,可以很容易地计算出缓存中可能的位置,仅与单个位置中的标记位进行比较就可以告诉您缓存是否命中。这种映射的缺点是,即使缓存可能未满,但如果内存访问模式是指向落在同一块中的地址,则可能会导致更多的逐出,而且效率不高。

  • 全相联映射(Fully Associative Mapping):在全相联映射中,任何内存块都可以映射到高速缓存中的任何块。

使用上图所示的相同示例,地址[5:0]将用于块内索引,所有剩余位即地址[31:6]将与缓存中的数据一起存储为标记位。

为了查找任何内存地址,必须将所有地址位[31:6]与缓存位置中的所有标记位进行比较,这需要更大的比较器逻辑,从而消耗更多的能量。这种映射的优点是,所有位置都可以充分利用,因为任何内存块都可以映射到任何缓存块。

  • 组相联映射(Set-Way Associative Mapping):在组相联映射中,缓存块被分组成若干组。例如,下图显示了128个块组成的同一个缓存,这些块被组织为64组,每组有2个块。基于集合中的块数,这称为双向集合关联缓存。在这种映射中,主存块被直接映射到一个集合,然后在集合中它与任何块相关联。

《破解数字VLSI验证面试》翻译计划——第二章_第8张图片

考虑到32位地址的相同示例,地址[5:0]将用于索引块中的一个字节,地址[11:6]将用于直接映射到64组缓存中的一个,其余地址位[31:12]将作为标记位与每个缓存线一起存储。

69. 拥有具有更多关联性的缓存有什么缺点?

具有更多关联性的缓存将需要更大的比较器,来比较传入地址与标记位。这需要更多的功耗和更多的硬件。

70. 具有16位地址总线的字节可寻址CPU有一个具有以下特征的高速缓存:a)它与大小为1字节的每个块直接映射;b)块的高速缓存索引为4位。缓存有多少块?作为缓存块的一部分,需要存储多少个标记位?

由于缓存中块的索引是4位,因此缓存中总共有16个块。给定16位地址和1字节的块大小,地址[3:0]将用于索引缓存中的16个块,剩余的位地址[15:4]将用作标记位。

71.4路组相联缓存的总大小为256KB。如果每个缓存线(cache line)的大小为64字节,那么缓存中将存在多少个组?需要多少地址位作为标记位?假定地址大小为32位。

缓存中的块总数=256K/64=4096。由于缓存是4路组相联,组数=4096/4=1024。

给定一个32位地址和64字节缓存线,地址[5:0]用于块内索引(索引到缓存线),地址[15:6]用于找出地址映射到哪一组(10位),剩余的地址位[31:16]用作标记位。

72. 直写式缓存和回写式缓存有什么区别?优点和缺点是什么?

  • 直写式高速缓存:在直写高速缓存中,对高速缓存的每一次写入操作都会写入主内存。这是简单的设计,因为内存总是最新的缓存,但随之而来的缺点是,内存带宽总是消耗写入。

  • 回写式高速缓存:在回写高速缓存中,对高速缓存的每个写入操作都只写入高速缓存。对主存的写操作将延迟,直到缓存线从缓存中逐出或丢弃。回写缓存在内存带宽方面更好,因为只有在需要时才回写数据。如果系统中有多个缓存可以缓存同一个地址,那么维护一致性数据的复杂性就来了,因为内存可能并不总是有最新的数据。

73.What is the difference between an inclusive and exclusive cache?

缓存的Inclusive和exclusive属性适用于具有多个缓存级别的设计(例如:L1、L2、L3缓存)。

如果一级(1级)缓存中存在的所有地址都设计为也存在于二级(2级)缓存中,则一级缓存称为严格Inclusive缓存。如果保证所有地址最多只在一级和二级缓存中的一个,而从不在两个缓存中,则这些缓存称为exclusive缓存。

  • exclusive缓存的一个优点是,多个级别的缓存可以一起存储更多的数据。Inclusive缓存的一个优点是,在多处理器系统中,如果必须从处理器的缓存中删除缓存线,则必须仅在二级缓存中检查缓存线,而对exclusive缓存,则必须在一级缓存和二级缓存中检查缓存线。

74.在组关联缓存中,缓存线(cache line)替换有哪些不同的算法?

以下是一些可用于缓存线替换的算法。

  • LRU(Least Recently Used): 将最近最少使用的内容替换。

  • MRU (Most Recently Used) : 将最近经常的内容替换。

  • PLRU (Pseudo LRU) : 关联性很大的时候,LRU的实现成本很高。如果实际情况在丢弃任一个最近最少使用的数据就能满足,那么伪LRU算法就派上用场了,它为每一个缓存数据设立一个标志位就可以工作。

  • LFU (Least Frequently Used): 这个缓存算法使用一个计数器来记录条目被访问的频率。通过使用LFU缓存算法,最低访问数的条目首先被移除。这个方法并不经常使用,因为它无法对一个拥有最初高访问率之后长时间没有被访问的条目缓存负责。

  • Random replacement:该算法不存储任何信息,当需要替换时随机选取一行。

75. 缓存一致性的问题是什么?

在共享多处理器(SMP)系统中,多个处理器有自己的缓存,同一数据(同一地址)的多个副本可能同时存在于不同的缓存中。如果允许每个处理器自由更新缓存,则可能导致内存视图不一致。这就是所谓的缓存一致性问题。例如:如果允许两个处理器将值写入同一地址,那么在不同处理器上读取同一地址可能会看到不同的值。

76.What is the difference between snoop based and directory based cache coherency protocol?(基于监听和基于目录的缓存一致性协议之间有什么区别?)

以下是两种缓存一致性协议之间的区别:

  • Snoop based Coherence Protocol:在基于Snoop的一致性协议中,来自处理器的数据请求被发送到共享系统的所有其他处理器。其他的处理器都会窥探这个请求,看看它们是否有数据的副本,然后做出相应的响应。因此,每个处理器都试图保持内存的一致性。

  • Directory based Coherence Protocol:在基于目录的一致性协议中,目录用于跟踪哪些处理器正在访问缓存哪些地址。任何发出新请求的处理器都将检查此目录,以了解其他代理是否有副本,然后可以向该代理发送点对点请求以获取数据的最新副本。

    以下是每种协议的一些优点或缺点:

《破解数字VLSI验证面试》翻译计划——第二章_第9张图片

Snoop based Coherence Directory based Coherence Protocol
对于小的系统来说,如果带宽足够,基于监听的协议速度会更加快 基于目录的协议需要使用查找表,这将会导致较长的时延
基于监听的协议不适合大型系统,因为它需要将将每一个请求信息进行广播 由于不需要广播,基于目录的协议更加适合大型系统

77.什么是MESI协议?

MESI协议是多个写回缓存设计中最常用的缓存一致性协议。MESI表示所有缓存中每个缓存线跟踪的状态,用于响应snoop请求。这些不同的状态可以解释如下:

MESI 是指4种状态的首字母。每个Cache line有4个状态,可用2个bit表示,它们分别是:

状态 描述 监听任务
M 修改 (Modified) 该Cache line有效,数据被修改了,和内存中的数据不一致,数据只存在于本Cache中。 缓存行必须时刻监听所有试图读该缓存行相对就主存的操作,这种操作必须在缓存将该缓存行写回主存并将状态变成S(共享)状态之前被延迟执行。
E 独享、互斥 (Exclusive) 该Cache line有效,数据和内存中的数据一致,数据只存在于本Cache中。 缓存行也必须监听其它缓存读主存中该缓存行的操作,一旦有这种操作,该缓存行需要变成S(共享)状态。
S 共享 (Shared) 该Cache line有效,数据和内存中的数据一致,数据存在于很多Cache中。 缓存行也必须监听其它缓存使该缓存行无效或者独享该缓存行的请求,并将该缓存行变成无效(Invalid)。
I 无效 (Invalid) 该Cache line无效。

78. 什么是MESIF和MOESIF协议?

这是MESI协议的两个扩展,引入了两个新状态“F”和“O”,解释如下:

  • F(Forward):F状态是S状态的一种特殊形式,表示缓存应该通过转发数据作为给定行的任何请求的指定响应程序。如果系统中有多个缓存具有相同的S状态行,则其中一个缓存被指定为F状态,以转发来自不同处理器的新请求的数据。该协议确保如果任何缓存在S状态下保持一条线,那么最多一个(其他)缓存只在F状态下保持它。这种状态有助于减少到内存的通信量,因为没有F状态,即使多个缓存中的缓存线处于S状态,也没有一个缓存线不能将数据转发到请求读或写的其他处理器。(请注意,缓存中的S状态行只能服务于相同的处理器读取)。

  • O(Owned):O状态是一种特殊的状态,用于在系统中的不同缓存之间移动修改的或脏的数据,而不需要写回内存。如果一行还与其他缓存共享,则该行可以从M状态转换为O状态,而其他缓存可以使该行保持S状态。O状态有助于将修改后的数据延迟回内存,直到真正需要时再写入。

79. 什么是RFO?

RFO stands for Read for Ownership. It is an operation in cache coherency protocol that combines a read and invalidate broadcast.

(RFO代表所有权的读取。它是一种在高速缓存一致性协议中结合了读广播和无效广播的操作。)

它是由试图写入处于共享或无效状态的缓存线的处理器发出的。这会导致所有其他处理器将该缓存线的状态设置为I。所有权读取事务是一种读取操作,旨在写入该内存地址。因此,此操作是独占的。它将数据带到缓存中,并使保存此内存地址的所有其他处理器缓存失效。

80.虚拟内存的概念是什么?

虚拟内存是一种内存管理技术,它允许处理器查看地址的虚拟连续空间,即使实际物理内存很小。操作系统管理虚拟地址空间和从辅助设备(如磁盘)到物理主内存的内存分配。CPU中的地址转换硬件,通常称为内存管理单元或MMU,将虚拟地址转换为物理地址。这种地址转换使用分页的概念,其中连续的内存地址块(称为页)用于虚拟内存和实际物理内存之间的映射。下图说明了这个概念。

《破解数字VLSI验证面试》翻译计划——第二章_第10张图片

81.虚拟内存地址和物理内存地址有什么区别?

软件程序或进程用来访问其地址空间中内存位置的地址称为虚拟地址。然后,操作系统和硬件将其转换为另一个地址,该地址可用于实际访问DRAM上的主内存位置,该地址称为物理地址。地址转换是使用分页的概念来完成的,如果主内存或DRAM没有这个位置,那么在操作系统的帮助下,数据将从辅助内存(如磁盘)移动到主内存。

82. 分页的概念是什么?

所有虚拟内存实现都将虚拟地址空间划分为页,页是连续的虚拟内存地址块。页面是将内存从辅助存储器移动到物理内存以管理虚拟内存的最小粒度。

大多数计算机系统上的页面大小通常至少为4KB。当需要更大的实际内存时,有些体系结构还支持较大的页面大小(如1MB或4MB)。

页表用于将应用程序看到的虚拟地址转换为物理地址。页表是一种数据结构,用于存储内存中多页的虚拟地址到物理地址的转换详细信息。

83. What is a TLB (Translation lookaside buffer)?

TLB是一种缓存,它将虚拟内存最近的地址转换存储到物理内存中,然后可以用于以后更快的检索。如果一个程序请求一个虚拟地址,并且它能在TLB中找到匹配的地址,那么可以更快地从TLB中检索物理地址(比如缓存),并且不需要访问主内存。只不过,如果TLB中不存在转换,则需要执行内存访问,以便实际遍历页表,以获得地址转换,而地址转换需要几个周期才能完成。下图说明了这一点,如果在TLB中找到了转换,那么物理地址就可以直接使用,而不需要经过任何页表转换过程。

《破解数字VLSI验证面试》翻译计划——第二章_第11张图片

84. What is meant by page fault(页面错误)?

当程序访问映射到虚拟地址空间但未加载到主存储器的存储器页时,计算机硬件[存储器管理单元(MMU)]引发中断。这种中断称为页面错误。

85. 如果CPU正忙于执行一个任务,我们如何停止它并运行另一个任务?

CPU上的程序执行可以通过使用外部中断源来中断。

86. 什么是中断和异常?它们有何不同?

中断是一种异步事件,通常由外部硬件(I/O设备或其他外围设备)生成,不会与指令执行边界同步。例如:中断可能发生在键盘、存储设备或USB端口。中断总是在当前指令执行结束后进行,CPU跳到中断服务例程的执行。

异常是处理器在执行指令时检测到任何预定义条件时生成的同步事件。例如:当程序遇到被零除或未定义的指令时,它会生成异常。异常进一步分为三种类型,程序流的更改方式取决于类型:

  • 故障:在发出故障指令之前,由处理器检测并维修故障

  • 陷阱:陷阱在导致陷阱的指令之后被服务。最常见的陷阱是用于调试的用户定义中断。

  • 中止:中止仅用于在执行无法继续时发出严重系统问题的信号。

87. What is a vectored interrupt(向量中断)?

向量中断是一种中断类型,其中中断设备使用中断特有的代码将处理器引导至正确的中断服务例程,并且中断设备将该代码与中断一起发送给处理器。

对于非向量中断,中断服务程序的第一级需要读取中断状态寄存器,以解码引起中断的可能中断源,并据此决定要执行的特定中断服务程序。

88. 有哪些不同的技术用于提高从内存中提取指令的性能?

  1. 指令缓存和预取:指令缓存和预取算法将在实际指令解码和执行阶段之前继续获取指令,这将在设计中隐藏指令获取阶段的内存延迟。

  2. 分支预测和分支目标预测:分支预测将有助于根据历史预测条件分支是否发生,分支目标预测将有助于在处理器计算之前预测目标。这有助于最小化指令获取暂停,因为获取算法可以保持基于预测的获取指令。

89.什么是超标量流水线处理器?

超标量流水线设计使用指令级并行来提高处理器的性能。使用这种技术,处理器可以在一个时钟周期内通过同时将多条指令分派给处理器上的不同执行单元来执行多条指令。如果处理器能在一个周期内并行执行“N”个指令,则称之为N路超标量。

90.顺序执行和无序执行有什么区别?

顺序执行:在这个模型中,指令总是按照它们在程序中存在的顺序来获取、执行和完成。在这种执行模式下,如果其中一条指令暂停,那么它后面的所有指令也会暂停。

无序执行:在这个模型中,指令是按照它们在程序中存在的顺序获取的,它们的执行可以按任何顺序进行,它们的完成也可以按顺序进行。该模型的优点是,如果一条指令暂停,则暂停指令后面的独立指令仍然可以执行,从而加快了程序的整体执行速度。

91. 条件分支和无条件分支指令之间有什么区别?

分支指令用于将程序流从当前指令切换到不同的指令序列。分支指令可以是条件分支指令或无条件分支指令。

无条件分支指令:如果分支指令总是导致分支,则称为无条件分支指令。

Example: Jump is an unconditional branch as the result of execution will always cause instruction sequence to start from the address

条件分支指令:如果分支指令可能导致分支,也可能不导致分支,则称为条件分支指令,具体取决于某些条件。

Example: beq ra , rb, is a conditional branch instruction that checks if two source registers (ra and rb) are equal, and if they are equal it will jump to the address. If they are not equal, then the instruction sequence will continue in the same order following the branch instruction.

92.什么是分支预测和分支目标预测?

分支预测器是一种设计,它试图预测分支的结果,以便在程序中遇到分支指令后,将正确的指令序列预取到指令缓存中,以避免指令执行暂停。分支预测器预测是否执行条件分支。

分支目标预测器是不同的,它在处理器的执行单元计算分支指令的目标之前,预测执行的条件分支或无条件分支指令的目标。

93. 内存映射I/O是什么意思?

内存映射I/O(MMIO)是一种在CPU和I/O或外围设备之间执行输入/输出(I/O)的方法。在这种情况下,CPU使用相同的地址总线访问内存和I/O设备(I/O设备内的寄存器或设备内的任何内存)。在系统地址映射中,为I/O设备保留了一些内存区域,当CPU访问此地址时,监视此地址总线的相应I/O设备将响应访问。

例如:如果一个CPU有一个32位地址总线:它可以访问0到232之间的地址,在这个区域,我们可以为一个或多个I/O设备保留地址(比如从0到210)。

94. 在设计中使用一个热编码有什么好处?

在一个热编码中,两位每次都在改变,一位被清除,一位被设置。优点是你不需要解码就知道你处于哪个状态。它使用更多的触发器,但较少的组合逻辑和时序关键逻辑没有解码逻辑可能会造成差异。

后记

冲冲冲,逐梦人!

你可能感兴趣的:(Cracking,Digital,VLSI,Verification)