精华内容
下载资源
问答
  • 展开翻译结果候选单词选择框Shift + Alt + T 翻译并替换Ctrl + Alt + T 将鼠标悬停以翻译所选文本。 可以通过设置来设置翻译的目标语言。 暂时切换到翻译语言,直到关闭工作空间或修改配置。 google-translate....
  • 4.6 展开图像 所有目前讲到的图片相关的命令,没有一个支持格式转换和改变复制区域的尺寸。你可以调用vkCmdBlitImage()实现这个功能,它可以接受不同格式的图像并展开或缩小需要复制的区域,当这些区域写入到目标...

    4.6  展开图像

    所有目前讲到的图片相关的命令,没有一个支持格式转换和改变复制区域的尺寸。你可以调用vkCmdBlitImage()实现这个功能,它可以接受不同格式的图像并展开或缩小需要复制的区域,当这些区域写入到目标图像时。术语blit是 block image transfer的缩写,指不仅需要复制图像数据,并且也可能需要在此过程中处理数据。vkCmdBlitImage()的原型如下:

    void vkCmdBlitImage (

    VkCommandBuffer  commandBuffer,

    VkImage  srcImage,

    VkImageLayout  srcImageLayout,

    VkImage  dstImage,

    VkImageLayout  dstImageLayout,

    uint32_t  regionCount,

    const VkImageBlit*  pRegions,

    VkFilter  filter);

    将执行此命令的命令缓冲区通过commandBuffer参数传递。源图像和目标图像各通过srcImage dstImage 参数传递。再有,和vkCmdCopyImage()一样,期望的源图像和目标图像的布局通过srcImageLayout dstImageLayout参数传递。源图像的布局是VK_IMAGE_LAYOUT_GENERAL 或者VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,目标图像的布局是VK_IMAGE_LAYOUT_GENERAL 或者VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMA

    和其他的复制命令一样,vkCmdBlitImage()可复制源图像的任意数量区域到目标图像,每一个区域都通过一个数据结构表示。区域的数量由regionCount参数传递,pRegion指向了一个大小为regionCount的数组,每一个元素定义了一个需要复制的区域。VkImageBlit的定义为:

    typedef struct VkImageBlit {

    VkImageSubresourceLayers  srcSubresource;

    VkOffset3D  srcOffsets[2];

    VkImageSubresourceLayers  dstSubresource;

    VkOffset3D  dstOffsets[2];

    } VkImageBlit;

    VkImageBlitsrcSubresource dstSubresource域定义了源图像和目标图像的子资源。然而,在VkImageCopy中每一个区域都被一个VkOffset3D类型的数据定义,并共享一个VkExtent3D,在VkImageBlit中每一个区域都通过一对VkOffset3D数据(两个元素的数组)定义。

    srcOffsets dstOffsets数组的第一个元素定义了将被复制的区域的一侧,数组的第二个元素定义了区域的另外一侧。源图像中srcOffsets定义的区域被复制到了dstOffsets定义的目标图像。如果这两个区域其中一个对于另外一个是“上下颠倒的”,那么复制的区域将会被垂直翻转。同理,如果一个区域相对域另外一个“前后颠倒的”,那么图像就会被水平翻转。如果这两种情况都满足,那么复制的区域和原区域相比就被旋转180度了。

    如果在源区域和目标区域的巨型尺寸不相同,那么图像就会被相应的放大或缩小。这种情况下,vkCmdBlitImage()命令filter参数定义的过滤模式将会被应用到数据的过滤上。Filter必须是VK_FILTER_NEAREST VK_FILTER_LINEAR其一,分别用于点采样或线性采样。

    源图像的格式必须是支持VK_FORMAT_FEATURE_BLIT_SRC_BIT特性的其中一种。在绝大多数Vulkan实现中,这几乎包含了所有的图像格式。还有,目标图像格式必须是支持VK_FORMAT_FEATURE_BLIT_DST_BIT的其中一种。通常,这是任何可以在shader内渲染到或者设备可写入的格式。Vulkan设备不大有可能会支持在压缩图像格式上blit操作。

    总结

    本章讲解了如何清空图像并填充数据。我们使用命令缓冲区中的命令把少量的数据直接写入缓冲区对象,并解释了Vulkan是如何把在缓冲区和图像互相之间、和一对图像之间复制数据。最后,我们介绍了blit的概念,它是一个在复制数据时允许把数据缩放和转换图像格式的操作。这些操作提供了获取大量数据进出Vulkan设备以供后续处理的基础。

    展开全文
  • 前言 本文基于《破解数字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中,如下所示。

    在这里插入图片描述

    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个数据元素所用的时间。

    在这里插入图片描述

    流水线的每个阶段需要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才是真实的地址
    

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

    下面这是常见的指令寻址

    在这里插入图片描述

    下面这是常见的数据寻址方式在这里插入图片描述

    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.

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

    在这里插入图片描述

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

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

    64.什么是Cache?

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

    在这里插入图片描述

    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”上的高速缓存。

    在这里插入图片描述

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

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

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

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

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

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

    在这里插入图片描述

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

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

    在这里插入图片描述

    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,将虚拟地址转换为物理地址。这种地址转换使用分页的概念,其中连续的内存地址块(称为页)用于虚拟内存和实际物理内存之间的映射。下图说明了这个概念。

    在这里插入图片描述

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

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

    82. 分页的概念是什么?

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

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

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

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

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

    在这里插入图片描述

    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. 在设计中使用一个热编码有什么好处?

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

    后记

    冲冲冲,逐梦人!

    展开全文
  • 如果没有可视化和推动的能力,数据是无用的。未来行业的成功将会带来很多先进的、好的用户体验的数据收集,数据表格也由许多这些用户体验组成。... thanks,Yiru 本人第一次尝试翻译文章,如有不准确地方多包涵。

    5492cf76aa4da0230f8f72ce5bf423a7.png

    如果没有可视化和推动的能力,数据是无用的。未来行业的成功将会带来很多先进的、好的用户体验的数据收集,数据表格也由许多这些用户体验组成。

    好的数据表格允许用户浏览、分析、比较、过滤、分类和操作信息来获得洞察和提交操作。本文介绍了一系列的设计结构、交互模式和技术,以帮助您设计更好的数据表。

    固定首行

    1bfce1337264b4a66e5c6aa400778d16.gif

    固定首行为用户滚动提供参考,看哪一列是用户所在列

    水平滚动

    3f4f479d218066a4f061b0a6776c6dbf.gif

    在显示大量数据时,水平滚动是不可避免的。第一列是一个好的方法来识别数据。作为一个高级设置,能够单独固定一列,这样用户可以将数据与多个固定项进行比较。

    调整列的尺寸

    d86b4c66d1cd5f7470fec35cdd406415.gif

    可以改变列的尺寸,允许用户查看缩小的、尽可能多的数据

    行的样式

    斑马条纹,分隔线,自由形态

    3340e631688d8617c4bd08260845ceb5.gif

    行的样式可以帮助用户扫描数据。通过移除行线或斑马条纹来减少视觉噪音对少量数据很有效。当用户分析较多数据时很可能会找不到位置。分隔线帮助用户确定位置,交替行(又称斑马条纹)帮助用户在扫描大量的数据表格时确定他们的位置,当有少量的行时,尽管他们会导致可用性问题,因为用户认为可能是突出行的原因。

    行间距

    816480ca2741dfc76304cb3b1fe982c3.gif

    小的行高能够使用户看到更多的数据并且不需要滚动。然而这影响查看数据,容易导致视觉分析失误,这也是为什么许多成功的数据表格设计包含管理行间距不同距离的功能。

    可视化的数据总结

    73be6ff7dd73f5182dcd569864bf7ad2.png

    一个可视化的数据总结提供了相关数据表格的概览。它允许用户在行动、总体洞见之前发现总体的模式和问题

    页码

    c0bfa0fd0cd430020728a93419d8b7a6.png

    页码的工作方式是通过在界面中呈现一行数字,并具有切换到另一组的能力。上面的例子提供了定制每个界面行数的功能。这种模式经常被无限的滚动所取代。当用户滚动页面时,无限滚动会逐渐加载结果。无限滚动对于探索类网站来说很好用,但对排序类app却是灾难的。

    犹豫操作

    1a1c1db4dadaab76bd429c9e6e738ddb.gif

    当用户徘徊在减少视觉混乱时,显示额外的行为。但是,它可能导致容易发现的问题,因为用户需要和表格的操作的说明是相互交互的。

    行内编辑

    2b7eda8efd4e7e797abaee11a3c4f389.gif

    行内编辑允许用户在不跳转另一个界面的情况下更改数据

    展开的行

    6ef0d718a7ca69ebe6b5a8cfdca1847b.gif

    可展开的行允许用户在不失去上下文的情况下查看更多的信息。

    快速查看

    d6af56e0e52940a70f8f6ca5a1bcf65d.gif

    与展开的行类似,快速查看使用户能够在保持上下文的同时查看更多的信息

    模态窗口

    9012cf9f140f6259681dbea703a94180.gif

    模态窗口允许用户停留在表格界面中,但提供更多的信息和操作。

    多个模态窗口

    9c408e540b24697d84072419810a25c3.gif

    多个模态窗口对于活跃用户来说是非常强大的,可以进行多个操作,或者比较不同项目的详细信息。

    行的详细信息

    fe5faebcec086ee728dad3dc3c0d1a9e.gif

    点击一个链接将表格切换到另一个界面,其中左侧有列表项,右侧有更多详细信息。它使用户能够分析大量数据,同时也可以参考许多项目而不丢失位置。

    排序的列

    b7734cef1b95c8613e5f555857484d79.png

    排序的列允许用户通过操作第一行,按照字母顺序和数字大小来排序

    基本筛选

    d4ff83232040d9e46a7d6564fda4b683.png

    基本筛选允许用户操作表格中显示的数据

    列的筛选

    3d440118e5e96578415bac4648460275.gif

    这种设计模式允许用户将过滤参数分配给特定的列

    搜索的列

    9827376ca6bfc5b97d8773fe34181088.png

    这种设计模式允许用户在每个列中搜索特定的值

    增加列

    e3dcee743b56983b6366f0bae247ccc7.png

    该模式允许用户从数据中添加列。这是一种保持有限基本信息数据的方式,并且允许用户根据他们的案例增加列数。

    可定制的列

    0d41d6f05aa1421c6842c1795851682f.png

    可定制的列使用户能够选择想要查看的列并相应排序。该特性包括保存预置的功能,以便以后使用。

    thanks,Yiru

    本人第一次尝试翻译文章,如有不准确地方多包涵。

    展开全文
  • 调用:金山翻译,阿里翻译,百度翻译,搜狗翻译,腾讯翻译,彩云小译,DeepL,沪江日语词典等。 搜索包含:知乎,b站,微博,百科,wiki,youtube,twitter等。 设置:展开后,单击“设置”可以调整排序和是否显示。...
  • 文本翻译工具

    2016-01-15 14:35:13
    文本翻译工具,含有代码,主要实现的功能 1、助记符翻译 2、程序地址分配/、 3、Label替换程序地址 4、数据地址替换 5、宏定义的展开
  • 我刚开始安装的是版本5.2,后面通过控制面板卸载了该软件,还另外卸载了其包含的组件iWebPDF;后来在安装6.6.2.1新版本的软件时,忘记了关闭杀毒软件avast,结果就报出了RT的错误。 解决方法其实也比较简单,通过...

    我刚开始安装的是版本5.2,后面通过控制面板卸载了该软件,还另外卸载了其包含的组件iWebPDF;后来在安装6.6.2.1新版本的软件时,忘记了关闭杀毒软件avast,结果就报出了RT的错误。

    解决方法其实也比较简单,通过装回旧版本5.2,然后覆盖安装新版本6.6.2.1,就OK了,当然这时要记得事前关闭杀毒软件,随后桌面的快捷方式Logo也能通过刷新手段同步更新过来。

    展开全文
  • 收起 展开

    2019-05-08 17:42:59
    收起 展开 在body里给一个大的div,再在大div里在写个div在给个类之后在给个类。 写了一个标签table他是一个表格cellspacing="0"这是...这俩个是我绝的有点难说一我和你们翻译下第一个是去斜体第二个是动画效果。 ...
  • 展开全部中文:“请保持环境卫生”;维族语:“مۇھىت تازىلىقىنى ساقلاڭ”。扩展资料以上翻32313133353236313431303231363533e59b9ee7ad9431333366303731译是由中国民族语文翻译局提供的翻译。...
  • Two-Frame Motion Estimation Based on Polynomial Expansion:基于多项式展开的两帧运动估计 Lucas/Kanade Meets Horn/Schunck: Combining Local and Global Optic Flow Methods:局部与全局光流方法的结合 High ...
  • GRAN论文翻译

    2017-04-25 22:10:42
    GRAN论文翻译GRAN论文链接注意:该翻译只是一部分,需要和原文对照着看,只是起到辅助的效果。part one摘要 Gatys等人 (2015)提出,优化像素以匹配卷积网络中的特征是渲染高视觉质量图像的一种方式。 展开这种...
  • 展开全部这不叫“翻译”。你的标题应该改为“请帮我给下面C程序添加注释,看e5a48de588b63231313335323631343130323136353331333363373737不懂”。#include"Wire.h"#include"I2Cdev.h"#include"ADXL345.h"ADXL345...
  • 同时与在场的40多位来自金融、制造、能源等行业企业信息化负责人聚焦机器翻译的价值、企业应用需求、未来发展趋势等话题展开深入的互动讨论,分享最佳实践经验,助力企业更好的提升机器翻译大规模产业化应用,推动...
  • 用户进入一个令人着迷的数字世界,在其中他们可以使用自动实时翻译以十二种语言与他人交谈,并观看他们在虚拟现实中令人眼花rendered乱的对话中的情感内容。 由@ elsa-brown,@ thefishter,@ keziyah和@ssundby...
  • 展开全部失败乃成功之母 用英文翻译为e69da5e6ba903231313335323631343130323136353331333366303162Failure is the mother of success.;【词语】:失败乃成功之母【注音】:shī bài nǎi chéng gōng zhī mǔ...
  • 程序的翻译和链接

    2019-06-03 13:41:14
    程序的翻译简单来说就是将源文件转换成可执行程序。 下面有一张图可以形象的说明这个过程 从上图可以看出,源文件是通过编译器先转换成目标文件,目标...预处理(-E):预处理也包括四个步骤 头文件展开 宏替换 ...
  • 展开全部“恢复出厂设置”英文翻译是Resumefactorysetting。1、resume[英][rɪ'zju:m][美][rɪ'zju:m]v.继续;重新开e69da5e6ba9062616964757a686964616f31333363396434始;恢复职位;n.简历;摘要。[例句]The search is...
  • 一场来自民间的自发翻译活动这时低调的展开了,针对与 OpenDaylight Lithium 版本同时发布的《OpenDayl ight User Guide Lithium (June 29, 2015)》文档展开翻译
  • 谷歌插件 划词翻译 使用鼠标选中需要翻译的文本内容,然后在旁边会出现一个绿色的「译」按钮,点击一下就可以展开并进行翻译
  • "翻译文学"与"源文"之间的关系类似于"历史文本"与"历史"之间的关系,而"历史文本"与"历史"的差异性和...这样的翻译文学文化批评是从翻译文学史的三个基本要素(译本、译者和翻译事件)展开的,有着鲜明的翻译文学学科意识。
  • 展开 论文地址:http://arxiv.org/pdf/1801.07698v1.pdf 最新版本v3的论文翻译:Arcface v3 论文翻译与解读 Arcface v1 论文的篇幅比较长,花费了本人3天的时间进行翻译解读,希望能够帮助读者更好地理解论文。 ...
  • 翻译工作实习报告.doc

    2020-12-27 14:48:40
    为以后正常工作的展开奠定了坚实的基础,从个人发展方面说,对我影响最大的应该是作为一个社会人工作作风以及在工作过程中专业知识对工作的重要作用,因为这些都是我在校学习中不曾接触过的方面,所以我将在报告中...
  • WinSCP - 翻译 - 更新 - 4.1.8Expanding/collapsing capability of message boxes removed.去掉了消息框的展开/压缩。Bug fix: Icon on Properties dialog is shrunk to fit, if shell icon size is too large. 323...
  • 在上海外国语大学昨天举办的一场2019世界人工智能大会分论坛上,多位来自学界、业界的学者就此展开一场热烈的辩论。“AI翻译势不可挡。”在这一共识下,与会专家指出了另一个需要强调的结论——即便AI翻译能做到99%...
  • 以下例程将以有道智云为例展开。 ???? 注册成功后首先创建一个实例: ???? 紧接着创建一个应用,注意接入方式选择API: ????‍♀ 应用创建好之后需要绑定刚才创建的实例: 之后便可以通过API来进行
  • 展开全部“分类”的英文:classify例句:People often don't classify garbage.人们经常不把垃圾分类。词汇解析:classify英 [ˈklæsɪfaɪ] 美 [ˈklæsəˌfaɪ]vt.分类,归类636f707962616964757a686964616f...
  • 使用RecyclerView实现列表展开动画

    万次阅读 2015-07-24 10:19:51
    Android开发:使用RecyclerView实现列表展开动画效果(翻译+转载)
  • 为了解决这一问题,本文提出了一种端到端可训练展开网络,它利用了基于学习的方法和基于模型的方法。具体来说,通过半二次分裂算法展开映射推理,可以得到由交替求解一个数据子问题和一个先验子问题组成的固定迭代...
  • 资源名称:Pro OGRE 3D Programming中文翻译版本0.2.0内容简介: 在具体讨论Ogre3D SDK概念之前,我们先简单介绍一下一些基本的概念,这有助于我们展开具体Ogre3D SDK的讨论。其中最重要的两个概念是API和SDK。 API...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 965
精华内容 386
关键字:

展开翻译