CN116266122A - 寄存器堆虚拟化:应用和方法 - Google Patents
寄存器堆虚拟化:应用和方法 Download PDFInfo
- Publication number
- CN116266122A CN116266122A CN202211563946.XA CN202211563946A CN116266122A CN 116266122 A CN116266122 A CN 116266122A CN 202211563946 A CN202211563946 A CN 202211563946A CN 116266122 A CN116266122 A CN 116266122A
- Authority
- CN
- China
- Prior art keywords
- register file
- contents
- data
- processor
- shadow buffer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 239000000872 buffer Substances 0.000 claims abstract description 90
- 230000003068 static effect Effects 0.000 claims description 7
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 76
- 238000010586 diagram Methods 0.000 description 33
- 238000012545 processing Methods 0.000 description 28
- 238000006073 displacement reaction Methods 0.000 description 23
- 238000007667 floating Methods 0.000 description 14
- 238000012546 transfer Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 7
- 230000003416 augmentation Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000000873 masking effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000004984 smart glass Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 244000061520 Angelica archangelica Species 0.000 description 1
- 235000001287 Guettarda speciosa Nutrition 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0667—Virtualisation aspects at data level, e.g. file, record or object virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30116—Shadow registers, e.g. coupled registers, not forming part of the register space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/41—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
- G11C11/413—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请公开了寄存器堆虚拟化:应用和方法。描述了涉及寄存器堆虚拟化技术的方法和装置。在实施例中,寄存器堆包括多个寄存器堆单元。这些寄存器堆单元中的每个寄存器堆单元包括寄存器堆条目和描影缓冲器。逻辑电路引起输入数据到描影缓冲器的存储,而寄存器堆条目中存储的数据是可访问的以用于执行一个或多个操作。还公开并要求保护其他实施例。
Description
技术领域
本公开总体上涉及处理器领域。更具体地,一些实施例涉及寄存器堆虚拟化的应用和/或方法。
背景技术
一般而言,处理器的寄存器堆包括多个处理器寄存器。在现代处理器中,使用静态随机存取存储器(Static Random-Access Memory,SRAM)来实现寄存器堆。为了改善性能,寄存器堆可以被实现为具有分开的读取端口和写入端口。
由于处理器操作依赖于寄存器堆来存储用于各种处理器操作的数据,因此寄存器堆的实现可能对处理器性能具有直接的影响。
附图说明
参考所附附图提供详细描述。在附图中,附图标记最左边的(一个或多个)数字标识该附图标记在其中首次出现的附图。相同的附图标记在不同附图中的使用指示类似或相同的项。
图1图示根据实施例的扩展的寄存器堆单元。
图2A、2B、2C和2D图示根据一些实施例的样本寄存器堆传输模式。
图3图示根据一些实施例的、在后台在描影缓冲器中的流式加载操作的时间上的快照。
图4图示根据实施例的、被分区到多个域中的寄存器堆的框图。
图5图示根据实施例的具有动态状态的数据块的管线处理的框图。
图6图示根据实施例的用于对闪存模式的闪存-切换扩展的组件。
图7图示根据实施例的、用于对虚拟寄存器堆操作的两级嵌套循环的方法的流程图。
图8A图示根据实施例的具有缓冲器、流送总线和针对顺序锁存的控制的扩展寄存器堆条目。
图8B和图8C图示根据一些实施例的、与针对图8A的扩展寄存器堆条目的设置和控制有关的进一步的细节。
图9A图示根据实施例的、用于提供寄存器堆流模式的系统的框图。
图9B、图9C和图9D图示根据一些实施例的、与图9A的系统有关的进一步的细节。
图10A是图示根据实施例的示例性指令格式的框图。
图10B是图示根据一个实施例的指令格式中构成完整操作码字段的字段的框图。
图10C是图示根据一个实施例的指令格式中构成寄存器索引字段的字段的框图。
图10D是图示根据一个实施例的指令格式中构成扩充操作字段的字段的框图。
图11是根据一个实施例的寄存器体系结构的框图。
图12A是图示出根据实施例的示例性有序管线以及示例性寄存器重命名、乱序发出/执行管线两者的框图。
图12B是图示根据实施例的要包括在处理器中的有序体系结构核心的示例性实施例和示例性的寄存器重命名、乱序发出/执行体系结构核心两者的框图。
图13图示根据实施例的片上系统(System On Chip,SOC)封装的框图。
图14是根据实施例的处理系统的框图。
图15是根据一些实施例的具有一个或多个处理器核心的处理器的实施例的框图。
图16是根据实施例的图形处理器的框图。
具体实施方式
在下列描述中,阐述了众多特定细节以便提供对各实施例的透彻理解。然而,在没有这些特定细节的情况下,也可实施各实施例。在其他实例中,未详细描述公知的方法、过程、组件和电路,以免使特定实施例变得模糊。此外,实施例的各方面可使用各种手段来执行,诸如集成半导体电路(“硬件”)、组织成一个或多个程序的计算机可读指令(“软件”)、或硬件与软件的某种组合。出于本公开的目的,对“逻辑”的引用将意指硬件(诸如,逻辑电路或更一般地说,电路系统或电路)、软件、固件或它们的某种组合。
如上文所提及,寄存器堆的实现方式可能对处理器性能具有直接影响。一般而言,寄存器堆(Register File,RF)设计和操作提出两个问题。第一个是由RF的大小(条目的数量)施加的微体系结构限制。第二个是RF与下一级存储器(例如,SRAM后备存储)之间的成块传输的等待时间。
例如,在具有对SRAM后备存储的共享访问的分片阵列加速器的一般情况下,RF可以对能够在峰值性能下运行的工作集的大小设置事实上的限制。在(例如,图形处理单元(Graphics Processing Unit,GPU)的)多线程的单指令多数据(Single Instruction,Multiple Data,SIMD)处理器的目标情况下,SIMD通道的RF中的条目的数量还对可以同时活跃的线程的数量设置上限。
附加地,在与SRAM后备存储交换数据的RF的一般情况下,传输速率最终受限于至RF的写入端口的数量(典型地,1-8个端口)。在这种制度下,针对并发线程的许多状态数据都需要驻留在RF中,而不是按需从后备存储被加载。另一限制是后备存储本身的大小。由此,对该存储的‘未命中’引发等待时间代价,根据利特尔定律,这可能需要附加的线程来掩蔽。
此外,用于增加RF的大小的一些实现方式利用先进的制造工艺的增加的密度(例如,从10纳米(nm)节点到7纳米节点),并转向替代的存储装置类型(例如,从动态存储装置到静态的基于锁存器的存储装置)。同样,连同2.5维(2.5dimensional,2.5D)和三维(three-dimensional,3D)集成技术,增加器件密度可以用来增加SRAM存储的大小。然而,对提升RF的大小和访问带宽两者的持续努力得到越来越少的回报。即,高端口数RF的大小可能典型地受限于线轨的面积。然而,先进制造工艺不断缩小的特征大小不成比例地有利于器件密度的增加,而在上部金属层的密度方面只产生了不太多的收益。而且,分离式存储器的3D放置可能实现更大的后备存储,但也可能导致将互连布线成跨管芯至管芯的边界,在这种情况下,信号密度比面内互连低得多。
为了解决这些问题中的至少一些,一个或多个实施例提供用于寄存器堆虚拟化的技术。在实施例中,提供了用于RF虚拟化的硬件实现,例如,其中具有给定物理容量(X个条目)的RF在功能上等同于具有更大容量(X+D个条目,其中“D”指代附加容量)的RF的实例。一个实施例将一种或多种等待时间隐藏技术直接映射到寄存器堆的设计。而且,在一些实施例中,对RF条目的硬件扩展使数据能够在SRAM后备存储与集成的描影缓冲器之间并行流送。另外,各种闪存模式可支持描影缓冲器与RF条目之间的单周期闪存-填充传输。RF条目缓冲器对的群组可以进一步动态地被分区为“域”,这些域各自具有针对锁存和传输的可选模式。
结果是,性能受限于寄存器堆的容量和刷新速率的许多微体系结构可以看到与工作负荷相关的性能的增益。在一个实施例中,“虚拟RF”的功能性大小可以与私有的存储器后备存储一样大。来自此种方式的性能增益在其中3D集成将高容量后备存储定位在与包含RF的计算管芯垂直地对齐的单独管芯上的实例中是最强的。
图1图示根据实施例的扩展的寄存器堆单元100。如图1中所示,单个RF条目102被扩展为包括附加的描影缓冲器104和用于模式控制接口电路106的附加逻辑。
在一个实施例中,描影缓冲器104(在实施例中,其为锁存器)与RF条目102具有相同的容量。接口电路106针对锁存和传输实现两种单独的模式:(1)前台-后台模式;以及(2)闪存-填充模式。而且,这些扩展的RF条目‘单元’中的每一个的操作均可独立地由(例如,4比特)控制状态寄存器(Control Status Register,CSR)108来控制,在至少一个实施例中,该控制状态寄存器108可被嵌入在每个单元中。在实施例中,CSR 108是动态地可加载的。参照图8A讨论此类实现方式的进一步的组件级和信号级细节。
图2A、2B、2C和2D图示根据一些实施例的样本寄存器堆传输模式。扩展的寄存器堆由扩展的RF条目单元100的级联组成。在各实施例中,图2A、2B、2C和2D中示出的传输模式允许寄存器堆虚拟化。
图2A图示针对前台-后台模式的RF模式读取/写入和从SRAM的缓冲器模式加载。图2B图示针对前台-后台模式的RF模式读取/写入和到SRAM的缓冲器模式存储。图2C图示针对闪存-填充模式的、用于寄存器到描影缓冲器操作的闪存RF到缓冲器。图2D图示针对闪存-填充模式的、用于描影缓冲器到寄存器操作的闪存缓冲器到RF。
更具体地,图2A图示根据实施例的前台-后台模式。此处,在前台,寄存器堆条目服务于到计算管线的加载(202)和存储(204)。在后台,缓冲器正在从SRAM端口206被写入(205)。在一个实施例中,在后台模式下,CSR(108)将RF的选定的单元配置成用于将缓冲器内容路由至出站邻居。在前台模式下,RF条目服务于来自计算管线的访问请求。
在实施例中,后台流送的方向是可选的,并且也可以被设置为流送存储到SRAM(208),例如,如图2B中所示。在随后的附图中,根据一个实施例,此种后台传输被实现为移位寄存器先入先出(First In,First Out,FIFO)操作。但是,在其他实施例中,实际的传输可以使用诸如‘开放锁存器(open latch)’路由或专用总线之类的结构。根据一个实施例,附加的电路细节在图8A中示出。
图2C示出根据实施例的闪存-填充模式。此处,整个寄存器堆的内容例如全部在单个周期中被闪存至描影缓冲器(210)。此处,每个RF条目的内容在单个周期中被闪存至该单元的描影缓冲器。类似地,传输可以从描影缓冲器进行至寄存器堆条目(212),诸如在图2D中所图示。对于图2C,在每个单元中,对应的CSR可以配置从RF条目的输出(RFout(RF输出))到描影缓冲器的输入(BFin(BF输入))的直接信号路径。在此种模式下,在单元之间不存在通信。类似地,对于图2D,CSR可以配置从描影缓冲器的输出(BFout(BF输出))到RF单元的输入(RFin(RF输入))的直接信号路径。
图3图示根据一些实施例的在后台在描影缓冲器中的流式加载操作的时间上的快照。一个基本的传输流是静态数据块的简单管线化。假定工作集被细分为块(被标记为编号为1的块、编号为2的块和编号为3的块)并被存储在SRAM后备存储中。假定每个块小到足以适配于寄存器堆。假定块中的数据是静态的,也就是说对这些块的内容的任何改变均不必被保存。
而且,图3示出三个时间快照(302、304和306)。每个快照由两行组成;底部行上的块是单独的寄存器堆条目。顶部行上的块是它们相应的描影缓冲器。最上方的快照(302)示出前台-后台模式,其中编号为1的数据块(A)在寄存器堆中是活跃的并且正在服务于到计算管线的加载/存储。在后台,编号为2的数据块(B)正在从SRAM流入。在中间快照(304)中,编号为2的数据块的加载完成,并且该数据块的内容被闪存至寄存器堆条目。在下部快照(306)中,过程重复,其中对编号为2的数据块执行计算,而编号为3的数据块(C)正在被加载到描影缓冲器中。
图4图示根据实施例的、被分区到多个域中的寄存器堆400的框图。对图3的设计的扩展在于将寄存器堆动态地分区到独立的域中的能力,每个域具有针对锁存和传输的可选模式。
在图4的示例中,寄存器堆已经被细分到三个域(在图4中被标记为D1、D2和D3)中。在域D1中,寄存器堆的内容正在被锁存到描影缓冲器中。在域D2中,例如,潜在地在域D1正在以相反的方向传输的同一时钟周期中,描影缓冲器内容正在被锁存到寄存器条目中。最后,域D3正在前台-后台模式下操作,其中缓冲器数据流送至SRAM。
在各实施例中,域大小和/或传输模式是动态地可配置的,其中最小域大小是单个寄存器堆条目。域分区实现具有动态状态的数据块的管线化。换言之,硬件现在能够高效地从SRAM加载数据块,作为计算的部分而随其状态进行改变,并随后将经变换的块存储回到SRAM。
图5图示根据实施例的具有动态状态的数据块的管线处理500的框图。在图5的图示中,工作集被细分为数据块并被存储在SRAM后备存储中。时间线示图示出时域流(在该图中,标签“副RF”指代描影缓冲器)。本质上,这是以下各项的重复的周期:(1)在前台对一个块进行操作;以及(2)当在后台时:(i)顺序地保存前一块上的工作,以及(ii)顺序地预加载下一块。
考虑来自图5的前两个周期:(a)在最左侧,编号为0的数据块(DB#0)已经被加载到描影缓冲器(被标记为副RF)中(即,502);(b)闪存-填充将编号为0的块移动到寄存器堆中(即,504);(c)紧接在闪存-填充之后,对编号为0的块的计算在前台开始(即,506),而编号为1的块到副RF中的加载在后台开始(即,508);(d)一旦对编号为0的块的计算完成,则发生单周期闪存-交换(即,510)。对于此种闪存-交换,寄存器堆被分到两个域中。在一个域中,编号为0的块的经变换的内容从寄存器堆被闪存-填充到副RF中。在另一域中,编号为1的块从副RF被闪存-填充到寄存器堆中;(e)一旦闪存-交换完成,则对编号为1的块的计算在前台开始(即,512);(f)与此并行的,在后台,前一块(编号为0的块)的经变换的内容首先被流送回到SRAM(即,514),并且随后,来自下一块(编号为2的块)的数据从SRAM向外流送到副RF中(即,516)。对一个块的前台计算、连同(i)前一块的写回和(ii)下一块的预取的该周期被重复,直到SRAM中的所有块均已被处理。
在操作细节之外,图5的示例还表明“虚拟寄存器堆”的功能性容量可以显著大于物理寄存器堆的容量。在至少一个实施例中,在块的大小适当且针对每一块的计算时间的大小适当的情况下,“虚拟寄存器堆”的功能性容量可以与SRAM后备存储本身的容量一样大。
图6图示根据实施例的用于对闪存模式的闪存-切换扩展的组件。参照图6公开了启用‘闪存-切换’模式的对RF的附加扩展。此处,用触发器(flip-flop)来代替基于锁存器的描影缓冲器。前台-后台模式保持不变。但是,‘闪存-填充’模式被扩展为包括闪存-切换选项,例如一种这样的选项:其中,与寄存器堆条目和描影缓冲器中的一者被覆写相反,寄存器堆条目的内容和描影缓冲器内容就地被交换。
更具体地,图6的(a)部分图示寄存器堆条目与其描影缓冲器之间的双向信号流(即,602/604)。在每个单元中,CSR 108配置RF条目与描影缓冲器(例如,触发器)之间的直接内容交换。如所示,在单元之间不存在通信。
图6的(b)部分将闪存-切换的效果与闪存-填充的效果进行比较。一个差别在于:闪存-切换就地交换主存储装置和副存储装置的内容,而闪存-填充对目标的内容进行覆写。尽管存在很强的性能提升的潜力,但转用基于触发器的描影缓冲器可能增加功率和/或面积的增量成本。
图7图示根据实施例的、用于对虚拟寄存器堆操作的两级嵌套循环的方法700的流程图。在实施例中,图7描绘根据实施例的、针对闪存-切换模式的操作的假想示例。工作集被细分为数据块并被存储在SRAM后备存储中。此处,由两个独立的线程对每个数据块进行操作,每个独立的线程具有持久性状态。
该示例被构造成两级嵌套循环。外循环顺序地按块读取。内循环利用两个线程对每个块进行操作,每个线程具有在寄存器堆中的持久性存储。作为内循环的部分,闪存-切换操作在线程之间进行转换。作为外循环的部分,闪存-填充操作在各块中循环。
在具有用于RF重命名的复杂硬件流程的核心微体系结构中,此种方式可能成问题。但是,在专用加速器的专门化的RF设计中,提出的硬件扩展可能更容易适配。参照图7,上文的示例是‘虚拟寄存器堆’的表观容量增长至SRAM后备存储的实际物理容量的有意义的实例。
图8A图示根据实施例的具有缓冲器、流送总线和针对顺序锁存的控制的扩展寄存器堆条目800。图8B和图8C图示根据一些实施例的、与针对图8A的扩展寄存器堆条目的设置和控制有关的进一步的细节。图8A的简图图示用于单个RF条目单元的组件群组和信号收发。此处示出的组件群组为:(1)用于RF条目102的存储元件;(2)描影缓冲器802(例如,针对单向闪存-填充的锁存器和针对双向闪存-切换的触发器);(3)用于SRAM 806与描影缓冲器802之间的流送的单个共享写入总线804;以及(4)对由缓冲器和SRAM对写入总线的访问进行排序的控制条(control strip)808。
而且,图8A表明,对于针对RF虚拟化的硬件扩展,功率和/或面积的主要增加因素是附加的存储元件和对于所有的RF条目共同的单个线轨。此种设计需要添加一个共享写入总线804,这与寄存器堆中的读取/写入端口的数量无关。由此,此种设计方式良好适合于线轨受限的RF结构,但在这种情况下,设备层未被充分利用。此处,使存储元件加倍(例如,插入描影寄存器)的固有成本被未使用的设备所缓和,并且单个线轨的添加可以被看作是为了得到增加性能的可接受的增量成本。
如图8A中所示,在寄存器堆内,一些实施例的物理特性在于(例如,全部)被互连至单个共享线轨804的描影缓冲器的阵列,但是不具有到RF读取/写入端口的信号路径。描影缓冲器是与各个寄存器1:1配对的,在每个寄存器与其相应的描影缓冲器之间具有多路复用器仲裁的信号路径(例如,使用(一个或多个)多路复用器810/812)。
图8B和图8C图示根据一些实施例的、与针对图8A的扩展寄存器堆条目的设置和控制有关的进一步的细节。更具体地,图8B包括源自链_锁存_控制808并且耦合至RF条目和描影缓冲器的组件的五个连接,这五个连接被编号为具有圆圈的1至5。图8C提供与这五个连接中的每个连接有关的附加细节。图8C还示出根据3比特配置的样本CSR设置。在图8C中,“SSw”代表源同步写入(其中“w”代表写入),并且“SRAM dir”指代数据流的方向(例如,从缓冲器流向SRAM/从SRAM流动)。写入排序块用于为缓冲器将数据发送到SRAM提供时钟。写入排序器是可确定有多少值要发送到SRAM的计数器。该计数器还可被设置用于被发送至SRAM的脉冲之间的特定延迟。
图9A图示根据实施例的、用于提供寄存器堆流模式的系统900的框图。例如,对于流式读取(例如,SRAM 902到缓冲器904),直接存储器访问(Direct Memory Access,DMA)控制器906向SRAM 902断言读取地址。结果是,SRAM数据和源同步锁存信号908被锁存用于输入到管芯到管芯(die-to-die,D2D)定制模拟电路,诸如硬知识产权(Hard IntellectualProperty,HIP)接口910。
数据和锁存信号912在处理元件(Processing Element,PE)的SRAM端口处被锁存。可选地,在进入到描影缓冲器链904之前,可以使用最后的中继器914。进而,控制逻辑916(控制切片)可将数据从共同的总线选通至(一个或多个)目标描影缓冲器904中。此处,在实施例中,在寄存器堆服务于计算管线的同时,SRAM数据被加载到描影缓冲器904中。并且,一旦从SRAM到描影缓冲器的传输完成,则一个或两个周期足以将描影缓冲器的整个内容闪存到寄存器堆条目中。在至少一个实施例中,对于寄存器堆实现方式,访问SRAM(例如,在具有或不具有堆叠的管芯的封装中的不同的管芯上)中存储的数据的等待时间被隐藏。
进一步地,在一些实施例中,可利用一个或多个指令来控制本文中所讨论的实施例的各种特征,包括发起数据从后备存储装置(例如,SRAM)到RF描影缓冲器的后台传输。在至少一些实施例中,本文中所讨论的指令中的一者或多者可遵循参考图10A-图10D所讨论的指令格式。
在一个或多个实施例中,前台指令包括:加载或存储寄存器堆(加载从网格端口取得)以及加载或存储SRAM。对于加载/存储寄存器堆,操作码是加载/存储寄存器条目,地址是RF地址,并且数据用于存储。加载或存储SRAM指令可包括操作码(加载/存储SRAM),具有地址(SRAM地址)、数据(用于存储)。后台指令可包括:DMA访问加载/存储(参见例如,图9D)和闪存指令。DMA访问加载/存储包括线性且跨步式的配置。闪存指令包括用于指示从RF到描影缓冲器或从描影缓冲器到RF的闪存或者交换的操作码。
图9B、图9C和图9D图示根据一些实施例的、与图9A的系统有关的进一步的细节。更具体地,图9B图示根据实施例的、用于地址生成和计算配置的系统920的框图。系统920可采用即发即弃(fire and forget)方式使相应的SRAM操作自动化。例如,可利用受状态机922控制的少量算术逻辑和参数存储装置。PE计算路径的迁移可通过将地址生成和简单算术移动至SRAM来实现。在一些实施例中,可支持五种模式。模式选择可经由被编码到地址行上并用控制比特标记的描述符来完成。
如图9B中所示,五种模式可包括:通过(其可以是默认模式)、设置、自动地址生成、初始化、以及自动递增/递减。根据一些实施例,针对这些模式中的每个模式的样本细节在图9B中图示。
图9C图示根据一些实施例的、与模式选择和系统的一些操作有关的样本细节。(例如,12比特)地址(“<addr>(<地址>)”)行上的数据可由有限状态机(Finite StateMachine,FSM)930捕捉并被被解释为对状态机的命令。
图9C的(a)部分示出用于设置DMA引擎的信号流。超长指令字(Very LongInstruction Word,VLIW)可选择图9C的(a)部分中示出的模式。在实施例中,PE发送<地址>行上的模式特定的参数数据(其中,到SRAM的<地址>行被禁用)。一旦设置操作完成,则开始模式执行(例如,在<运行>(<run>)命令的断言时)。
图9C的(b)部分示出操作中的信号流。对SRAM读取/写入端口的访问可由FSM 930来控制。在实施例中,PE经由以下四种命令来控制操作:(1)重置:立即返回至默认的通过模式;(2)运行:选定的模式变成活跃的;(3)暂停:操作被冻结并且状态被维持;和/或(4)恢复:从暂停的状态继续。
图9D图示用于生成模式化地址序列的样本序列,包括线性的地址序列(a)、具有延迟的线性的地址序列(b)、跨步式的地址序列(c)以及跨步式的块地址序列(d)。如所示,线性的地址序列(a)可利用开始、结束和延迟值,并且在延迟为零的情况下可以不具有间隙,或者对于具有延迟的线性的序列(b)可针对每一延迟值具有一致的间隙。跨步式的地址序列(c)可利用开始、结束、块(“bk”)大小和块偏移。结果是,如所示,地址序列可基于块大小和块偏移两者对地址进行间隔。跨步式的块(d)也可利用块大小和块偏移值,但是该块大小是与由跨步式的(c)序列使用的块大小的值不同的值。
如图9D的底部所示,用于地址序列的自动化生成的参数可包括:开始、结束、延迟、块大小、块偏移、以及加载/存储。如先前所讨论,这些参数可被用于如图9D的样本序列(a)、(b)、(c)和(d)中所图示的每个地址序列。
另外,一些实施例可应用于包括一个或多个处理器(例如,其中,该一个或多个处理器可包括一个或多个处理器核心)的计算系统中,计算系统诸如参照图1及以下等等所讨论的那些计算系统,包括例如桌面型电脑、工作站、计算机服务器、服务器刀片、或移动计算设备。移动计算设备可包括智能电话、平板、UMPC(超移动个人计算机)、膝上型电脑、超级本TM计算设备、可穿戴设备(诸如,智能手表、智能指环、智能手环或智能眼镜)等。
指令集
指令集可包括一种或多种指令格式。给定的指令格式可定义各种字段(例如,比特的数量、比特的位置)以指定将要执行的操作(例如,操作码)以及将对其执行该操作的(一个或多个)操作对象和/或(一个或多个)其他数据字段(例如,掩码),等等。通过指令模板(或子格式)的定义来进一步分解一些指令格式。例如,可将给定指令格式的指令模板定义为具有该指令格式的字段(所包括的字段通常按照相同顺序,但是至少一些字段具有不同的比特的位置,因为较少的字段被包括)的不同子集,和/或定义为具有以不同方式进行解释的给定字段。由此,ISA的每一个指令使用给定的指令格式(并且如果经定义,则按照该指令格式的指令模板中的给定的一个指令模板)来表达,并包括用于指定操作和操作对象的字段。例如,示例性ADD(加法)指令具有特定的操作码和指令格式,该特定的指令格式包括用于指定该操作码的操作码字段和用于选择操作对象(源1/目的地以及源2)的操作对象字段;并且该ADD指令在指令流中出现将使得在操作对象字段中具有选择特定操作对象的特定的内容。已经推出和/或发布了被称为高级向量扩展(Advanced Vector Extension,AVX)(AVX1和AVX2)和利用向量扩展(Vector Extension,VEX)编码方案的SIMD扩展集(参见例如2014年9月的64和IA-32体系结构软件开发者手册;并且参见2014年10月的高级向量扩展编程参考)。
示例性指令格式
本文中所描述的(一个或多个)指令的实施例能以不同的格式体现。另外,在下文中详述示例性系统、体系结构和管线。(一个或多个)指令的实施例可在此类系统、体系结构和管线上执行,但是不限于详述的那些系统、体系结构和管线。
尽管将描述其中向量友好指令格式支持以下情况的实施例:64字节向量操作对象长度(或大小)与32比特(4字节)或64比特(8字节)数据元素宽度(或大小)(并且由此,64字节向量由16个双字大小的元素组成,或者替代地由8个四字大小的元素组成);64字节向量操作对象长度(或大小)与16比特(2字节)或8比特(1字节)数据元素宽度(或大小);32字节向量操作对象长度(或大小)与32比特(4字节)、64比特(8字节)、16比特(2字节)或8比特(1字节)数据元素宽度(或大小);以及16字节向量操作对象长度(或大小)与32比特(4字节)、64比特(8字节)、16比特(2字节)、或8比特(1字节)数据元素宽度(或大小);但是替代实施例可支持更大、更小和/或不同的向量操作对象大小(例如,256字节向量操作对象)与更大、更小或不同的数据元素宽度(例如,128比特(16字节)数据元素宽度)。
图10A是图示根据实施例的示例性指令格式的框图。图10A示出指令格式1000,其指定各字段的位置、大小、解释和次序、以及那些字段中的一些字段的值,在这个意义上,该指令格式1000是专用的。指令格式1000可用于扩展x86指令集,并且由此字段中的一些字段与如在现有的x86指令集及其扩展(例如,AVX)中所使用的那些字段类似或相同。该格式保持与具有扩展的现有x86指令集的前缀编码字段、实操作码字节字段、MOD R/M字段、SIB字段、位移字段和立即数字段一致。
EVEX前缀(字节0-3)1002——以四字节形式进行编码。
格式字段1082(EVEX字节0,比特[7:0])——第一字节(EVEX字节0)是格式字段1082,并且它包含0x62(在一个实施例中,为用于区分向量友好指令格式的唯一值)。
第二-第四字节(EVEX字节1-3)包括提供专用能力的多个比特字段。
REX字段1005(EVEX字节1,比特[7-5])——由EVEX.R比特字段(EVEX字节1,比特[7]–R)、EVEX.X比特字段(EVEX字节1,比特[6]–X)以及(1057BEX字节1,比特[5]–B)组成。EVEX.R、EVEX.X和EVEX.B比特字段提供与对应的VEX比特字段相同的功能,并且使用1补码的形式进行编码,即ZMM0被编码为1111B,ZMM15被编码为0000B。这些指令的其他字段对如在本领域中已知的寄存器索引的较低三个比特(rrr、xxx和bbb)进行编码,由此可通过对EVEX.R、EVEX.X和EVEX.B相加来形成Rrrr、Xxxx和Bbbb。
REX’字段1010——这是用于对扩展的32个寄存器集合的较高16个或较低16个寄存器进行编码的EVEX.R’比特字段(EVEX字节1,比特[4]–R’)。在一个实施例中,该比特与以下指示的其他比特一起以比特反转的格式存储以(在公知x86的32比特模式下)与BOUND指令进行区分,该BOUND指令的实操作码字节是62,但是在MOD R/M字段(在下文中描述)中不接受MOD字段中的值11;替代实施例不以反转的格式存储该指示的比特以及以下其他指示的比特。值1用于对较低16个寄存器进行编码。换句话说,通过组合EVEX.R’、EVEX.R以及来自其他字段的其他RRR来形成R’Rrrr。
操作码映射字段1015(EVEX字节1,比特[3:0]–mmmm)——其内容对隐含的前导操作码字节(0F、0F 38或0F 3)进行编码。
数据元素宽度字段1064(EVEX字节2,比特[7]–W)——由记号EVEX.W表示。EVEX.W用于定义数据类型(32比特数据元素或64比特数据元素)的粒度(大小)。如果支持仅一个数据元素宽度和/或使用操作码的某一方面来支持多个数据元素宽度,则该字段是不需要的,在这个意义上,该字段是可选的。
EVEX.vvvv 1020(EVEX字节2,比特[6:3]-vvvv)——EVEX.vvvv的作用可包括如下:1)EVEX.vvvv对以反转(1补码)形式指定的第一源寄存器操作对象进行编码,并且对具有两个或更多个源操作对象的指令有效;2)EVEX.vvvv对针对特定向量位移以1补码的形式指定的目的地寄存器操作对象进行编码;或者3)EVEX.vvvv不对任何操作对象进行编码,该字段被预留,并且应当包含1111b。由此,EVEX.vvvv字段1020对以反转(1补码)的形式存储的第一源寄存器指定符的4个低阶比特进行编码。取决于该指令,额外不同的EVEX比特字段用于将指定符大小扩展到32个寄存器。
EVEX.U 1068类字段(EVEX字节2,比特[2]-U)——如果EVEX.U=0,则它指示A类(支持合并-写入掩蔽)或EVEX.U0;如果EVEX.U=1,则它指示B类(支持归零和合并-写入掩蔽)或EVEX.U1。
前缀编码字段1025(EVEX字节2,比特[1:0]-pp)——提供了用于基础操作字段的附加比特。除了对以EVEX前缀格式的传统SSE指令提供支持以外,这也具有压缩SIMD前缀的益处(EVEX前缀仅需要2比特,而不是需要字节来表达SIMD前缀)。在一个实施例中,为了支持使用以传统格式和以EVEX前缀格式两者的SIMD前缀(66H、F2H、F3H)的传统SSE指令,将这些传统SIMD前缀编码成SIMD前缀编码字段;并且在运行时在被提供给解码器的PLA之前被扩展成传统SIMD前缀(因此,在无需修改的情况下,PLA既可执行传统格式的这些传统指令又可执行EVEX格式的这些传统指令)。虽然较新的指令可将EVEX前缀编码字段的内容直接用作操作码扩展,但是为了一致性,特定实施例以类似的方式扩展,但允许由这些传统SIMD前缀指定的不同含义。替代实施例可重新设计PLA以支持2比特SIMD前缀编码,并且由此不需要扩展。
α字段1053(EVEX字节3,比特[7]–EH,也称为EVEX.EH、EVEX.rs、EVEX.RL、EVEX.写入掩码控制、以及EVEX.N;也以α图示)——其内容区分要执行不同的扩充操作类型中的哪个扩充操作类型。
β字段1055(EVEX字节3,比特[6:4]-SSS,也称为EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB,还以βββ图示)——区分要执行操作中的具有指定类型的哪些操作。
REX’字段1010——这是REX’字段的其余部分,并且是可用于对扩展的32个寄存器集合的较高16个或较低16个寄存器进行编码的EVEX.V’比特字段(EVEX字节3,比特[3]–V’)。该比特以比特反转的格式存储。值1用于对较低16个寄存器进行编码。换句话说,通过组合EVEX.V’、EVEX.vvvv来形成V’VVVV。
写入掩码字段1071(EVEX字节3,比特[2:0]-kkk)——其内容指定写入掩码寄存器中的寄存器的索引。在一个实施例中,特定值EVEX.kkk=000具有暗示没有写入掩码用于特定指令的特殊行为(这能以各种方式实现,包括使用硬连线到所有对象的写入掩码或绕过掩蔽硬件的硬件来实现)。当合并时,向量掩码允许在执行(由基础操作和扩充操作指定的)任何操作期间保护目的地中的任何元素集免于更新;在另一实施例中,保持其中对应掩码比特具有0的目的地的每一元素的旧值。相较之下,当归零时,向量掩码允许在执行(由基础操作和扩充操作指定的)任何操作期间使目的地中的任何元素集归零;在一个实施例中,目的地的元素在对应掩码比特具有0值时被设置为0。该功能的子集是控制正在被执行的操作的向量长度(即,从第一个到最后一个正在被修改的元素的跨度)的能力;然而,被修改的元素不一定要是连续的。由此,写入掩码字段1071允许部分向量操作,这包括加载、存储、算术、逻辑等。尽管描述了其中写入掩码字段1071的内容选择了多个写入掩码寄存器中的包含要使用的写入掩码的一个写入掩码寄存器(并且由此写入掩码字段1071的内容间接地标识了要执行的掩蔽)的实施例,但是替代实施例替代或另外允许掩码写入字段1071的内容直接地指定要执行的掩蔽。
实操作码字段1030(字节4)还被称为操作码字节。操作码的一部分在该字段中被指定。
MOD R/M字段1040(字节5)包括MOD字段1042、寄存器索引字段1044和R/M字段1046。MOD字段1042的内容将存储器访问操作和非存储器访问操作区分开。寄存器索引字段1044的作用可被归结为两种情形:对目的地寄存器操作对象或源寄存器操作对象进行编码;或者被视为操作码扩展,并且不用于对任何指令操作对象进行编码。寄存器索引字段1044的内容直接地或通过地址生成来指定源操作对象和目的地操作对象在寄存器中或者在存储器中的位置。这些字段包括足够数量的比特以从PxQ(例如,32x512、7x128、32x1024、64x1024)寄存器堆中选择N个寄存器。尽管在一个实施例中N可以是最多三个源寄存器和一个目的地寄存器,但是替代实施例可支持更多或更少的源寄存器和目的地寄存器(例如,可支持最多两个源,其中这些源中的一个还用作目的地;可支持最多三个源,其中这些源中的一个还用作目的地;可支持最多两个源和一个目的地)。
R/M字段1046的作用可包括如下:对引用存储器地址的指令操作对象进行编码;或者对目的地寄存器操作对象或源寄存器操作对象进行编码。
缩放、索引、基址(Sacle,Index,Base,SIB)字节(字节6)——缩放字段1050的内容允许用于存储器地址生成(例如,用于使用2缩放*索引+基址的地址生成)的索引字段的内容的按比例缩放。SIB.xxx1054和SIB.bbb1056——先前已经针对寄存器索引Xxxx和Bbbb提及了这些字段的内容。
位移字段1063A(字节7-10)——当MOD字段1042包含10时,字节7-10是位移字段1063A,并且它与传统32比特位移(disp32)一样地工作,并且以字节粒度工作。这可被用作存储器地址生成的部分(例如,用于使用2缩放*索引+基址+位移的地址生成)。
位移因数字段1063B(字节7)——当MOD字段1042包含01时,字节7是位移因数字段1063B。该字段的位置与以字节粒度工作的传统x86指令集8比特位移(disp8)的位置相同。由于disp8是符号扩展的,因此它仅能在-128和127字节偏移之间寻址;在64字节缓存行的方面,disp8使用可被设为仅四个真正有用的值-128、-64、0和64的8比特;由于常常需要更大的范围,所以使用disp32;然而,disp32需要4个字节。与disp8和disp32对比,位移因数字段1063B是disp8的重新解释;当使用位移因数字段1063B时,通过将位移因数字段的内容乘以存储器操作对象访问的大小(N)来确定实际位移。该类型的位移被称为disp8*N。这减小了平均指令长度(单个字节用于位移,但具有大得多的范围)。此类经压缩的位移基于有效位移是存储器访问的粒度的倍数的假设,并且由此地址偏移的冗余低阶比特不需要被编码。换句话说,位移因数字段1063B替代传统x86指令集8比特位移。由此,位移因数字段1063B以与x86指令集8比特位移相同的方式被编码(因此,在ModRM/SIB编码规则中没有变化),唯一的不同在于,将disp8超载至disp8*N。换句话说,在编码规则或编码长度方面没有变化,而仅在有硬件对位移值的解释方面有变化(这需要将位移按比例缩放存储器操作对象的大小以获得字节式地址偏移)。
立即数字段1072允许指定立即数。该字段在不支持立即数的通用向量友好格式的实现方式中不存在且在不使用立即数的指令中不存在,在这个意义上,该字段是可选的。
完整操作码字段
图10B是图示根据一个实施例的构成完整操作码字段1074的具有指令格式1000的字段的框图。具体地,完整操作码字段1074包括格式字段1082、基础操作字段1043和数据元素宽度(W)字段1063。基础操作字段1043包括前缀编码字段1025、操作码映射字段1015和实操作码字段1030。
寄存器索引字段
图10C是图示根据一个实施例的构成寄存器索引字段1045的具有格式1000的字段的框图。具体地,寄存器索引字段1045包括REX字段1005、REX’字段1010、MODR/M.reg字段1044、MODR/M.r/m字段1046、VVVV字段1020、xxx字段1054和bbb字段1056。
扩充操作字段
图10D是图示根据一个实施例的构成扩充操作字段的具有指令格式1000的字段的框图。当类(U)字段1068包含0时,它表明EVEX.U0(A类1068A);当它包含1时,它表明EVEX.U1(B类1068B)。当U=0且MOD字段1042包含11(表明无存储器访问操作)时,α字段1053(EVEX字节3,比特[7]–EH)被解释为rs字段1053A。当rs字段1053A包含1(舍入1053A.1)时,β字段1055(EVEX字节3,比特[6:4]–SSS)被解释为舍入控制字段1055A。舍入控制字段1055A包括一比特SAE字段1096和两比特舍入操作字段1098。当rs字段1053A包含0(数据变换1053A.2)时,β字段1055(EVEX字节3,比特[6:4]–SSS)被解释为三比特数据变换字段1055B。当U=0且MOD字段1042包含00、01或10(表明存储器访问操作)时,α字段1053(EVEX字节3,比特[7]–EH)被解释为驱逐提示(EH)字段1053B,并且β字段1055(EVEX字节3,比特[6:4]–SSS)被解释为三比特数据操纵字段1055C。
当U=1时,α字段1053(EVEX字节3,比特[7]–EH)被解释为写入掩码控制(Z)字段1053C。当U=1且MOD字段1042包含11(表明无存储器访问操作)时,β字段1055的一部分(EVEX字节3,比特[4]–S0)被解释为RL字段1057A;当它包含1(舍入1057A.1)时,β字段1055的其余部分(EVEX字节3,比特[6-5]–S2-1)被解释为舍入操作字段1059A,而当RL字段1057A包含0(VSIZE 1057.A2)时,β字段1055的其余部分(EVEX字节3,比特[6-5]-S2-1)被解释为向量长度字段1059B(EVEX字节3,比特[6-5]–L1-0)。当U=1且MOD字段1042包含00、01或10(表明存储器访问操作)时,β字段1055(EVEX字节3,比特[6:4]–SSS)被解释为向量长度字段1059B(EVEX字节3,比特[6-5]–L1-0)和广播字段1057B(EVEX字节3,比特[4]–B)。
示例性寄存器体系结构
图11是根据一个实施例的寄存器体系结构1100的框图。在所图示的实施例中,有32个512比特宽的向量寄存器1110;这些寄存器被引用为ZMM0到ZMM31。较低的16个ZMM寄存器的较低阶256个比特覆盖(overlay)在寄存器YMM0-16上。较低的16个ZMM寄存器的较低阶128个比特(YMM寄存器的较低阶128个比特)覆盖在寄存器XMM0-15上。换句话说,向量长度字段1059B在最大长度与一个或多个其他较短长度之间进行选择,其中每一个此类较短长度是前一长度的一半,并且不具有向量长度字段1059B的指令模板在最大向量长度上操作。此外,在一个实施例中,指令格式1000的B类指令模板对紧缩(packed)或标量单/双精度浮点数据以及紧缩或标量整数数据操作。标量操作是对ZMM/YMM/XMM寄存器中的最低阶数据元素位置执行的操作;取决于实施例,较高阶数据元素位置要么保持与在指令之前相同,要么归零。
写入掩码寄存器1115——在所图示的实施例中,存在8个写入掩码寄存器(k0至k7),每一写入掩码寄存器的大小是64比特。在替代实施例中,写入掩码寄存器1115的大小是16比特。在一些实施例中,向量掩码寄存器k0无法用作写入掩码;当将正常指示k0的编码用作写入掩码时,它选择硬连线的写入掩码0xFFFF,从而有效地禁止写入掩蔽用于那个指令。
通用寄存器1125——在所示出的实施例中,有十六个64比特通用寄存器,这些寄存器与现有的x86寻址模式一起使用以对存储器操作对象寻址。这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8到R15来引用。
标量浮点栈寄存器堆(x87栈)1145,在其上面重叠了MMX紧缩整数平坦寄存器堆1150——在所图示的实施例中,x87栈是用于使用x87指令集扩展来对32/64/80比特浮点数据执行标量浮点操作的八元素栈;而使用MMX寄存器来对64比特紧缩整数数据执行操作,以及为在MMX与XMM寄存器之间执行的一些操作保存操作对象。
替代实施例可以使用更宽的或更窄的寄存器。另外,替代实施例可以使用更多、更少或不同的寄存器堆和寄存器。
示例性核心体系结构、处理器和计算机体系结构
处理器核心能以不同方式、出于不同的目的、并且在不同的处理器中实现。例如,此类核心的实现方式可包括:1)旨在用于通用计算的通用有序核心;2)旨在用于通用计算的高性能通用乱序核心;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实现方式可包括:1)CPU(中央处理单元),其包括旨在用于通用计算的一个或多个通用有序核心和/或旨在用于通用计算的一个或多个通用乱序核心;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核心。此类不同的处理器导致不同的计算机系统体系结构,这些计算机系统体系结构可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但在分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核心,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及4)片上系统,其可以将所描述的CPU(有时被称为(一个或多个)应用核心或(一个或多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核心体系结构,随后描述示例性处理器和计算机体系结构。
示例性核心体系结构
图12A是图示出根据实施例的示例性有序管线以及示例性寄存器重命名、乱序发出/执行管线两者的框图。图12B是图示根据实施例的要包括在处理器中的有序体系结构核心的示例性实施例和示例性的寄存器重命名、乱序发出/执行体系结构核心两者的框图。图12A-图12B中的实线框图示有序管线和有序核心,而虚线框的任选的增加图示寄存器重命名、乱序发出/执行管线和核心。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图12A中,处理器管线1200包括取得(fetch)阶段1202、长度解码阶段1204、解码阶段1206、分配阶段1208、重命名阶段1210、调度(也被称为调遣或发出)阶段1212、寄存器读取/存储器读取阶段1214、执行阶段1216、写回/存储器写入阶段1218、异常处置阶段1222和提交阶段1224。
图12B示出处理器核心1290,该处理器核心1290包括前端单元1230,该前端单元1230耦合到执行引擎单元1250,并且前端单元1230和执行引擎单元1250两者都耦合到存储器单元1270。核心1290可以是精简指令集计算(reduced instruction set computing,RISC)核、复杂指令集计算(complexinstruction set computing,CISC)核、超长指令字(very long instruction word,VLIW)核、或混合或替代的核类型。作为又一选项,核心1290可以是专用核心,诸如例如,网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(general purpose computing graphics processing unit,GPGPU)核心、图形核心,等等。
前端单元1230包括分支预测单元1232,该分支预测单元1232耦合到指令缓存单元1234,该指令缓存单元1234耦合到指令转译后备缓冲器(translation lookaside buffer,TLB)1236,该指令转译后备缓冲器1236耦合到指令取得单元1238,该指令取得单元1238耦合到解码单元1240。解码单元1240(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元1240可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(programmablelogic array,PLA)、微代码只读存储器(read only memory,ROM)等。在一个实施例中,核心1290包括用于存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元1240中或以其他方式在前端单元1230内)。解码单元1240耦合到执行引擎单元1250中的重命名/分配器单元1252。
执行引擎单元1250包括重命名/分配器单元1252,该重命名/分配器单元1252耦合到引退单元1254和一个或多个调度器单元的集合1256。(一个或多个)调度器单元1256表示任何数量的不同调度器,包括预留站、中央指令窗等。(一个或多个)调度器单元1256耦合至(一个或多个)物理寄存器堆单元1258。(一个或多个)物理寄存器堆单元1258中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,(一个或多个)物理寄存器堆单元1258包括向量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供体系结构向量寄存器、向量掩码寄存器和通用寄存器。(一个或多个)物理寄存器堆单元1258由引退单元1254重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器堆;使用(一个或多个)未来的堆、(一个或多个)历史缓冲器、和(一个或多个)引退寄存器堆;使用寄存器图谱和寄存器池,等等)。引退单元1254和(一个或多个)物理寄存器堆单元1258耦合到(一个或多个)执行集群1260。(一个或多个)执行集群1260包括一个或多个执行单元的集合1262以及一个或多个存储器访问单元的集合1264。执行单元1262可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(一个或多个)调度器单元1256、(一个或多个)物理寄存器堆单元1258和(一个或多个)执行集群1260示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的管线(例如,标量整数管线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点管线,和/或各自具有其自身的调度器单元、(一个或多个)物理寄存器堆单元和/或执行集群的存储器访问管线——并且在分开的存储器访问管线的情况下,实现其中仅该管线的执行集群具有(一个或多个)存储器访问单元1264的某些实施例)。还应当理解,在使用分开的管线的情况下,这些管线中的一个或多个可以是乱序发出/执行,并且其余管线可以是有序的。
存储器访问单元的集合1264耦合到存储器单元1270,该存储器单元1270包括数据TLB单元1272,该数据TLB单元1272耦合到数据缓存单元1274,该数据缓存单元1274耦合到第二级(L2)缓存单元1276。在一个示例性实施例中,存储器访问单元1264可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元1270中的数据TLB单元1272。指令缓存单元1234被进一步耦合到存储器单元1270中的第二级(L2)缓存单元1276。L2缓存单元1276耦合到一个或多个其他级别的缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名、乱序发出/执行核体系结构可如下所述地实现管线1200:1)指令取得1238执行取得阶段1202和长度解码阶段1204;2)解码单元1240执行解码阶段1206;3)重命名/分配器单元1252执行分配阶段1208和重命名阶段1210;4)(一个或多个)调度器单元1256执行调度阶段1212;5)(一个或多个)物理寄存器堆单元1258和存储器单元1270执行寄存器读取/存储器读取阶段1214;执行集群1260执行执行阶段1216;6)存储器单元1270和(一个或多个)物理寄存器堆单元1258执行写回/存储器写入阶段1218;7)各单元可涉及异常处置阶段1222;以及8)引退单元1254和(一个或多个)物理寄存器堆单元1258执行提交阶段1224。
核心1290可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的可选的附加扩展)),其中包括本文中描述的(一个或多个)指令。在一个实施例中,核心1290包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
图13图示根据实施例的SOC封装的框图。如图13中所图示,SOC 1302包括一个或多个中央处理单元(Central Processing Unit,CPU)核心1320、一个或多个图形处理器单元(Graphics Processor Unit,GPU)核心1330、输入/输出(I/O)接口1340以及存储器控制器1342。可将SOC封装1302的各组件耦合至诸如本文中参考其他附图所讨论的互连或总线。另外,SOC封装1302可包括更多或更少的组件,诸如本文中参考其他附图所讨论的那些组件。进一步地,SOC封装1302的每个组件可包括一个或多个其他组件,例如,如参考本文中的其他附图所讨论的组件。在一个实施例中,在一个或多个集成电路(Integrated Circuit,IC)管芯上提供SOC封装1302(以及其组件),例如,该一个或多个集成电路管芯被封装到单个半导体器件中。
如图13中所图示,SOC封装1302经由存储器控制器1342耦合至存储器1360。在实施例中,存储器1360(或其部分)可以被集成在SOC封装1302上。
I/O接口1340可例如经由诸如本文中参考其他附图所讨论的互连和/或总线而耦合至一个或多个I/O设备1370。(一个或多个)I/O设备1370可包括以下各项中的一项或多项:键盘、鼠标、触摸板、显示器、图像/视频捕捉设备(诸如,相机或摄像机/视频录像机)、触摸屏、扬声器等等。
图14是根据实施例的处理系统1400的框图。在各实施例中,系统1400包括一个或多个处理器1402以及一个或多个图形处理器1408,并且可以是单处理器桌面型系统、多处理器工作站系统或具有大量处理器1402或处理器核心1407的服务器系统。在一个实施例中,系统1400是被并入到在移动设备、手持式设备或嵌入式设备中使用的片上系统(system-on-a-chip,S℃或SOC)集成电路内的处理平台。
系统1400的实施例可以包括以下各项或可被并入在以下各项内:基于服务器的游戏平台、游戏控制台(包括游戏和媒体控制台)、移动游戏控制台、手持式游戏控制台或在线游戏控制台。在一些实施例中,系统1400是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理系统1400还可以包括可穿戴设备、与可穿戴设备耦合、或被集成在可穿戴设备内,该可穿戴设备诸如智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在一些实施例中,数据处理系统1400是电视机或机顶盒设备,该电视机或机顶盒设备具有一个或多个处理器1402以及由一个或多个图形处理器1408生成的图形界面。
在一些实施例中,一个或多个处理器1402各自包括一个或多个处理器核心1407,该一个或多个处理器核心1407用于处理指令,这些指令当被执行时,执行用于系统和用户软件的操作。在一些实施例中,一个或多个处理器核心1407中的每一个都被配置成用于处理特定的指令集1409。在一些实施例中,指令集1409可促进复杂指令集计算(CISC)、精简指令集计算(RISC)或经由超长指令字(VLIW)的计算。多个处理器核心1407各自可以处理不同的指令集1409,不同的指令集1409可包括用于促进对其他指令集的仿真的指令。处理器核心1407还可包括其他处理设备,诸如,数字信号处理器(Digital Signal Processor,DSP)。
在一些实施例中,处理器1402包括缓存存储器1404。取决于体系结构,处理器1402可具有单个内部缓存或多级的内部缓存。在一些实施例中,缓存存储器在处理器1402的各种组件之间被共享。在一些实施例中,处理器1402也使用外部缓存(例如,第三级(L3)缓存或最后一级缓存(Last Level Cache,LLC))(未示出),可使用已知的缓存一致性技术在处理器核心1407之间共享该外部缓存。寄存器堆1406附加地被包括在处理器1402中,寄存器堆1406可包括用于存储不同类型数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以特定于处理器1402的设计。
在一些实施例中,处理器1402耦合至处理器总线1410以在处理器1402与系统1400中的其他组件之间传输通信信号(诸如,地址、数据)或控制信号。在一个实施例中,系统1400使用示例性“中枢”系统体系结构,该示例性“中枢”系统体系结构包括存储器控制器中枢1416和输入输出(I/O)控制器中枢1430。存储器控制器中枢1416促进存储器设备与系统1400的其他组件之间的通信,而I/O控制器中枢(ICH)1430提供经由本地I/O总线至I/O设备的连接。在一个实施例中,存储器控制器中枢1416的逻辑被集成在处理器内。
存储器设备1420可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备、相变存储器设备、或具有合适的性能以充当进程存储器的某个其他存储器设备。在一个实施例中,存储器设备1420可以作为用于系统1400的系统存储器来操作,以存储数据1422和指令1421用于在一个或多个处理器1402执行应用或进程时使用。存储器控制器中枢1416也与可选的外部图形处理器1412耦合,该可选的外部图形处理器1412可与处理器1402中的一个或多个图形处理器1408通信以执行图形和媒体操作。
在一些实施例中,ICH 1430使外围设备能够经由高速I/O总线连接到存储器设备1420和处理器1402。I/O外围设备包括但不限于音频控制器1446、固件接口1428、无线收发器1426(例如,Wi-Fi、蓝牙)、数据存储设备1424(例如,硬盘驱动器、闪存等)以及用于将传统(legacy)(例如,个人系统2(PS/2))设备耦合至系统的传统I/O控制器1440。一个或多个通用串行总线(Universal Serial Bus,USB)控制器1442连接输入设备(诸如,键盘和鼠标1444的组合)。网络控制器1434也可以耦合至ICH 1430。在一些实施例中,高性能网络控制器(未示出)耦合至处理器总线1410。将会理解,所示的系统1400是示例性的而非限制性的,因为也可以使用以不同方式配置的其他类型的数据处理系统。例如,I/O控制器中枢1430可被集成在一个或多个处理器1402内,或者存储器控制器中枢1416和I/O控制器中枢1430可被集成到分立的外部图形处理器中,该分立的外部图形处理器诸如外部图形处理器1412。
图15是处理器1500的实施例的框图,该处理器1500具有一个或多个处理器核心1502A至1502N、集成存储器控制器1514以及集成图形处理器1508。图15的具有与本文中的任何其他附图的元件相同的附图标记(或名称)的那些元件可以类似于本文中其他地方描述的任何方式操作或运行,但不限于此。处理器1500可包括附加的核心,这些附加的核心多达由虚线框表示的附加核心1502N并包括由虚线框表示的附加核心1502N。处理器核心1502A至1502N中的每个处理器核心包括一个或多个内部缓存单元1504A至1504N。在一些实施例中,每个处理器核心也具有对一个或多个共享缓存单元1506的访问权。
内部缓存单元1504A至1504N和共享缓存单元1506表示处理器1500内的缓存存储器层次体系。缓存存储器层次体系可包括每个处理器核心内的至少一个级别的指令和数据缓存以及一个或多个级别的共享的中级缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)、或其他级别的缓存,其中,在外部存储器之前的最高级别的缓存被分类为LLC。在一些实施例中,缓存一致性逻辑维持各种缓存单元1506与1504A至1504N之间的一致性。
在一些实施例中,处理器1500还可包括一个或多个总线控制器单元的集合1516和系统代理核心1510。一个或多个总线控制器单元1516管理外围总线的集合,诸如,一个或多个外围组件互连总线(例如,PCI、PCI快速(PCI Express))。系统代理核心1510提供对各处理器组件的管理功能。在一些实施例中,系统代理核心1510包括用于管理对各种外部存储器设备(未示出)的访问的一个或多个集成存储器控制器1514。
在一些实施例中,处理器核心1502A至1502N中的一个或多个处理器核心包括针对同时多线程操作的支持。在此类实施例中,系统代理核心1510包括用于在多线程处理期间对核心1502A至1502N进行协调和操作的组件。系统代理核心1510可附加地包括功率控制单元(power control unit,PCU),该PCU包括用于调节处理器核心1502A至1502N和图形处理器1508的功率状态的逻辑和组件。
在一些实施例中,处理器1500附加地包括用于执行图形处理操作的图形处理器1508。在一些实施例中,图形处理器1508与共享缓存单元的集合1506以及系统代理核心1510耦合,该系统代理核心1510包括一个或多个集成存储器控制器1514。在一些实施例中,显示控制器1511与图形处理器1508耦合,以将图形处理器输出驱动至一个或多个所耦合的显示器。在一些实施例中,显示控制器1511可以是经由至少一个互连而与图形处理器耦合的分开的模块,或者可以集成在图形处理器1508或系统代理核心1510内。
在一些实施例中,基于环的互连单元1512用于耦合处理器1500的内部组件。然而,可以使用替代的互连单元,诸如点到点互连、交换式互连、或其他技术,包括本领域中公知的技术。在一些实施例中,图形处理器1508经由I/O链路1513而与环形互连1512耦合。
示例性I/O链路1513表示各种各样的I/O互连中的至少一者,该I/O互连包括促进各种处理器组件与高性能嵌入式存储器模块1518(诸如,eDRAM(或嵌入式DRAM)模块)之间的通信的封装上I/O互连。在一些实施例中,处理器核心1502A至1502N和图形处理器1508中的每一者都将嵌入式存储器模块1518用作共享的最后一级缓存。
在一些实施例中,处理器核心1502A至1502N是执行相同的指令集体系结构的同构核心。在另一个实施例中,处理器核心1502A至1502N就指令集体系结构(instruction setarchitecture,ISA)方面而言是异构的,其中处理器核心1502A至1502N中的一个或多个执行第一指令集,而其他核中的至少一个核执行第一指令集的子集或不同的指令集。在一个实施例中,处理器核心1502A至1502N就微体系结构方面而言是异构的,其中具有相对较高的功耗的一个或多个核心与具有较低的功耗的一个或多个功率核心耦合。此外,处理器1500可在一个或多个芯片上实现,或者被实现为除其他组件之外还具有所图示的组件的S℃集成电路。
图16是图形处理器1600的框图,该图形处理器1600可以是分立的图形处理单元,或者可以是与多个处理核心集成的图形处理器。在一些实施例中,图形处理器经由到图形处理器上的寄存器的存储器映射的I/O接口并且利用被放置到处理器存储器中的命令进行通信。在一些实施例中,图形处理器1600包括用于访问存储器的存储器接口1614。存储器接口1614可以是至本地存储器、一个或多个内部缓存、一个或多个共享的外部缓存、和/或至系统存储器的接口。
在一些实施例中,图形处理器1600还包括显示控制器1602,该显示控制器1602用于将显示输出数据驱动到显示设备1620。显示控制器1602包括用于显示器的一个或多个叠加平面以及多层的视频或用户界面元素的合成的硬件。在一些实施例中,图形处理器1600包括用于将媒体编码到一种或多种媒体编码格式、从一种或多种媒体编码格式解码媒体、或在一种或多种媒体编码格式之间对媒体转码的视频编解码器引擎1606,这一种或多种媒体编码格式包括但不限于:移动图像专家组(Moving Picture Experts Group,MPEG)格式(诸如,MPEG-2)、高级视频译码(Advanced Video Coding,AVC)格式(诸如,H.264/MPEG-4AVC)、以及电影和电视工程师协会(Society of Motion Picture&TelevisionEngineers,SMPTE)321M/VC-1、和联合图像专家组(Joint Photographic Experts Group,JPEG)格式(诸如,JPEG、以及运动JPEG(Motion JPET,MJPEG)格式)。
在一些实施例中,图形处理器1600包括块图像传送(block image transfer,BLIT)引擎1604,用于执行二维(two-dimensional,2D)栅格化器操作,包括例如,位边界块传送。然而,在一个实施例中,使用图形处理引擎(graphics processing engine,GPE)1610的一个或多个组件执行3D图形操作。在一些实施例中,图形处理引擎1610是用于执行图形操作(包括三维(three-dimensional,3D)图形操作和媒体操作)的计算引擎。
在一些实施例中,GPE 1610包括用于执行3D操作的3D管线1612,3D操作诸如使用作用于3D基元形状(例如,矩形、三角形等)的处理函数来渲染三维图像和场景。3D管线1612包括可编程和固定功能元件,该可编程和固定功能元件执行元件内的各种任务和/或生成到3D/媒体子系统1615的执行线程。虽然3D管线1612可用于执行媒体操作,但是GPE 1610的实施例还包括媒体管线1616,该媒体管线1616专门用于执行媒体操作,诸如,视频后处理和图像增强。
在一些实施例中,媒体管线1616包括固定功能或可编程逻辑单元,用于代替、或代表视频编解码器引擎1606来执行一个或多个专业的媒体操作,诸如视频解码加速、视频去隔行、以及视频编码加速。在一些实施例中,媒体管线1616附加地包括线程生成单元以生成用于在3D/媒体子系统1615上执行的线程。所生成的线程在3D/媒体子系统1615中所包括的一个或多个图形执行单元上执行用于媒体操作的计算。
在一些实施例中,3D/媒体子系统1615包括用于执行由3D管线1612和媒体管线1616生成的线程的逻辑。在一个实施例中,管线向3D/媒体子系统1615发送线程执行请求,该3D/媒体子系统1615包括用于对于对可用的线程执行资源的各种请求进行仲裁和调遣的线程调遣逻辑。执行资源包括用于处理3D线程和媒体线程的图形执行单元的阵列。在一些实施例中,3D/媒体子系统1615包括用于线程指令和数据的一个或多个内部缓存。在一些实施例中,该子系统还包括用于在线程之间共享数据并用于存储输出数据的共享存储器,其包括寄存器和可寻址存储器。
在以下描述中,陈述了众多特定细节以提供更透彻的理解。然而,对于本领域的技术人员将显而易见的是,可以在没有这些特定细节中的一个或多个细节的情况下实施本文中描述的实施例。在其他实例中,未描述公知的特征以免混淆当前实施例的细节。
以下示例涉及进一步的实施例。示例1包括一种装置,该装置包括:寄存器堆,该寄存器堆具有多个寄存器堆单元,这些寄存器堆单元中的每个寄存器堆单元包括寄存器堆条目和描影缓冲器;以及逻辑电路,该逻辑电路引起输入数据到描影缓冲器的存储,而寄存器堆条目中存储的数据是可访问的以用于执行一个或多个操作。示例2包括如示例1所述的装置,其中,选定的寄存器堆条目的内容和该选定的寄存器堆条目的对应的描影缓冲器的内容同时被交换。示例3包括如示例1所述的装置,其中,选定的寄存器堆条目的内容和该选定的寄存器堆条目的对应的描影缓冲器的内容在单个时钟周期中被交换。示例4包括如示例1所述的装置,其中,选定的寄存器堆条目的内容和该选定的寄存器堆条目的对应的描影缓冲器的内容同时被覆写。示例5包括如示例1所述的装置,其中,寄存器堆被分区到多个域中,其中,每个域支持针对数据的锁存和/或传输的可选模式。示例6包括如示例1所述的装置,其中,描影缓冲器能够从一个或多个数据流加载和/或向一个或多个数据流写入。示例7包括如示例1所述的装置,其中,具有一个或多个处理器核心的处理器用于访问寄存器堆条目中存储的数据以执行一个或多个操作。示例8包括如示例1所述的装置,其中,一个或多个操作包括加载操作和/或存储操作。示例9包括如示例1所述的装置,其中,输入数据从后备存储装置被读取。示例10包括如示例9所述的装置,其中,后备存储装置包括静态随机存取存储器(SRAM)。示例11包括如示例9所述的装置,其中,工作数据集被细分为被存储在后备存储装置中的多个数据块。示例12包括如示例9所述的装置,其中,后备存储装置和多个寄存器堆单元用于经由相比于耦合在处理器与该多个寄存器堆单元之间的互连带宽更低的互连进行通信。示例13包括如示例9所述的装置,其中,管芯堆叠包括针对后备存储装置的单独管芯,而不是针对多个寄存器堆单元的管芯。示例14包括如示例9所述的装置,其中,寄存器堆具有能够与后备存储装置的容量一样大的功能性容量。示例15包括如示例1所述的装置,其中,寄存器堆条目和描影缓冲器具有相同的容量。示例16包括如示例1所述的装置,其中,描影缓冲器包括锁存器和触发器中的至少一者。示例17包括如示例1所述的装置,其中,具有一个或多个处理器核心的处理器包括逻辑电路。示例18包括如示例17所述的装置,其中,处理器包括图形处理单元和/或通用处理器。示例19包括一种装置,该装置包括:解码电路,用于对指令解码,该指令具有用于操作对象值的字段;以及执行电路,用于执行经解码的指令以根据操作对象值来执行一个或多个操作,其中,该一个或多个操作引起输入数据到寄存器堆单元的描影缓冲器的存储,而寄存器堆单元的寄存器堆条目中存储的数据是可访问的以用于执行一个或多个任务。示例20包括如示例19所述的装置,其中,具有一个或多个处理器核心的处理器用于访问寄存器堆条目中存储的数据以执行一个或多个任务。示例21包括如示例19所述的装置,其中,寄存器堆包括多个所述寄存器堆单元,其中,该寄存器堆的选定的寄存器堆条目的内容和该选定的寄存器堆条目的对应的描影缓冲器的内容在单个时钟周期中进行以下各项中的至少一项:被交换和被覆写。
示例22包括一种或多种非暂态计算机可读介质,包括一个或多个指令,该一个或多个指令当在处理器上执行时将该处理器配置成用于执行一个或多个操作以使得:具有多个寄存器堆单元的寄存器堆存储数据,这些寄存器堆单元中的每个寄存器堆单元包括寄存器堆条目和描影缓冲器;以及逻辑电路引起输入数据到描影缓冲器的存储,而寄存器堆条目中存储的数据是可访问的以用于执行一个或多个操作。示例23包括如示例22所述的一种或多种非暂态计算机可读介质,进一步包括一个或多个指令,该一个或多个指令当在处理器上执行时将该处理器配置成用于执行一个或多个操作以使得选定的寄存器堆条目的内容和该选定的寄存器堆条目的相对应的描影缓冲器的内容同时被交换。示例24包括如示例22所述的一种或多种非暂态计算机可读介质,进一步包括一个或多个指令,该一个或多个指令当在处理器上执行时将该处理器配置成用于执行一个或多个操作以使得选定的寄存器堆条目的内容和该选定的寄存器堆条目的相对应的描影缓冲器的内容在单个时钟周期中被交换。
示例25包括一种设备,该设备包括用于执行如任何在前示例中阐述的方法的装置。示例26包括一种机器可读存储装置,其包括机器可读指令,该机器可读指令当被执行时,用于实现任何在前示例中所阐述的方法或实现任何在前示例中所阐述的装置。
在各实施例中,参考图1及以下等等所讨论的一个或多个操作可由参考附图中的任何附图所讨论的一个或多个组件(在本文中可互换地被称为“逻辑”)执行。
在各实施例中,本文中(例如,参考图1及以下各图)所讨论的操作可实现为硬件(例如,逻辑电路)、软件、固件、或其组合,其可作为计算机程序产品被提供,例如,包括一种或多种有形的(例如,非暂态的)机器可读或计算机可读介质,其上存储有指令(或软件程序),这些指令(或软件程序)用于对计算机编程以执行本文中所讨论的过程。机器可读介质可包括诸如参考附图所讨论的那些存储设备之类的存储设备。
另外,此类计算机可读介质可作为计算机程序产品来下载,其中该程序可通过在载波或其他传播介质中提供的数据信号、经由通信链路(例如,总线、调制解调器或网络连接)从远程计算机(例如,服务器)传输到作出请求的计算机(例如,客户端)。
在本说明书中对“一个实施例”或“实施例”的引用意指结合该实施例描述的特定特征、结构和/或特性可被包括在至少一个实现方式中。在本说明书各处出现的短语“在一个实施例中”可以或可以不全部指代同一实施例。
并且,在说明书和权利要求书中,可使用术语“耦合的”和“连接的”以及它们的派生词。在一些实施例中,可以使用“连接的”来表示两个或更多个元件彼此直接物理或电气接触。“耦合的”可意指两个或更多个元件处于直接的物理或电气接触。然而,“耦合的”还可意指两个或更多个元件彼此可不直接接触,但仍可彼此相互配合或相互作用。
因此,尽管已经用对结构特征和/或方法动作特定的语言描述了各实施例,但是将理解,所要求保护的主题可以不限于所描述的特定特征或动作。相反,特定特征和动作作为实现要求保护的主题的样本形式被公开。
Claims (25)
1.一种用于提供寄存器堆虚拟化的装置,所述装置包括:
寄存器堆,所述寄存器堆具有多个寄存器堆单元,所述多个寄存器堆单元中的每个寄存器堆单元包括寄存器堆条目和描影缓冲器;以及
逻辑电路,所述逻辑电路引起输入数据到所述描影缓冲器的存储,而所述寄存器堆条目中存储的数据是可访问的以用于执行一个或多个操作。
2.如权利要求1所述的装置,其中,选定的寄存器堆条目的内容和所述选定的寄存器堆条目的对应的描影缓冲器的内容同时被交换。
3.如权利要求1所述的装置,其中,选定的寄存器堆条目的内容和所述选定的寄存器堆条目的对应的描影缓冲器的内容在单个时钟周期中被交换。
4.如权利要求1所述的装置,其中,选定的寄存器堆条目的内容和所述选定的寄存器堆条目的对应的描影缓冲器的内容同时被覆写。
5.如权利要求1所述的装置,其中,所述寄存器堆被分区到多个域中,其中,每个域用于支持针对数据的锁存和/或传输的可选模式。
6.如权利要求1所述的装置,其中,所述描影缓冲器能够从一个或多个数据流加载和/或向所述一个或多个数据流写入。
7.如权利要求1所述的装置,其中,具有一个或多个处理器核心的处理器用于访问所述寄存器堆条目中存储的数据以执行所述一个或多个操作。
8.如权利要求1所述的装置,其中,所述一个或多个操作包括加载操作和/或存储操作。
9.如权利要求1所述的装置,其中,所述输入数据从后备存储装置被读取。
10.如权利要求9所述的装置,其中,所述后备存储装置包括静态随机存取存储器SRAM。
11.如权利要求9所述的装置,其中,工作数据集被细分为被存储在所述后备存储装置中的多个数据块。
12.如权利要求9所述的装置,其中,所述后备存储装置和所述多个寄存器堆单元用于经由相比于耦合在处理器与所述多个寄存器堆单元之间的互连带宽更低的互连进行通信。
13.如权利要求9所述的装置,其中,管芯堆叠包括针对所述后备存储装置的单独管芯,而不是针对所述多个寄存器堆单元的管芯。
14.如权利要求9所述的装置,其中,所述寄存器堆具有能够与所述后备存储装置的容量一样大的功能性容量。
15.如权利要求1所述的装置,其中,所述寄存器堆条目和所述描影缓冲器具有相同的容量。
16.如权利要求1所述的装置,其中,所述描影缓冲器包括锁存器和触发器中的至少一者。
17.如权利要求1所述的装置,其中,具有一个或多个处理器核心的处理器包括所述逻辑电路。
18.一种用于提供寄存器堆虚拟化的装置,所述装置包括:
解码电路,用于对指令解码,所述指令具有用于操作对象值的字段;以及
执行电路,用于执行经解码的指令以根据所述操作对象值来执行一个或多个操作,
其中,所述一个或多个操作引起输入数据到寄存器堆单元的描影缓冲器的存储,而所述寄存器堆单元的寄存器堆条目中存储的数据是可访问的以用于执行一个或多个任务。
19.如权利要求18所述的装置,其中,具有一个或多个处理器核心的处理器用于访问所述寄存器堆条目中存储的所述数据以执行所述一个或多个任务。
20.如权利要求18所述的装置,其中,寄存器堆包括多个所述寄存器堆单元,其中,所述寄存器堆的选定的寄存器堆条目的内容和所述选定的寄存器堆条目的对应的描影缓冲器的内容在单个时钟周期中进行以下各项中的至少一项:被交换和被覆写。
21.一种用于提供寄存器堆虚拟化的方法,所述方法包括:
将数据存储在寄存器堆中,所述寄存器堆具有多个寄存器堆单元,所述多个寄存器堆单元中的每个寄存器堆单元包括寄存器堆条目和描影缓冲器;以及
在逻辑电路处引起输入数据到所述描影缓冲器的存储,而所述寄存器堆条目中存储的数据是可访问的以用于执行一个或多个操作。
22.如权利要求21所述的方法,进一步包括:同时交换选定的寄存器堆条目的内容和所述选定的寄存器堆条目的相对应的描影缓冲器的内容。
23.如权利要求21所述的方法,进一步包括:在单个时钟周期中交换选定的寄存器堆条目的内容和所述选定的寄存器堆条目的相对应的描影缓冲器的内容。
24.一种机器可读介质,包括代码,所述代码在被执行时使机器执行如权利要求1至23中任一项所述的操作。
25.一种设备,包括用于执行如权利要求1至23中任一项所述的操作的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/555,174 | 2021-12-17 | ||
US17/555,174 US20230195388A1 (en) | 2021-12-17 | 2021-12-17 | Register file virtualization : applications and methods |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116266122A true CN116266122A (zh) | 2023-06-20 |
Family
ID=84359059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211563946.XA Pending CN116266122A (zh) | 2021-12-17 | 2022-12-07 | 寄存器堆虚拟化:应用和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230195388A1 (zh) |
EP (1) | EP4198717A1 (zh) |
CN (1) | CN116266122A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11928472B2 (en) | 2020-09-26 | 2024-03-12 | Intel Corporation | Branch prefetch mechanisms for mitigating frontend branch resteers |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6678847B1 (en) * | 1999-04-30 | 2004-01-13 | International Business Machines Corporation | Real time function view system and method |
JP3571656B2 (ja) * | 2001-01-31 | 2004-09-29 | 松下電器産業株式会社 | ポインタレジスタ装置およびポインタ値の更新方法 |
US6751749B2 (en) * | 2001-02-22 | 2004-06-15 | International Business Machines Corporation | Method and apparatus for computer system reliability |
US20030023836A1 (en) * | 2001-06-01 | 2003-01-30 | Michael Catherwood | Shadow register array control instructions |
US20060294344A1 (en) * | 2005-06-28 | 2006-12-28 | Universal Network Machines, Inc. | Computer processor pipeline with shadow registers for context switching, and method |
US11599359B2 (en) * | 2020-05-18 | 2023-03-07 | Advanced Micro Devices, Inc. | Methods and systems for utilizing a master-shadow physical register file based on verified activation |
-
2021
- 2021-12-17 US US17/555,174 patent/US20230195388A1/en active Pending
-
2022
- 2022-11-17 EP EP22208089.7A patent/EP4198717A1/en not_active Withdrawn
- 2022-12-07 CN CN202211563946.XA patent/CN116266122A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11928472B2 (en) | 2020-09-26 | 2024-03-12 | Intel Corporation | Branch prefetch mechanisms for mitigating frontend branch resteers |
Also Published As
Publication number | Publication date |
---|---|
US20230195388A1 (en) | 2023-06-22 |
EP4198717A1 (en) | 2023-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI506546B (zh) | 向量親合的指令格式及其執行 | |
KR102275561B1 (ko) | 모턴 좌표 조정 프로세서, 방법, 시스템 및 명령어 | |
TWI496080B (zh) | 轉置指令之技術 | |
KR102283947B1 (ko) | 사차원 모턴 좌표 변환 프로세서, 방법, 시스템 및 명령어 | |
JP2021057004A (ja) | 行列演算アクセラレータの命令のための装置、方法、及びシステム | |
KR20150101994A (ko) | 적분 이미지 계산 명령어를 위한 방법 및 장치 | |
CN109643234B (zh) | 用于合并数据元素并生成索引更新的处理器、方法、系统 | |
US20110249744A1 (en) | Method and System for Video Processing Utilizing N Scalar Cores and a Single Vector Core | |
TWI493449B (zh) | 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法 | |
KR20170066482A (ko) | 삼차원 모턴 좌표 변환 프로세서, 방법, 시스템 및 명령어 | |
JP2018502364A (ja) | 実行のためのデータ要素の読み込みにおいて空間的局所性を考慮する装置および方法 | |
EP4020230A1 (en) | Application programming interface for fine grained low latency decompression within processor core | |
CN116266122A (zh) | 寄存器堆虚拟化:应用和方法 | |
CN116257208A (zh) | 用于矩阵乘法阵列上的可分离卷积过滤器操作的方法和装置 | |
US20230032236A1 (en) | Data streaming accelerator | |
EP4020231B1 (en) | Speculative decompression within processor core caches | |
EP4020185A1 (en) | Instruction and micro-architecture support for decompression on core | |
US20220100511A1 (en) | Delayed cache writeback instructions for improved data sharing in manycore processors | |
US20210397454A1 (en) | Instruction to vectorize loops with backward cross-iteration dependencies | |
CN114661227A (zh) | 通过使用忘记存储来增加每核存储器带宽 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |