CN111886575A - 用于存储器配置的动态变换的体系结构 - Google Patents

用于存储器配置的动态变换的体系结构 Download PDF

Info

Publication number
CN111886575A
CN111886575A CN201980020644.8A CN201980020644A CN111886575A CN 111886575 A CN111886575 A CN 111886575A CN 201980020644 A CN201980020644 A CN 201980020644A CN 111886575 A CN111886575 A CN 111886575A
Authority
CN
China
Prior art keywords
memory
circuit
circuitry
data
memory circuit
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
Application number
CN201980020644.8A
Other languages
English (en)
Inventor
纳达夫·博南
朱里斯·曼德尔布拉特
尼尔·苏切尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN111886575A publication Critical patent/CN111886575A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Power Sources (AREA)
  • Memory System (AREA)

Abstract

一个实施例提供了一种装置。该装置包括第一存储器控制器电路,用于控制经由第一导电总线对第一存储器电路的读取和/或写入访问。该装置包括第二存储器控制器电路,用于控制经由第二导电总线对第二存储器电路的读取和/或写入访问。该装置包括耦合到第一存储器控制器电路和第二存储器控制器电路的电力控制电路。电力控制电路将数据从经由第二导电总线利用第二存储器控制器电路的第二存储器电路传送到经由第一导电总线利用第一存储器控制器电路的第一存储器电路。电力控制电路在将数据从第二存储器电路传送到第一存储器电路之后使第二存储器电路掉电。电力控制电路减小该装置的电力消耗并且可增大该装置的电池寿命。

Description

用于存储器配置的动态变换的体系结构
技术领域
本公开涉及存储器配置,具体而言涉及用于存储器配置的动态变换的体系结构。
背景技术
电池寿命基本上定义了移动计算装置的便利性。具有更长电池寿命的移动装置允许用户在物理上移动的同时保持虚拟地绑缚到其网络。然而,当移动计算装置具有短电池寿命时,用户尝试通过一系列不方便的操作来延长电池寿命,例如调暗屏幕、进入低功率模式、使处理器减慢、关闭特征、关闭移动装置,等等。装置和软件制造商的冲突目标是允许移动计算装置的用户享用移动计算装置提供的特征,同时提供使得能够方便地使用移动计算装置的电池寿命。
在低功率操作期间和功率密集操作期间都从电池汲取电力的计算机组件之一是移动计算装置的主存储器。主存储器通常指的是通过被定期地刷新或者再供电以保留数据来汲取电力的随机访问存储器(random access memory,RAM)。主存储器被处理器用于存储信息,例如与移动计算装置的应用、数据和基本操作有关的信息。由于存储器的容量和带宽多年来已显著增大,所以许多移动计算装置具有的主存储器容量比简单操作或使用所需要的要大得多。因为主存储器容量和更大量的主存储器所汲取的电力,一些移动计算装置力图跟上更小、更薄和不那么强大的电子产品(例如,平板设备)的电池寿命能力。这可使得用户购买补充电子装置,尽管移动计算装置有能力提供与补充电子装置相同的特征(并且更多)。
附图说明
要求保护的主题的特征和优点将从以下对与其相符的实施例的详细描述中清楚显现,该描述应当被参考附图来考虑,附图中:
图1A和图1B图示了符合本公开的若干个实施例的具有主机系统的计算系统的功能框图,该主机系统可通过动态地整合和/或重配置主存储器来降低计算系统的电力消耗;
图2是根据本公开的至少一个实施例的动态地整合主存储器的存储器分段的存储器页的流程图;
图3是根据本公开的各种实施例的将主存储器从双通道或多通道配置变换到单通道配置的流程图;
图4是根据本公开的各种实施例的动态地将主存储器从双通道或多通道配置变换到单通道配置的流程图;
图5是根据本公开的各种实施例的动态地将主存储器从单通道配置解除变换到原生(双通道或多通道)配置的流程图;
图6A-图6B是根据本公开的实施例图示出通用向量友好指令格式及其指令模板的框图;
图7A-图7D是根据本公开的实施例图示出示范性特定向量友好指令格式的框图;
图8是根据本公开的一个实施例的寄存器体系结构的框图;
图9A是根据本公开的实施例图示出示范性有序管线(pipeline)和示范性寄存器重命名、无序(out-of-order)发出/执行管线两者的框图。
图9B是根据本公开的实施例图示出要被包括在处理器中的有序体系结构核心的示范性实施例和示范性寄存器重命名、无序发出/执行体系结构核心两者的框图;
图10A-图10B图示出更具体的示范性有序核心体系结构的框图,该核心将是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核心)之一;
图11是根据本公开的实施例的可具有多于一个核心、可具有集成的存储器控制器并且可具有集成的图形的处理器的框图;
图12-图15是示范性计算机体系结构的框图;并且
图16是根据本公开的实施例与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令对比的框图。
虽然接下来的详述描述将在参考例示性实施例的情况下进行,但是其许多替换、修改和变化将是本领域技术人员清楚可见的。
具体实施方式
根据本公开的若干个实施例,本文公开了一种计算系统,其被配置为通过动态地整合存储器以使得能够使计算系统的存储器的一些部分掉电来降低电力消耗。
若干个因素影响计算系统使用的电力的量。这些因素中的一些包括为风扇供电以保持处理器凉爽、为处理器供电以使能计算操作以及刷新存储器以支持处理器操作。在电力的供应无限的情况下,这些因素中的许多变得不是问题。然而,当尝试延长电池寿命时,为了减小电力消耗,或者为了减小计算系统操作所耗散的热量,降低计算系统所消耗的电力的量可能是一个想要的目标。
本公开概括而言涉及通过例如在性能折衷可接受(例如,视频重放而不是视频流传输)时允许计算系统使存储器的一些部分掉电来减小电力消耗。通常,计算系统中被处理器最多使用的存储器被称为主存储器,其可被迅速地写入和读取。这个主存储器一般是非持续性存储器,其在电力被去除时和/或在主存储器存储的信息未被刷新时丢失数据。刷新主存储器包括周期性地向主存储器内的存储单元(例如,电容器)施加电力以确保存储在存储单元中的数据在需要时可被正确地读取。即使当计算系统被置于低功率或待机模式中时,主存储器仍被刷新,使得计算系统可在操作之前迅速地恢复。然而,即使在待机模式中,主存储器也继续汲取与存储器的空闲功率和存储器的容量成比例的大量电力。因为计算系统的一些操作可以用远小于主存储器的完全容量(例如,一半或更少)来执行,所以本公开的实施例使得计算系统能够通过不访问物理存储器通道、不刷新与被掉电的存储器通道相关联的存储器、通过对于被掉电的存储器通道将存储器控制器断电以及通过将处理器封装的片上系统(system on a chip,SoC)内的物理电路(PHY)的一些部分断电,来动态地整合存储器并且降低电力消耗。
在一个实施例中,计算系统包括以两个或更多个通道操作的主存储器。为了动态地整合主存储器,主存储器的分段(或部分)被识别。在主存储器的分段内,存储器的不那么重要的(例如,较少使用的)页被移出分页(即,传送/存储到持续性存储器),并且存储器的更重要的页被整合成主存储器的减少数量的(例如,一个、两个或半个)分段。根据一个实施例,电力控制电路于是被配置为有条理地将散布在多个通道、存储器电路和/或存储器电路的行列之间的数据移动到单个通道、单组存储器电路和/或单个行列上。主存储器的与未使用的通道相关联的部分随后可被掉电或者停止被刷新,以降低主存储器消耗的电力的量。
本公开的一些原型实现已被展示出将移动计算装置的待机模式电池寿命从7.2天增大到8.5天(即,增大了大约18%)。根据各种实现方式(例如,在视频重放操作期间),在非待机模式中,主存储器的动态整合可使能持续的计算操作,同时将电力消耗减小3.8%到10.8%。
图1A和图1B图示了符合本公开的若干个实施例的具有系统主机102的计算系统100的功能框图,该系统主机102可通过动态地整合和/或重配置主存储器来降低计算系统100的电力消耗。系统主机102可以是片上系统(SOC)并且是图15的SOC 1500的一个示例实现方式,如本文所述。计算系统100包括被配置为经由通信通道106和通信通道108向/从主存储器104存储和取回存储器页和缓存线的系统主机102。通信通道106和108是包括用于数据、控制和/或电力的迹线的导电总线或者点到点互连。系统主机102包括一个或多个组件,这些组件使得系统主机102能够动态地变换主存储器104的配置以降低计算系统100的电力消耗。
根据一实施例,系统主机102包括处理器110,该处理器110包括一个或多个核心112A-N、一个或多个缓存电路114A-N以及共享缓存电路116;系统代理电路118;用于通信通道106的存储器控制器电路120;用于通信通道108的存储器控制器电路122;直接存储器访问(direct memory access,DMA)电路124;电力控制电路126;以及物理地和通信地互连系统主机102的组件的互连电路125。一个或多个核心112A-N对数据执行计算操作。一个或多个缓存电路114A-N和共享缓存电路116表示存储数据来支持由一个或多个核心112A-N进行的计算操作的低时延存储器的不同级别。系统代理电路118管理到处理器110的电力并且可管理主存储器104的自刷新和时钟使能。存储器控制器电路120控制对连接到通信通道106的存储器电路的读取和写入访问。存储器控制器电路122控制对连接到通信通道108的存储器电路的读取和写入访问。存储器控制器120和122还基于电力控制单元策略为主存储器104执行自刷新和时钟使能操作。DMA电路124执行通道整合操作。DMA电路124接收对空闲的和被占用的存储器分段的指示,并且从电力控制电路126(例如,电力控制单元)接收整合或解除整合存储器分段的命令。响应于来自电力控制电路126的整合或解除整合的命令,DMA电路124通过将存储器从“源”通道中的被占用分段拷贝到“目标”通道中的空闲分段来执行通道整合,以使得源通道能够被关闭。DMA电路124在解除整合期间执行反向操作。根据一个实施例,电力控制电路126和/或DMA电路124使得主存储器104执行操作,这些操作动态地(例如,在计算系统100在操作的同时)将主存储器104从双通道(或多通道,例如LPDDR4和LPDDR5中的8通道)操作变换到单通道操作(或者一半通道,例如LPDDR4和LPDDR5中的4通道),以减小主存储器104、存储器控制器电路122和计算系统100的电力消耗。
主存储器104通过通信通道106和通信通道108耦合到系统主机102。虽然图示和描述了两个通信通道,但可采用多得多的通信通道(例如,4个、6个等等)来促进系统主机102和主存储器104之间的信息传送。根据一个实施例,主存储器104包括第一存储器电路128、第二存储器电路130、第三存储器电路132和第四存储器电路134。根据各种实现方式,主存储器104可包括更多或更少的存储器电路。根据一个实施例,第一存储器电路128是第一双列直插式存储器模块(dual in-line memory module,DIMM),第二存储器电路130是第二DIMM,第三存储器电路132是第三DIMM,并且第四存储器电路134是第四DIMM。在一个实施例中,第一存储器电路128、第二存储器电路130、第三存储器电路132和第四存储器电路134的每一者包括布置在DIMM的第一侧的若干个随机访问存储器(RAM)晶粒(即,行列1)和布置在DIMM的第二侧的若干个RAM晶粒(即,行列2)。RAM晶粒在本文中可被称为存储器封装或者存储器晶粒封装。存储器晶粒封装的一个示例是球栅阵列(ball grid array,BGA)存储器晶粒封装。多个存储器封装可至少部分构成DIMM。虽然本文描述和图示了DIMM,但在公开的计算系统中也可使用SIMM和/或RIMM。通信通道106可连接到第一存储器电路128和第三存储器电路132。通信通道108可连接到第二存储器电路130和第四存储器电路134。
图1A和图1B图示了符合本公开的实施例的一种多步骤过程的简化框图,该过程用于在计算系统100继续操作的同时动态地将主存储器104从多通道配置变换到单通道配置,以降低主存储器104的电力消耗。最初,DMA电路124和/或电力控制电路126从处理器110接收一个或多个命令以将存储器操作动态地整合到主存储器104的减少数目的分段或部分。DMA电路124和/或电力控制电路126可通过从寄存器127读取配置比特来接收一个或多个命令,该寄存器127可被处理器110(例如,被操作系统)更新/改变。当存储器控制器电路120、122向主存储器104写入缓存线时,存储器控制器电路120、122通过以细粒度将流量分布在两个通道间来实现这一点,使得物理页被分布在所有通道间以最大化带宽。物理页可被从逻辑上组织为总可用存储器的分段(或部分),并且被分布在多个通道、DIMM和/或行列间。在一个实施例中,每个分段表示主存储器104的物理页的1/8。在一个实施例中,存储器的单个物理页表示4千字节。存储器的单个物理页可表示主存储器104的所有晶粒的每个RAM晶粒的一个存储体的单一行。
DMA电路124和/或电力控制电路126控制存储器控制器电路120和存储器控制器电路122以将存储器的分段整合成减少数目的分段,然后整合成减少数目的通道。减少分段的数目是通过操作系统(OS)将存储器的页移出分页来执行的。减少通道的数目(例如,从2减少到1)是由电力控制电路126、DMA电路124和存储器控制器120、122执行的。存储器控制器122、第二存储器电路130和第四存储器电路134随后可被断电。
在一个实施例中,OS识别主存储器104中的存储器的最近最少使用的(leastrecently used,LRU)页。存储器的LRU页包括存储器的对于BIOS操作、OS操作和正在进行的计算而言不需要的页(例如,数据的页)。在一个实施例中,OS经由总线142将存储器的LRU页传送(例如,移出分页)到持续性存储装置140。在将存储器的LRU页传送到持续性存储装置140上的一个或多个文件之后,OS对主存储器104进行碎片整理并且将存储器的剩余页整合成存储器的一组连续页。存储器的一组连续页可被称为分段并且主存储器104可从逻辑上被分离成8个或更多个分段。OS可使得分段136(例如,表示分段5-8)中的数据被移动到存储器分段138(例如,表示分段1-4),以为后续操作做准备。结果,连接到每个通信通道106和108的存储器电路将具有存储器的占用页(例如,由分段1-4表示)和存储器的空置页(例如,由分段5-8表示)。换言之,通道0将具有从通道0上的分段1-8整合成通道0上的分段1-4的通道0数据(ch 0数据)。此外,通道1将具有从通道1上的分段1-8整合成通道1上的分段1-4的通道1数据(ch 1数据)。
转到图1B,在动态地将主存储器104从多通道配置变换到单通道配置的过程的第二操作中,DMA电路124和/或电力控制电路126将一个通道的(例如,存储器电路130和134的)存储器的占用分段(由来自通道1的分段1-4的ch 1数据表示)拷贝到另一通道上的存储器的空置分段(由通道0的分段5-8表示)(例如,拷贝到存储器电路128和132)。根据一个实施例,曾存储在通信通道108上的存储器分段138中的数据(ch 1数据)被移动到通信通道106上的分段136(例如,移动到第一存储器电路128),和/或移动到用于第一存储器电路128的存储器晶粒的第一行列。同时,根据一个实施例,存储在通信通道106上的存储器分段138中的数据(ch 0数据)被维持在第一存储器电路128上(和/或第三存储器电路132上)。以这种方式整合主存储器104使得电力控制电路126和/或系统主机102的一个或多个组件能够使存储器控制器122、第二存储器电路130和第四存储器电路134中的一个或多个掉电。根据各种实施例,使存储器控制器122、第二存储器电路130和/或第四存储器电路134掉电可包括停止刷新存储器晶粒、禁用时钟信号的传输、禁用电力、至少部分从存储器控制器电路122去除电力和/或使支持通道1的操作的额外电路掉电。
换句话来总结,OS在物理地址空间中移动页,并且存储器分段是包含若干页的存储器区域(例如1GB存储器=256兆4K页)。一种类型的存储器分段是DRAM分段,其是DRAM空间中的包含页的一些部分的存储器区域(例如,在页被分割成两个通道的以上示例中,每个DRAM分段将是包含256兆半页的0.5GB的存储器)。OS移动页来将它们整合成大约4个分段或者存储器空间的一半。公开的技术(例如,使用DMA电路124、电力控制电路126和存储器控制器电路122)采用硬件组件来将被占用的分段从一个通道拷贝到另一通道的空出的分段以使得能够使至少一个通道掉电。
本文公开的机制的实施例可以用硬件、软件、固件或者这种实现方案的组合来实现。本公开的实施例可实现为在包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置和至少一个输出装置的可编程系统上执行的计算机程序或程序代码。
图2图示了符合本公开的实施例的用于动态地整合主存储器104(图1A和图1B中示出)的存储器分段的存储器页的过程200的存储器图。该过程包括若干个操作,这些操作腾出主存储器104的一些部分(例如,分段),以为将主存储器104从双通道或多通道配置变换到单通道或一半通道配置做准备。
在操作202,根据一个实施例,过程200包括将最近最少使用的(LRU)页移出分页。将LRU页移出分页可包括将数据从LRU页传送到持续性存储装置上的一个或多个文件。
在操作204,根据一个实施例,过程200包括移动不可分页的页(non-pageablepage,NPP)和热页(例如,活跃使用的页)。不可分页的页可包括存储器的存储用于基本输入输出系统(basic input output system,BIOS)的数据和/或用于OS和用于驱动器固件/软件的数据的页。热页可包括包含用于当前被处理器或者被OS执行或运行的应用的数据的页。
在操作206,根据一个实施例,过程200包括停止刷新未使用的页。停止刷新可包括为存储器电路禁用自刷新模式。停止刷新未使用的页降低了主存储器104消耗的电力。
在操作208,未使用的页不被刷新,以降低电力消耗。如图所示,在操作208,存储器分段138(例如,存储器分段1-4)包括被占用的存储器页并且存储器分段136(例如,存储器分段5-8)包括空置的存储器页。要注意存储器分段136和138包括来自通信通道106和通信通道108两者的交织的存储器页。
图3是符合本公开的实施例的用于将主存储器104(在图1A和图1B中示出)从双通道或多通道配置变换到单通道或一半通道配置的过程300的存储器图。根据一个实施例,过程300执行通道整合操作302以将主存储器104的一些部分从多通道配置304变换到一半通道配置306。整合的存储器分段310的每个部分308表示通道310a和310b的整合存储器空间中的分段。因为整合的存储器分段310的部分308被按小于存储器中的OS页的粒度分割在通道间,所以操作系统(“OS”)可能不能够在通道之间(例如,从通道1到通道0)传送数据。例如,SOC(例如,系统主机102)通常被配置为在写入或读取虚拟或物理页(例如,4千字节页)时传送64个缓存线(4096字节)。
在多通道配置304中,整合的存储器分段310a的通道0包括未使用或空置的存储器页UU(例如,分段5-8)和被占用的存储器页(例如,分段1-4),其中CH 0表示存储在通道0上的数据。整合的存储器分段310b的通道1包括未使用的存储器UU(例如,分段5-8)和被占用的存储器页(例如,分段1-4),其中数据CH 1表示存储在通道1上的数据。根据一个实施例,在整合存储器分段310中,数据CH 0和数据CH 1交织在第一通道和第二通道之间。在一个实施例中,数据可交织在多于2个通道之间。
根据一个实施例,在通道整合操作302之后,主存储器104被变换到单通道配置306。在一个实施例中,在变换后,整合存储器分段312包括全都在通道0上的被占用的存储器页(例如,通道0的分段1-4)。此外,在变换后,整合存储器分段312a的通道0利用先前作为整合存储器分段312b的通道1存储在通道1上的数据CH 1来至少部分填充其未使用的存储器UU(例如,分段5-8)。通过将来自两个或更多个通道的数据整合到单个通道,计算系统接收使通道(例如,通道1)、用于通道的存储器控制器和通道支持的存储器电路(例如,DIMM)掉电的能力。
注意,在变换到单通道配置之后,OS和应用通过写入到虚拟页来继续就像主存储器处于多通道配置中那样操作,这些虚拟页被电力控制电路和/或系统代理电路转化成单个通道中的物理页。与这一点的一个值得注意的差别是OS不能使用UU分段,直到回复到多通道状态为止,因为映射到310a和310b中的未使用空间的这个UU空间现在被312a中的通道0上的CH1分段和被断电的312b中的不可访问的分段所占据。OS不分配这些UU分段中的页并且系统代理118(在图1A中示出)阻止这种非法事务。
根据本公开的实施例,在图4的过程400中和图5的过程500中描述通道整合操作302。
通道整合操作302包括——但不限于——识别第一通道中的未使用空间,将第二通道的一些部分映射到第一通道,将数据从第二通道拷贝到第一通道中的未使用空间,使用第一通道来响应指向第一通道和第二通道的操作(例如,读取和写入)以使得操作系统和软件应用能够就好像第二通道或者好像多个通道活跃那样使用虚拟存储器映射,并且使第二通道(例如,通道1)掉电。
因为配置变换是动态的(例如,在图1A和图1B的计算系统100在运行的同时发生),所以电力控制电路可被配置为在继续接收读取和写入请求的同时处理到单通道配置的变换。如果在部分308从第二通道(通道1)到第一通道(例如,通道0)的实际拷贝期间接收到新的读取或写入请求,则电力控制电路可被配置为使用旧的或者先前的存储器地址来履行该读取或写入请求。在存储器部分已被拷贝到第一通道之后,电力控制电路可被配置为使读取或写入请求指向该新地址(例如,通道0的新地址)。变换可开始于较高的地址并且向较低的地址继续以使得简单的比较器能够被用于确定变换是否已经发生并且确定是要将读取或写入请求发送到旧地址还是新地址。在一个实施例中,操作系统可在变换中途停止变换。在一个实施例中,为了反转该变换,OS可改变用于电力控制电路的寄存器中的配置比特,这使得电力控制电路向被掉电的通道重施加电力并且将通道1数据从通道0恢复到通道1。
图4是根据本公开的各种实施例的用于将主存储器从双通道或多通道配置变换到单通道或一半通道配置的过程400的流程图。
在操作402,根据一个实施例,操作系统(OS)发起操作来将主存储器变换到一半存储器通道配置,OS将LRU页移出分页以使得一半或更少的存储器被占用,并且将页整合成一半或更少数目的分段。作为示例,OS可在OS正在执行低带宽操作(例如,视频重放、运行字处理应用,等等)时确定将主存储器变换到单通道配置。
在操作404,根据一个实施例,OS请求发起到一半存储器通道配置的变换。根据一个实施例,OS可通过在程序代码中发送一个或多个请求来请求配置的发起。OS可通过改变用于电力控制电路的寄存器的一个或多个比特来请求一半存储器通道配置的发起,该电力控制电路被配置为管理从多通道配置到主存储器的一半存储器通道配置的变换。
在操作406,根据一个实施例,电力控制电路和/或系统代理电路确定来自OS的请求是否可接受。根据一个实施例,如果该请求不可接受,则操作406前进到操作408,在这里报告差错。根据一个实施例,如果该请求可接受,则操作406前进到操作410。
在操作410,根据一个实施例,电力控制电路提供指出到一半存储器通道配置的变换在进行中的指示,并且电力控制电路通过直接存储器访问(DMA)电路发起该变换。通过向DMA提供发起变换的命令并且通过向DMA提供数据传送的源(例如,通道1中的被占用分段)和目的地(例如,通道0中的空置分段)地址来通过DMA发起该变换。
在操作412,根据一个实施例,DMA将数据从源通道的被占用分段(源地址)拷贝到目标通道的空置分段(目的地地址)并且到源通道的事务被路由到目标通道的重映射分段。在一个实施例中,DMA利用最新近被读取的源地址的地址来更新状态寄存器。在一个实施例中,DMA利用最新近被写入的目的地地址的地址来更新状态寄存器。在一个实施例中,DMA或路由器逻辑基于数据是否已经被从旧地址传送,来确定读取或写入访问请求是应当被指向旧的(源)存储器地址还是新的(目标)存储器地址。
在操作414,根据一个实施例,DMA向电力控制电路报告变换的完成。
在操作416,根据一个实施例,电力控制电路清除指出到一半通道配置的变换在进行中的指示,并且电力控制电路使源通道掉电。根据一个实施例,使源通道掉电可包括禁用到用于源通道的存储器控制器电路的电力、禁用到用于源通道的存储器电路的时钟、禁用到支持源通道的操作的驱动器和/或其他物理层组件的电力。
在一个实施例中,取代变换到半数通道或单通道配置,计算系统可被配置为将主存储器变换到单行列配置(例如,将数据和操作移动到DIMM的行列1或行列2)。
在一个实施例中,DMA将每个OS页(例如,4千字节的数据)写入到单个DRAM页(例如,对于通道0上的所有存储器晶粒的同一存储体中的单一一行),这可改善单通道配置的电力降低。
图5是根据本公开的各种实施例的用于动态地将主存储器从一半数目通道配置解除变换到原生(双通道或多通道)配置的过程500的流程图。
在操作502,根据一个实施例,操作系统(OS)确定将主存储器从一半数目通道配置解除变换。
在操作504,根据一个实施例,OS请求发起从一半数目通道配置到原生存储器配置的解除变换。根据一个实施例,OS可通过在程序代码中发送一个或多个请求来请求发起从一半数目通道配置的解除变换。OS可通过改变用于电力控制电路的寄存器的一个或多个比特来请求发起从一半数目通道配置的解除变换,该电力控制电路被配置为管理从多通道配置到主存储器的一半数目通道配置以及反过来的变换。
在操作506,根据一个实施例,电力控制电路和/或系统代理电路确定来自OS的请求是否可接受。根据一个实施例,如果该请求不可接受,则操作506前进到操作508,在这里报告差错。根据一个实施例,如果该请求可接受,则操作506前进到操作510。
在操作510,根据一个实施例,电力控制电路提供指出从一半数目通道配置的解除变换在进行中的指示,并且电力控制电路为存储器通道和SoC中的和电路再供电并且通过直接存储器访问(DMA)电路发起该解除变换。通过向DMA提供发起解除变换的命令并且通过向DMA提供数据传送的源和目的地地址来通过DMA发起变换。
在操作512,根据一个实施例,DMA将源通道数据从目标通道的被占用(重映射)的分段拷贝回到源通道的分段,并且到源通道的事务被路由到其原始目的地。在一个实施例中,DMA利用最新近被读取的源地址的地址来更新状态寄存器。在一个实施例中,DMA利用最新近被写入的目的地地址的地址来更新状态寄存器。在一个实施例中,DMA或路由器逻辑基于数据是否已经被从旧地址传送,来确定额外的读取或写入访问请求是应当被指向旧的存储器地址(例如,通道0)还是新的存储器地址(例如,通道1)。
在操作514,根据一个实施例,DMA向电力控制电路报告解除变换的完成。
在操作516,电力控制电路清除指出到原生配置的变换在进行中的指示,并且用于支持第二通道操作的支持电路和组件已被加电。
寄存器127(在图1中示出)的寄存器和比特的示例被包括在以下的表格1中。如这里所使用的,“Pcode”可以指电力控制电路或者指作为处于机器代码和OS代码之间的中间编译语言的程序代码。
Figure BDA0002691559600000131
Figure BDA0002691559600000141
表格1
在一个实施例中,寄存器是16比特长的。寄存器的8比特可指出存储器的哪些分段或部分是空置的或者被占用的。寄存器的3比特可指出要执行的变换的类型(例如,64比特单通道、32比特单通道、单行列变换或者回复到原生配置)。1比特可用于指出变换或解除变换是否在进行中。3比特可用于指出哪种类型的变换在发生并且可被发送到OS。1比特可用于指出是否存在差错,使得变换不可执行。
虽然图1A、图1B、图2、图3、图4和图5的附图图示了根据各种实施例的操作,但要理解并非图1A、图1B、图2、图3、图4和图5中描绘的所有操作都是其他实施例所必要的。此外,这里完全设想到了在本公开的其他实施例中,图1A、图1B、图2、图3、图4和图5中描绘的操作和/或本文描述的其他操作可以按在任何附图中没有具体示出的方式被组合,并且这种实施例可包括比图1A、图1B、图2、图3、图4和图5中所示更少或更多的操作。从而,指向一幅附图中没有确切示出的特征和/或操作的权利要求被视为在本公开的范围和内容内。下面的附图详述了实现上述的实施例的示范性体系结构和系统。在一些实施例中,上文描述的一个或多个硬件组件和/或指令被如下详述那样来模拟,或者被实现为软件模块。
上文详述的(一个或多个)指令的实施例可按下文详述的“通用向量友好指令格式”来实现。在其他实施例中,这种格式不被利用并且另一指令格式被使用,然而,下面对于写入掩码寄存器、各种数据变换(调配、广播等等)、寻址等等的描述一般适用于对以上(一个或多个)指令的实施例的描述。此外,下文详述了示范性系统、体系结构和管线。以上(一个或多个)指令的实施例可被在这种系统、体系结构和管线上执行,但不限于详述的那些。
指令集可包括一个或多个指令格式。给定的指令格式可定义各种字段(例如,比特的数目、比特的位置)来指定要执行的操作(例如,操作码)和要在其上执行该操作的(一个或多个)操作对象和/或其他(一个或多个)数据字段(例如,掩码),等等。一些指令格式通过指令模板(或子格式)的定义被进一步分解。例如,给定的指令格式的指令模板可被定义为具有该指令格式的字段的不同子集(包括的字段通常是按相同顺序的,但至少一些可具有不同的比特位置,因为包括的字段更少)和/或被定义为不同地解读给定的字段。从而,ISA的每个指令被利用给定的指令格式来表达(并且如果定义了的话,被以该指令格式的指令模板中的给定一个来表达)并且包括用于指定操作和操作对象的字段。例如,示范性ADD指令具有特定的操作码和指令格式,该指令格式包括操作码字段来指定该操作码和操作对象字段来选择操作对象(源1/目的地和源2);并且此ADD指令在指令流中的出现在选择特定操作对象的操作对象字段中将具有特定内容。被称为高级向量扩展(Advanced VectorExtension,AVX)(AVX1和AVX2)并且使用向量扩展(Vector Extension,VEX)编码方案的一组SIMD扩展已被发布和/或发表(例如,参见
Figure BDA0002691559600000151
64和IA-32体系结构软件开发者手册,2014年9月;并且参见
Figure BDA0002691559600000152
高级向量扩展编程参考,2014年10月)。
示范性指令格式
本文描述的(一个或多个)指令可按不同的格式实现。此外,下文详述了示范性系统、体系结构和管线。(一个或多个)指令的实施例可被在这种系统、体系结构和管线(但不限于详述的那些)上执行。
通用向量友好指令格式
向量友好指令格式是适合于向量指令的指令格式(例如,有某些特定于向量操作的字段)。虽然描述了其中通过向量友好指令格式支持向量和标量操作两者的实施例,但替换实施例只使用向量操作向量友好指令格式。
图6A-6B是根据本公开的实施例图示出通用向量友好指令格式及其指令模板的框图。图6A是根据本公开的实施例图示出通用向量友好指令格式及其类别A指令模板的框图;而图6B是根据本公开的实施例图示出通用向量友好指令格式及其类别B指令模板的框图。具体而言,对于通用向量友好指令格式600定义了类别A和类别B指令模板,这两个指令模板都包括无存储器访问605指令模板和存储器访问620指令模板。向量友好指令格式的上下文中的术语“通用”指的是该指令格式不被绑定到任何特定的指令集。
虽然将描述其中向量友好指令格式支持以下项目的本公开的实施例: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字节)数据元素宽度(或大小);但替换实施例可支持具有更多、更少或不同的数据元素宽度(例如,128比特(16字节)数据元素宽度)的更多、更少和/或不同的向量操作对象大小(例如,256字节向量操作对象)。
图6A中的类别A指令模板包括:1)在无存储器访问605指令模板内,示出了无存储器访问、完全舍入控制型操作610指令模板和无存储器访问、数据变换型操作615指令模板;并且2)在存储器访问620指令模板内,示出了存储器访问、暂态625指令模板和存储器访问、非暂态630指令模板。图6B中的类别B指令模板包括:1)在无存储器访问605指令模板内,示出了无存储器访问、写入掩码控制、部分舍入控制型操作612指令模板和无存储器访问、写入掩码控制、vsize型操作617指令模板;并且2)在存储器访问620指令模板内,示出了存储器访问、写入掩码控制627指令模板。
通用向量友好指令格式600包括下面按图6A-6B中所示的顺序列出的以下字段。
格式字段640–此字段中的特定值(指令格式识别符值)唯一地识别向量友好指令格式,从而识别采取向量友好指令格式的指令在指令流中的出现。这样,此字段是可选的,因为它对于只具有通用向量友好指令格式的指令集是不需要的。
基本操作字段642–其内容区分不同的基本操作。
寄存器索引字段644–其内容直接地或者通过地址生成指定源和目的地操作对象的位置,无论它们在寄存器中还是在存储器中。这些包括充分数目的比特来从PxQ(例如,32x512、16x128、32x1024、64x1024)寄存器文件中选择N个寄存器。虽然在一个实施例中N可最多达三个源和一个目的地寄存器,但替换实施例可支持更多或更少的源和目的地寄存器(例如,可支持最多达两个源,其中这些源之一也充当目的地,可支持最多达三个源,其中这些源之一也充当目的地,可支持最多达两个源和一个目的地)。
修饰字段646–其内容区分通用向量指令格式中的指定存储器访问的指令与那些不指定存储器访问的指令的出现;也就是说,区分无存储器访问605指令模板和存储器访问620指令模板。存储器访问操作读取和/或写入到存储器层次体系(在一些情况下利用寄存器中的值指定源和/或目的地地址),而非存储器访问操作不读取和/或写入到存储器层次体系(例如,源和目的地是寄存器)。虽然在一个实施例中这个字段也在三个不同方式之间选择来执行存储器地址计算,但替换实施例可支持更多、更少或不同的方式来执行存储器地址计算。
增强操作字段650–其内容区分除了基本操作以外还要执行多种不同操作中的哪一种。此字段是依情境而定的。在本公开的一个实施例中,此字段被划分成类别字段668、阿尔法(alpha)字段652和贝塔(beta)字段654。增强操作字段650允许了在单个指令而不是2、3或4个指令中执行共同操作群组。
缩放比例字段660–其内容允许了缩放索引字段的内容以进行存储器地址生成(例如,对于使用2缩放比例*索引+基址的地址生成)。
位移字段662A–其内容被用作存储器地址生成的一部分(例如,对于使用2缩放比例*索引+基址+位移的地址生成)。
位移因子字段662B(注意将位移字段662A并列在位移因子字段662B的正上方表明一者或另一者被使用)–其内容被用作地址生成的一部分;其指定要被存储器访问的大小(N)缩放的位移因子–其中N是存储器访问中的字节的数目(例如,对于使用2缩放比例*索引+基址+缩放的位移的地址生成)。冗余低阶比特被忽略,并且因此,位移因子字段的内容被乘以存储器操作对象总大小(N)以便生成要被用于计算有效地址的最终位移。N的值由处理器硬件在运行时基于完整操作码字段674(本文中稍后描述)和数据操纵字段654C来确定。位移字段662A和位移因子字段662B是可选的,因为它们不被用于无存储器访问605指令模板,和/或不同的实施例可只实现两者中的一者或者两者都不实现。
数据元素宽度字段664–其内容区分若干个数据元素宽度中的哪一个将被使用(在一些实施例中是对于所有指令;在其他实施例中只对于指令中的一些)。此字段是可选的,因为如果只支持一个数据元素宽度和/或利用操作码的某个方面来支持数据元素宽度则不需要它。
写入掩码字段670–其内容基于每个数据元素位置控制目的地向量操作对象中的该数据元素位置是否反映基本操作和增强操作的结果。类别A指令模板支持合并-写入掩蔽,而类别B指令模板支持合并-写入掩蔽和归零-写入掩蔽两者。当合并时,向量掩码允许了目的地中的任何元素集合被保护免于任何操作(由基本操作和增强操作指定)的执行期间的更新;在其他的一个实施例中,保留目的地的相应的掩码比特具有0的每个元素的旧值。与之不同,当归零时,向量掩码允许了目的地中的任何元素集合在任何操作(由基本操作和增强操作指定)的执行期间被归零;在一个实施例中,目的地中的元素在相应的掩码比特具有0值时被设置到0。此功能的子集是控制被执行的操作的向量长度(即,被修改的元素的跨度,从第一个到最后一个)的能力;然而,被修改的元素不是必须要连续。从而,写入掩码字段670允许了部分向量操作,包括加载、存储、算术、逻辑等等。虽然描述了其中写入掩码字段670的内容选择若干个写入掩码寄存器中包含要使用的写入掩码的那一个(从而写入掩码字段670的内容间接识别要执行的该掩蔽)的本公开实施例,但替换实施例作为替代或附加允许掩码写入字段670的内容直接指定要执行的掩蔽。
即时字段672–其内容允许对即时(immediate)的指定。此字段是可选的,因为在不支持即时的通用向量友好格式的实现方式中其不存在并且在不使用即时的指令中其不存在。
类别字段668–其内容区分指令的不同类别。参考图6A-6B,此字段的内容在类别A和类别B指令之间进行选择。在图6A-6B中,圆角方形用于指示特定的值存在于一字段中(例如,图6A-6B中分别用于类别字段668的类别A 668A和类别B 668B)。
类别A的指令模板
在类别A的非存储器访问605指令模板的情况下,阿尔法字段652被解读为RS字段652A,其内容区分不同的增强操作类型中的哪一个要被执行(例如,对于无存储器访问舍入型操作610和无存储器访问数据变换型操作615指令模板分别指定舍入652A.1和数据变换652A.2),而贝塔字段654区分指定类型的操作中的哪一个要被执行。在无存储器访问605指令模板中,缩放比例字段660、位移字段662A和位移缩放比例字段662B不存在。
无存储器访问指令模板–完全舍入控制型操作
在无存储器访问完全舍入控制型操作610指令模板中,贝塔字段654被解读为舍入控制字段654A,其(一个或多个)内容提供静态舍入。虽然在本公开的描述实施例中舍入控制字段654A包括抑制所有浮点异常(suppress all floating point exceptions,SAE)字段656和舍入操作控制字段658,但替换实施例可支持可将这两个概念都编码到同一字段中或者可只具有这些概念/字段中的一者或另一者(例如,可只具有舍入操作控制字段658)。
SAE字段656–其内容区分是否禁用异常事件报告;当SAE字段656的内容指示抑制被使能时,给定的指令不报告任何种类的浮点异常标志并且不引发任何浮点异常处理程序。
舍入操作控制字段658–其内容区分要执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、朝零舍入和朝最近舍入)。从而,舍入操作控制字段658允许了基于每个指令改变舍入模式。在处理器包括用于指定舍入模式的控制寄存器的本公开的一个实施例中,舍入操作控制字段650的内容覆盖该寄存器值。
无存储器访问指令模板–数据变换型操作
在无存储器访问数据变换型操作615指令模板中,贝塔字段654被解读为数据变换字段654B,其内容区分若干个数据变换中的哪一个要被执行(例如,无数据变换、调配(swizzle)、广播)。
在类别A的存储器访问620指令模板的情况下,阿尔法字段652被解读为逐出提示字段652B,其内容区分要使用逐出提示中的哪一个(在图6A中,对于存储器访问暂态625指令模板和存储器访问非暂态630指令模板分别指定暂态652B.1和非暂态652B.2),而贝塔字段654被解读为数据操纵字段654C,其内容区分若干个数据操纵操作(也称为基元)中的哪一个要被执行(例如,无操纵;广播;源的向上转换;以及目的地的向下转换)。存储器访问620指令模板包括缩放比例字段660,并且可选地包括位移字段662A或者位移缩放比例字段662B。
向量存储器指令执行从存储器的向量加载和向存储器的向量存储,带有转换支持。与常规向量指令一样,向量存储器指令以按数据元素的方式从/向存储器传送数据,其中被实际传送的元素由被选择为写入掩码的向量掩码的内容来规定。
存储器访问指令模板–暂态
暂态数据是可能很快就被再使用、快到足以受益于缓存的数据。然而,这是一个提示,并且不同的处理器可以不同的方式实现它,包括完全忽略该提示。
存储器访问指令模板–非暂态
非暂态数据是这样的数据:该数据不太可能快到足以受益于第1级缓存中的缓存地被再使用,并且应当被赋予逐出优先级。然而,这是一个提示,并且不同的处理器可以不同的方式实现它,包括完全忽略该提示。
类别B的指令模板
在类别B的指令模板的情况下,阿尔法字段652被解读为写入掩码控制(Z)字段652C,其内容区分由写入掩码字段670控制的写入掩蔽应当是合并还是归零。
在类别B的非存储器访问605指令模板的情况下,贝塔字段654的一部分被解读为RL字段657A,其内容区分不同的增强操作类型中的哪一个要被执行(例如,对于无存储器访问、写入掩码控制、部分舍入控制型操作612指令模板和无存储器访问、写入掩码控制、VSIZE型操作617指令模板分别指定舍入657A.1和向量长度(VSIZE)657A.2),而贝塔字段654的其余部分区分指定类型的操作中的哪一个要被执行。在无存储器访问605指令模板中,缩放比例字段660、位移字段662A和位移缩放比例字段662B不存在。
在无存储器访问、写入掩码控制、部分舍入控制型操作610指令模板中,贝塔字段654的其余部分被解读为舍入操作字段659A并且异常事件报告被禁用(给定的指令不报告任何种类的浮点异常标志并且不引发任何浮点异常处理程序)。
舍入操作控制字段659A–正如舍入操作控制字段658一样,其内容区分要执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、朝零舍入和朝最近舍入)。从而,舍入操作控制字段659A允许了基于每个指令改变舍入模式。在处理器包括用于指定舍入模式的控制寄存器的本公开的一个实施例中,舍入操作控制字段650的内容覆盖该寄存器值。
在无存储器访问、写入掩码控制、VSIZE型操作617指令模板中,贝塔字段654的其余部分被解读为向量长度字段659B,其内容区分要在若干个数据向量长度中的哪一个上执行(例如,128、256或512字节)。
在类别B的存储器访问620指令模板的情况下,贝塔字段654的一部分被解读为广播字段657B,其内容区分是否要执行广播型数据操纵操作,而贝塔字段654的其余部分被解读为向量长度字段659B。存储器访问620指令模板包括缩放比例字段660,并且可选地包括位移字段662A或者位移缩放比例字段662B。
对于通用向量友好指令格式600,完整操作码字段674被示为包括格式字段640、基本操作字段642和数据元素宽度字段664。虽然示出了其中完整操作码字段674包括所有这些字段的一个实施例,但完整操作码字段674在不支持所有这些字段的实施例中只包括这些字段中的一些。完整操作码字段674提供操作代码(操作码)。
增强操作字段650、数据元素宽度字段664和写入掩码字段670允许了在通用向量友好指令格式中基于每个指令来指定这些特征。
写入掩码字段和数据元素宽度字段的组合创建了类型化指令,因为它们允许基于不同的数据元素宽度来应用掩码。
在类别A和类别B内找到的各种指令模板在不同的情形中是有益的。在本公开的一些实施例中,不同的处理器或处理器内的不同核心可只支持类别A、只支持类别B或者支持两个类别。例如,打算用于通用计算的高性能通用无序核心可只支持类别B,打算主要用于图形和/或科学(吞吐量)计算的核心可只支持类别A,并且打算用于两者的核心可支持这两者(当然,具有来自两个类别的模板和指令的某种混合、但不具有来自两个类别的所有模板和指令的核心是在本公开的范围内的)。另外,单个处理器可包括多个核心,所有这些核心都支持相同类别或者其中不同的核心支持不同的类别。例如,在具有分开的图形和通用核心的处理器中,打算主要用于图形和/或科学计算的图形核心之一可只支持类别A,而通用核心中的一个或多个可以是只支持类别B的打算用于通用计算的具有无序执行和寄存器重命名的高性能通用核心。不具有单独的图形核心的另一处理器可包括支持类别A和类别B两者的一个或多个通用有序或无序核心。当然,在本公开的不同实施例中,来自一个类别的特征也可被实现在另一类别中。以高级别语言编写的程序将被置于(例如,被即时编译或静态编译到)多种不同的可执行形式中,包括:1)只具有由目标处理器支持的(一个或多个)类别的指令以便执行的形式;或者2)具有利用所有类别的指令的不同组合编写的替换例程并且具有基于当前执行代码的处理器所支持的指令来选择要执行的例程的控制流程代码的形式。
示范性特定向量友好指令格式
图7是根据本公开的实施例图示出示范性特定向量友好指令格式的框图。图7示出了在如下意义上特定的特定向量友好指令格式700:其指定字段的位置、大小、解读和顺序,以及这些字段中的一些的值。特定向量友好指令格式700可被用于扩展x86指令集,从而字段中的一些与现有的x86指令集及其扩展(例如,AVX)中使用的那些相似或相同。此格式与带有扩展的现有x86指令集的前缀编码字段、真实操作码字节字段、MOD R/M字段、SIB字段、位移字段和即时字段保持一致。图示出了来自图7的字段所映射到的来自图6的字段。
应当理解,虽然出于说明目的在通用向量友好指令格式600的情境中参考特定向量友好指令格式700描述了本公开的实施例,但除非有声明,否则本公开不限于特定向量友好指令格式700。例如,通用向量友好指令格式600对于各种字段设想了多种可能的大小,而特定向量友好指令格式700被示为具有特定大小的字段。作为具体示例,虽然数据元素宽度字段664在特定向量友好指令格式700中被示为一比特字段,但本公开不限于此(也就是说,通用向量友好指令格式600设想了数据元素宽度字段664的其他大小)。
通用向量友好指令格式600包括按图7A中所示的顺序的下面列出的以下字段。
EVEX前缀(字节0-3)702–被编码为四字节形式。
格式字段640(EVEX字节0,比特[7:0])–第一字节(EVEX字节0)是格式字段640并且其包含0x62(在本公开的一个实施例中用于区分向量友好指令格式的唯一值)。
第二-第四字节(EVEX字节1-3)包括提供特定能力的若干个比特字段。
REX字段705(EVEX字节1,比特[7-5])–由EVEX.R比特字段(EVEX字节1,比特[7]–R)、EVEX.X比特字段(EVEX字节1,比特[6]–X)和657BEX字节1,比特[5]–B)构成。EVEX.R、EVEX.X和EVEX.B比特字段提供与相应的VEX比特字段相同的功能,并且被利用反码(1scomplement)形式来编码,即ZMM0被编码为1111B,ZMM15被编码为0000B。指令的其他字段如本领域中已知的那样对寄存器索引的较低三个比特编码(rrr、xxx和bbb),从而Rrrr、Xxxx和Bbbb可通过添加EVEX.R、EVEX.X和EVEX.B来形成。
REX’字段610–这是REX’字段610的第一部分并且是用于对扩展32寄存器集合的高16或低16编码的EVEX.R’比特字段(EVEX字节1,比特[4]-R’)。在本公开的一个实施例中,此比特以及如下所示的其他比特被以比特反转格式来存储以与BOUND指令相区分(在公知的x86 32比特模式中),BOUND指令的真实操作码字节是62,但不在MOD R/M字段(下文描述)中接受MOD字段中的11的值;本公开的替换实施例不以反转格式存储这个比特和下面指示的其他比特。值1被用于对低16寄存器编码。换言之,R’Rrrr是通过组合EVEX.R’、EVEX.R和来自其他字段的其他RRR形成的。
操作码映射字段715(EVEX字节1,比特[3:0]–mmmm)–其内容编码了暗示的主导操作码字节(0F、0F 38或0F 3)。
数据元素宽度字段664(EVEX字节2,比特[7]–W)–由符号EVEX.W表示。EVEX.W被用于定义数据类型的粒度(大小)(32比特数据元素或64比特数据元素)。
EVEX.vvvv 720(EVEX字节2,比特[6:3]-vvvv)-EVEX.vvvv的作用可包括以下各项:1)EVEX.vvvv编码了以反转(反码)形式指定的第一源寄存器操作对象,并且对于具有2个或更多个源操作对象的指令是有效的;2)EVEX.vvvv编码了对于某些向量移位以反码形式指定的目的地寄存器操作对象;或者3)EVEX.vvvv不编码任何操作对象,该字段被保留并且应当包含1111b。从而,EVEX.vvvv字段720编码了以反转(反码)形式存储的第一源寄存器指定符的4个低阶比特。取决于指令,一额外的不同EVEX比特字段被用于将指定符大小扩展到32寄存器。
EVEX.U 668类别字段(EVEX字节2,比特[2]-U)–如果EVEX.U=0,则其指示类别A或EVEX.U0;如果EVEX.U=1,则其指示类别B或者EVEX.U1。
前缀编码字段725(EVEX字节2,比特[1:0]-pp)–为基本操作字段提供额外比特。除了对于采取EVEX前缀格式的传统SSE指令提供支持以外,这还具有使SIMD前缀紧缩的益处(EVEX前缀只要求2个比特,而不是要求一字节来表达SIMD前缀)。在一个实施例中,为了支持采取传统格式和采取EVEX前缀格式两者的使用SIMD前缀(66H、F2H、F3H)的传统SSE指令,这些传统SIMD前缀被编码到SIMD前缀编码字段中;并且在运行时被扩展成传统SIMD前缀,然后才被提供到解码器的PLA(因此PLA可执行这些传统指令的传统和EVEX格式两者,而无需修改)。虽然更新的指令可直接使用EVEX前缀编码字段的内容作为操作码扩展,但某些实施例为了一致性以类似的方式扩展,但允许这些传统SIMD前缀指定不同的含义。替换实施例可重设计PLA来支持2比特SIMD前缀编码,从而不要求扩展。
阿尔法字段652(EVEX字节3,比特[7]–EH;也称为EVEX.EH、EVEX.rs、EVEX.RL、EVEX.写入掩码控制以及EVEX.N;也用α来图示)–如前所述,此字段是依情境而定的。
贝塔字段654(EVEX字节3,比特[6:4]–SSS;也称为EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也用βββ来图示)–如前所述,此字段是依情境而定的。
REX'字段610–这是REX'字段的剩余部分并且是可用于对扩展32寄存器集合的高16或低16编码的EVEX.V'比特字段(EVEX字节3,比特[3]-V')。此比特被以比特反转格式来存储。值1被用于对低16寄存器编码。换言之,V’VVVV是通过组合EVEX.V’、EVEX.vvvv形成的。
写入掩码字段670(EVEX字节3,比特[2:0]-kkk)–其内容指定如前所述的写入掩码寄存器中的寄存器的索引。在本公开的一个实施例中,特定值EVEX.kkk=000具有暗示对于特定指令没有使用写入掩码的特殊行为(这可通过多种方式来实现,包括使用被硬连线到全一的写入掩码或者绕过掩蔽硬件的硬件)。
真实操作码字段730(字节4)也被称为操作码字节。操作码的一部分在此字段中指定。
MOD R/M字段740(字节5)包括MOD字段742、Reg字段744和R/M字段746。如前所述,MOD字段742的内容区分存储器访问和非存储器访问操作。Reg字段744的作用可被总结成两个情形:编码目的地寄存器操作对象或者源寄存器操作对象,或者被作为操作码扩展来对待并且不被用于编码任何指令操作对象。R/M字段746的作用可包括以下各项:编码引用存储器地址的指令操作对象,或者编码目的地寄存器操作对象或源寄存器操作对象。
缩放比例、索引、基数(Scale,Index,Base,SIB)字节(字节6)–如前所述,缩放比例字段650的内容被用于存储器地址生成。SIB.xxx 754和SIB.bbb 756–先前已对于寄存器索引Xxxx和Bbbb提及了这些字段的内容。
位移字段662A(字节7-10)–当MOD字段742包含10时,字节7-10是位移字段662A,并且其工作方式与传统32比特位移(disp32)相同并且在字节粒度上工作。
位移因子字段662B(字节7)–当MOD字段742包含01时,字节7是位移因子字段662B。此字段的位置与传统x86指令集8比特位移(disp8)的相同,其在字节粒度上工作。由于disp8被符号扩展,所以其只能在-128和127字节偏移量之间寻址;就64字节缓存线而言,disp8使用8个比特,这8个比特可被设置到仅四个真正有用的值-128、-64、0和64;由于经常需要更大的范围,所以使用disp32;然而,disp32要求4个字节。与disp8和disp32不同,位移因子字段662B是对disp8的重解读;当使用位移因子字段662B时,实际位移由位移因子字段的内容乘以存储器操作对象访问的大小(N)来确定。这种类型的位移被称为disp8*N。这减小了平均指令长度(单个字节被用于位移,但具有大得多的范围)。这种压缩的位移是基于如下假设的:有效位移是存储器访问的粒度的倍数,并且因此,地址偏移量的冗余低阶比特不需要被编码。换言之,位移因子字段662B代替了传统x86指令集8比特位移。从而,位移因子字段662B被按与x86指令集8比特位移相同的方式编码(因此在ModRM/SIB编码规则中没有变化),唯一例外是disp8被超载到disp8*N。换言之,在编码规则或编码长度中没有变化,而只在硬件对位移值的解读中有变化(硬件需要按存储器操作对象的大小来缩放位移以获得按字节地址偏移量)。即时字段672如前所述那样操作。
完整操作码字段
图7B是根据本公开的一个实施例图示出构成完整操作码字段674的特定向量友好指令格式700的字段的框图。具体而言,完整操作码字段674包括格式字段640、基本操作字段642和数据元素宽度(W)字段664。基本操作字段642包括前缀编码字段725、操作码映射字段715和真实操作码字段730。
寄存器索引字段
图7C是根据本公开的一个实施例图示出构成寄存器索引字段644的特定向量友好指令格式700的字段的框图。具体而言,寄存器索引字段644包括REX字段705、REX'字段710、MODR/M.reg字段744、MODR/M.r/m字段746、VVVV字段720、xxx字段754和bbb字段756。
增强操作字段
图7D是根据本公开的一个实施例图示出构成增强操作字段650的特定向量友好指令格式700的字段的框图。当类别(U)字段668包含0时,其表示EVEX.U0(类别A 668A);当其包含1时,其表示EVEX.U1(类别B 668B)。当U=0并且MOD字段742包含11时(表示无存储器访问操作),阿尔法字段652(EVEX字节3,比特[7]–EH)被解读为rs字段652A。当rs字段652A包含1时(舍入652A.1),贝塔字段654(EVEX字节3,比特[6:4]-SSS)被解读为舍入控制字段654A。舍入控制字段654A包括一比特SAE字段656和两比特舍入操作字段658。当rs字段652A包含0时(数据变换652A.2),贝塔字段654(EVEX字节3,比特[6:4]-SSS)被解读为三比特数据变换字段654B。当U=0并且MOD字段742包含00、01或10时(表示存储器访问操作),阿尔法字段652(EVEX字节3,比特[7]–EH)被解读为逐出提示(eviction hint,EH)字段652B并且贝塔字段654(EVEX字节3,比特[6:4]-SSS)被解读为三比特数据操纵字段654C。
当U=1时,阿尔法字段652(EVEX字节3,比特[7]–EH)被解读为写入掩码控制(Z)字段652C。当U=1并且MOD字段742包含11时(表示无存储器访问操作),贝塔字段654的一部分(EVEX字节3,比特[4]–S0)被解读为RL字段657A;当其包含1(舍入657A.1)时,贝塔字段654的其余部分(EVEX字节3,比特[6-5]-S2-1)被解读为舍入操作字段659A,而当RL字段657A包含0(VSIZE 657.A2)时,贝塔字段654的其余部分(EVEX字节3,比特[6-5]-S2-1)被解读为向量长度字段659B(EVEX字节3,比特[6-5]-L1-0)。当U=1并且MOD字段742包含00、01或10时(表示存储器访问操作),贝塔字段654(EVEX字节3,比特[6:4]-SSS)被解读为向量长度字段659B(EVEX字节3,比特[6-5]-L1-0)和广播字段657B(EVEX字节3,比特[4]-B)。
示范性寄存器体系结构
图8是根据本公开的一个实施例的寄存器体系结构800的框图。在图示的实施例中,存在32个512比特宽的向量寄存器810;这些寄存器被称为zmm0至zmm31。低16zmm寄存器的低阶256比特被覆盖在寄存器ymm0-16上。低16zmm寄存器的低阶128比特(ymm寄存器的低阶128比特)被覆盖在寄存器xmm0-15上。特定向量友好指令格式700如以下表格中所示在这些覆盖的寄存器文件上操作。
Figure BDA0002691559600000291
换言之,向量长度字段659B在最大长度和一个或多个其他更短长度之间做出选择,其中每个这种更短长度是前一长度的一半;并且没有向量长度字段659B的指令模板在最大向量长度上操作。另外,在一个实施例中,特定向量友好指令格式700的类别B指令模板在紧缩或标量单/双精度浮点数据和紧缩或标量整数数据上操作。标量操作是在zmm/ymm/xmm寄存器中的最低阶数据元素位置上执行的操作;更高阶数据元素位置或者被保持与其在该指令之前相同,或者被归零,这取决于实施例。
写入掩码寄存器815–在图示的实施例中,有8个写入掩码寄存器(k0至k7),每个的大小是64比特。在替换实施例中,写入掩码寄存器815的大小是16比特。如前所述,在本公开的一个实施例中,向量掩码寄存器k0无法被用作写入掩码;当通常将会指示k0的编码被用于写入掩码时,其选择硬连线的写入掩码0xFFFF,实际上对于该指令禁用了写入掩蔽。
通用寄存器825–在图示的实施例中,有十六个64比特通用寄存器,它们与现有的x86寻址模式一起被用于寻址存储器操作对象。这些寄存器被用名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8至R15来引用。
标量浮点栈寄存器文件(x87栈)845,其上化名了MMX紧缩整数平坦寄存器文件850–在图示的实施例中,x87栈是用于利用x87指令集扩展在32/64/80比特浮点数据上执行标量浮点操作的八元素栈;而MMX寄存器被用于在64比特紧缩整数数据上执行操作,以及为在MMX和XMM寄存器之间执行的一些操作保持操作对象。
本公开的替换实施例可使用更宽或更窄的寄存器。此外,本公开的替换实施例可使用更多、更少或不同的寄存器文件和寄存器。
示范性核心体系结构、处理器和计算机体系结构
处理器核心可按不同的方式、为了不同的目的、在不同的处理器中实现。例如,这种核心的实现方式可包括:1)打算用于通用计算的通用有序核心;2)打算用于通用计算的高性能通用无序核心;3)主要打算用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实现方式可包括:1)包括打算用于通用计算的一个或多个通用有序核心和/或打算用于通用计算的一个或多个通用无序核心的CPU;以及2)包括主要打算用于图形和/或科学(吞吐量)的一个或多个专用核心的协处理器。这样的不同处理器导致不同的计算机系统体系结构,这些体系结构可包括:1)协处理器在与CPU分开的芯片上;2)协处理器在与CPU相同的封装中、分开的晶粒上;3)协处理器与CPU在同一晶粒上(在此情况下,这种协处理器有时被称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或者被称为专用核心);以及4)片上系统,其可在同一晶粒上包括描述的CPU(有时称为(一个或多个)应用核心或者(一个或多个)应用处理器)、上述的协处理器以及额外的功能。接下来描述示范性核心体系结构,然后是对示范性处理器和计算机体系结构的描述。
示范性核心体系结构
有序和无序核心框图
图9A是根据本公开的实施例图示出示范性有序管线和示范性寄存器重命名、无序发出/执行管线两者的框图。图9B是根据本公开的实施例图示出要被包括在处理器中的有序体系结构核心的示范性实施例和示范性寄存器重命名、无序发出/执行体系结构核心两者的框图。图9A-9B中的实线框图示了有序管线和有序核心,而虚线框的可选添加图示了寄存器重命名、无序发出/执行管线和核心。考虑到有序方面是无序方面的子集,将描述无序方面。
在图9A中,处理器管线900包括取得阶段902、长度解码阶段904、解码阶段906、分配阶段908、重命名阶段910、调度(也称为调遣或发出)阶段912、寄存器读取/存储器读取阶段914、执行阶段916、写回/存储器写入阶段918、异常处理阶段922和提交阶段924。
图9B示出了处理器核心990包括耦合到执行引擎单元950的前端单元930,并且两者都耦合到存储器单元970。核心990可以是精简指令集计算(reduced instruction setcomputing,RISC)核心、复杂指令集计算(complex instruction set computing,CISC)核心、超长指令字(very long instruction word,VLIW)核心或者混合或替换核心类型。作为另外一个选项,核心990可以是专用核心,例如网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(general purpose computing graphics processing unit,GPGPU)核心、图形核心,等等。
前端单元930包括分支预测单元932,其耦合到指令缓存单元934,指令缓存单元934耦合到指令转化后备缓冲器(translation lookaside buffer,TLB)936,该TLB 936耦合到指令取得单元938,该指令取得单元938耦合到解码单元940。解码单元940(或解码器)可对指令解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或其他控制信号是从原始指令解码来的,或者以其他方式反映原始指令,或者是从原始指令得出的。解码单元940可利用各种不同的机制来实现。适当机制的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(programmable logic array,PLA)、微代码只读存储器(read only memory,ROM),等等。在一个实施例中,核心990包括微代码ROM或其他介质,其为某些宏指令存储微代码(例如,在解码单元940中或者以其他方式在前端单元930内)。解码单元940耦合到执行引擎单元950中的重命名/分配器单元952。
执行引擎单元950包括耦合到引退单元954和一组一个或多个调度器单元956的重命名/分配器单元952。(一个或多个)调度器单元956表示任何数目的不同调度器,包括保留站、中央指令窗口等等。(一个或多个)调度器单元956耦合到(一个或多个)物理寄存器文件单元958。物理寄存器文件单元958的每一者表示一个或多个物理寄存器文件,这些物理寄存器文件中的不同物理寄存器文件存储一个或多个不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针),等等。在一个实施例中,物理寄存器文件单元958包括向量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单元可提供体系结构式向量寄存器、向量掩码寄存器和通用寄存器。(一个或多个)物理寄存器文件单元958与引退单元954重叠以例示出可用来实现寄存器重命名和无序执行的各种方式(例如,利用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器文件;利用(一个或多个)未来文件、(一个或多个)历史缓冲器和(一个或多个)引退寄存器文件;利用寄存器映射图和寄存器的池;等等)。引退单元954和(一个或多个)物理寄存器文件单元958耦合到(一个或多个)执行集群960。(一个或多个)执行集群960包括一组一个或多个执行单元962和一组一个或多个存储器访问单元964。执行单元962可在各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)上执行各种操作(例如,移位、加法、减法、乘法)。虽然一些实施例可包括专用于特定功能或功能集合的若干个执行单元,但其他实施例可只包括一个执行单元或者全都执行所有功能的多个执行单元。(一个或多个)调度器单元956、(一个或多个)物理寄存器文件单元958和(一个或多个)执行集群960被示为可能是多个,因为某些实施例为某些类型的数据/操作创建单独的管线(例如,标量整数管线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点管线和/或存储器访问管线,它们各自具有其自己的调度器单元、(一个或多个)物理寄存器文件单元和/或执行集群–并且在单独的存储器访问管线的情况下,实现了某些实施例,其中只有此管线的执行集群具有(一个或多个)存储器访问单元964)。还应当理解,在使用分开管线的情况下,这些管线中的一个或多个可以是无序发出/执行,并且其余的是有序的。
存储器访问单元964的集合耦合到存储器单元970,存储器单元970包括数据TLB单元972,数据TLB单元972耦合到数据缓存单元974,数据缓存单元974耦合到第2级(L2)缓存单元976。在一个示范性实施例中,存储器访问单元964可包括加载单元、存储地址单元和存储数据单元,其中每一者耦合到存储器单元970中的数据TLB单元972。指令缓存单元934进一步耦合到存储器单元970中的第2级(L2)缓存单元976。L2缓存单元976耦合到一个或多个其他级别的缓存并且最终耦合到主存储器。
作为示例,示范性寄存器重命名、无序发出/执行核心体系结构可实现管线900如下:1)指令取得938执行取得和长度解码阶段902和904;2)解码单元940执行解码阶段906;3)重命名/分配器单元952执行分配阶段908和重命名阶段910;4)(一个或多个)调度器单元956执行调度阶段912;5)(一个或多个)物理寄存器文件单元958和存储器单元970执行寄存器读取/存储器读取阶段914;执行集群960执行执行阶段916;6)存储器单元970和(一个或多个)物理寄存器文件单元958执行写回/存储器写入阶段918;7)在异常处理阶段922中可涉及各种单元;并且8)引退单元954和(一个或多个)物理寄存器文件单元958执行提交阶段924。
核心990可支持一个或多个指令集(例如,x86指令集(带有已随着更新版本添加的一些扩展);加州森尼维耳市的MIPS技术公司的MIPS指令集;加州森尼维耳市的ARM控股公司的ARM指令集(带有可选的额外扩展,例如NEON)),包括本文描述的(一个或多个)指令。在一个实施例中,核心990包括逻辑来支持紧缩数据指令集扩展(例如,AVX1、AVX2),从而允许了被许多多媒体应用使用的操作被利用紧缩数据来执行。
应当理解,核心可支持多线程处理(执行操作或线程的两个或更多个并行集合),并且可按多种方式来支持多线程处理,包括时间切片式多线程处理、同时多线程处理(其中单个物理核心为该物理核心在同时进行多线程处理的每个线程提供逻辑核心),或者这些的组合(例如,时间切片式取得和解码,然后是同时多线程处理,例如像
Figure BDA0002691559600000341
Hyperthreading技术中那样)。
虽然寄存器重命名是在无序执行的情境中描述的,但应当理解寄存器重命名可用于有序体系结构中。虽然处理器的图示实施例还包括分开的指令和数据缓存单元934/974和共享的L2缓存单元976,但替换实施例可对于指令和数据两者具有单个内部缓存,例如第1级(L1)内部缓存,或者多级别的内部缓存。在一些实施例中,系统可包括内部缓存和在核心和/或处理器外部的外部缓存的组合。或者,所有缓存都可在核心和/或处理器外部。
具体示范性有序核心体系结构
图10A-10B图示出更具体的示范性有序核心体系结构的框图,该核心将是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核心)之一。逻辑块通过高带宽互连网络(例如,环状网络)与某些固定功能逻辑、存储器I/O接口和其他必要I/O逻辑通信,这取决于应用。
图10A是根据本公开的实施例的单个处理器核心及其与片上互连网络1002以及与第2级(L2)缓存的其本地子集1004的连接的框图。在一个实施例中,指令解码器1000支持具有紧缩数据指令集扩展的x86指令集。L1缓存1006允许低时延访问以将存储器缓存到标量和向量单元中。虽然在一个实施例中(为了简化设计),标量单元1008和向量单元1010使用分开的寄存器集合(分别是标量寄存器1012和向量寄存器1014)并且在它们之间传送的数据被写入到存储器,然后被从第1级(L1)缓存1006读回,但本公开的替换实施例可使用不同的方案(例如,使用单个寄存器集合或者包括允许数据在两个寄存器文件之间传送而不被写入和读回的通信路径)。
L2缓存的本地子集1004是全局L2缓存的一部分,全局L2缓存被划分成单独的本地子集,每个处理器核心有一个。每个处理器核心具有到其自己的L2缓存的本地子集1004的直接访问路径。处理器核心读取的数据被存储在其L2缓存子集1004中并且可被迅速访问,与其他处理器核心访问其自己的本地L2缓存子集并行。处理器核心写入的数据被存储在其自己的L2缓存子集1004中并且在必要时被从其他子集冲出。环状网络确保了共享数据的一致性。环状网络是双向的,以允许诸如处理器核心、L2缓存和其他逻辑块之类的代理在芯片内与彼此通信。每个环状数据路径在每个方向上是1012比特宽的。
图10B是根据本公开的实施例的图10A中的处理器核心的一部分的扩展视图。图10B包括L1缓存1004的L1数据缓存1006A部分,以及关于向量单元1010和向量寄存器1014的更多细节。具体而言,向量单元1010是16宽向量处理单元(vector processing unit,VPU)(参见16宽ALU 1028),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU支持利用调配单元1020调配寄存器输入,利用数值转换单元1022A-B进行的数值转换,以及利用复制单元1024对存储器输入的复制。写入掩码寄存器1026允许断言结果向量写入。
图11是根据本公开的实施例的可具有多于一个核心、可具有集成的存储器控制器并且可具有集成的图形的处理器1100的框图。图11中的实线框图示了具有单个核心1102A、系统代理1110和一组一个或多个总线控制器单元1116的处理器1100,而虚线框的可选添加图示了具有多个核心1102A-N、系统代理单元1110中的一组一个或多个集成存储器控制单元1114和专用逻辑1108的替换处理器1100。
从而,处理器1100的不同实现方式可包括:1)其中专用逻辑1108是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核心)并且核心1102A-N是一个或多个通用核心(例如,通用有序核心、通用无序核心或者两者的组合)的CPU;2)其中核心1102A-N是主要打算用于图形和/或科学(吞吐量)的大量的专用核心的协处理器;以及3)其中核心1102A-N是大量的通用有序核心的协处理器。从而,处理器1100可以是通用处理器、协处理器或专用处理器,例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(many integrated core,MIC)协处理器(包括30或更多个核心)、嵌入式处理器,等等。处理器可实现在一个或多个芯片上。处理器1100可以是一个或多个基片的一部分和/或利用若干个工艺技术中的任何一者实现在一个或多个基片上,这些技术例如是BiCMOS、CMOS或NMOS。
存储器层次体系可包括核心内的一级或多级缓存、一组或一个或多个共享缓存单元1106以及耦合到该组集成存储器控制器单元1114的外部存储器(未示出)。该组共享缓存单元1106可包括一个或多个中间级别缓存,例如第2级(L2)、第3级(L3)、第4级(4)或其他级别的缓存,最后一级缓存(last level cache,LLC),和/或这些的组合。虽然在一个实施例中基于环的互连单元1112互连集成图形逻辑1108、该组共享缓存单元1106和系统代理单元1110/(一个或多个)集成存储器控制器单元1114,但替换实施例也可使用任何数目的公知技术来互连这种单元。在一个实施例中,在一个或多个缓存单元1106和核心1102A-N之间维持一致性。
在一些实施例中,核心1102A-N中的一个或多个能够进行多线程处理。系统代理1110包括协调和操作核心1102A-N的那些组件。系统代理单元1110可包括例如功率控制单元(power control unit,PCU)和显示单元。PCU可以是或者可以包括调控核心1102A-N和集成图形逻辑1108的功率状态所需要的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核心1102A-N就体系结构指令集而言可以是同质的或者异质的;也就是说,核心1102A-N中的两个或更多个可能够执行同一指令集,而其他的可只能够执行该指令集的子集或者不同的指令集。
示范性计算机体系结构
图12-图15是示范性计算机体系结构的框图。本领域中已知的用于膝上型计算机、桌面型计算机、手持PC、个人数字助理、工程工作站、服务器、网络装置、网络集线器、交换机、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、图形装置、视频游戏装置、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持装置和各种其他电子装置的其他系统设计和配置也是适当的。总之,能够包含本文公开的处理器和/或其他执行逻辑的许多种系统或电子装置一般是适当的。
现在参考图12,其中示出了根据本公开的一个实施例的系统1200的框图。系统1200可包括一个或多个处理器1210、1215,它们耦合到控制器中枢1220。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢(graphics memory controller hub,GMCH)1290和输入/输出中枢(Input/Output Hub,IOH)1250(它们可在分开的芯片上);GMCH 1290包括与存储器1240和协处理器1245耦合的存储器和图形控制器;IOH1250将输入/输出(I/O)装置1260耦合到GMCH 1290。或者,存储器和图形控制器中的一者或两者被集成在处理器内(如本文所述),存储器1240和协处理器1245直接耦合到处理器1210,并且控制器中枢1220与IOH 1250在单个芯片中。
额外的处理器1215的可选性在图12中用虚线表示。每个处理器1210、1215可包括本文描述的处理核心中的一个或多个并且可以是处理器1100的某个版本。
存储器1240可例如是动态随机访问存储器(dynamic random access memory,DRAM)、相变存储器(phase change memory,PCM)或者两者的组合。对于至少一个实施例,控制器中枢1220经由多点分支总线(例如前端总线(frontside bus,FSB))、点到点接口/互连(例如QuickPath互连(QuickPath Interconnect,QPI))或者类似的连接1295与(一个或多个)处理器1210、1215通信。
在一个实施例中,协处理器1245是专用处理器,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中枢1220可包括集成的图形加速器。
在物理资源1210、1215之间,就包括体系结构特性、微体系结构特性、热特性、功率消耗特性等等在内的价值度量的范围而言可以有多种差异。
在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1210将这些协处理器指令识别为应当由附接的协处理器1245执行的类型。因此,处理器1210在协处理器总线或其他互连上向协处理器1245发出这些协处理器指令(或者表示协处理器指令的控制信号)。(一个或多个)协处理器1245接受和执行接收到的协处理器指令。
现在参考图13,其中示出了根据本公开的实施例的第一更具体示范性系统1300的框图。如图13中所示,多处理器系统1300是点到点互连系统,并且包括经由点到点互连1350耦合的第一处理器1370和第二处理器1380。处理器1370和1380的每一者可以是处理器1100的某个版本。在本公开的一个实施例中,处理器1370和1380分别是处理器1210和1215,而协处理器1338是协处理器1245。在另一实施例中,处理器1370和1380分别是处理器1210和协处理器1245。
处理器1370和1380被示为分别包括集成存储器控制器(integrated memorycontroller,IMC)单元1372和1382。处理器1370还包括点到点(P-P)接口1376和1378作为其总线控制器单元的一部分;类似地,第二处理器1380包括P-P接口1386和1388。处理器1370、1380可利用P-P接口电路1378、1388经由点到点(P-P)接口1350交换信息。如图13中所示,IMC 1372和1382将处理器耦合到各自的存储器,即存储器1332和存储器1334,存储器1332和存储器1334可以是在本地附接到各个处理器的主存储器的一部分。
处理器1370、1380可各自利用点到点接口电路1376、1394、1386、1398经由个体P-P接口1352、1354与芯片集1390交换信息。芯片集1390可以可选地经由高性能接口1339与协处理器1338交换信息。在一个实施例中,协处理器1338是专用处理器,例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享缓存(未示出)可被包括在任一处理器中,或者在两个处理器之外,但经由P-P互连与处理器连接,从而使得任一个或两个处理器的本地缓存信息在处理器被置于低功率模式中的情况下可被存储在该共享缓存中。
芯片集1390可经由接口1396耦合到第一总线1316。在一个实施例中,第一总线1316可以是外围组件互连(Peripheral Component Interconnect,PCI)总线,或者诸如快速PCI总线或另一种第三代I/O互连总线或点到点接口之类的总线,虽然本公开的范围不限于此。
如图13中所示,各种I/O装置1314可耦合到第一总线1316,以及将第一总线1316耦合到第二总线1320的总线桥1318。在一个实施例中,一个或多个额外的处理器1315,例如协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或者任何其他处理器,耦合到第一总线1316。在一个实施例中,第二总线1320可以是低引脚数(low pin count,LPC)总线。各种装置可耦合到第二总线1320,这些装置例如包括键盘和/或鼠标1322、通信装置1327和存储单元1328,例如盘驱动器或者其他大容量存储装置,它们在一个实施例中可包括指令/代码和数据1330。另外,音频I/O1324可耦合到第二总线1320。注意其他体系结构是可能的。例如,取代图13的点到点体系结构,系统可实现多点分支总线或者其他这种体系结构。
现在参考图14,其中示出了根据本公开的实施例的第二更具体示范性系统1400的框图。图13和图14中的相似元素带有相似的标号,并且图13的某些方面被从图14中省略以避免模糊图14的其他方面。
图14图示出处理器1370、1380可分别包括集成存储器和I/O控制逻辑(“CL”)1372和1382。从而,CL 1372、1382包括集成存储器控制器单元并且包括I/O控制逻辑。图14图示出不仅存储器1332、1334耦合到CL 1372、1382,而且I/O装置1414也耦合到控制逻辑1372、1382。传统I/O装置1415耦合到芯片集1390。
现在参考图15,其中示出了根据本公开的实施例的SoC 1500的框图。图11中的相似元素带有相似的标号。另外,虚线框是更高级SoC上的可选特征。在图15中,(一个或多个)互连单元1502耦合到:应用处理器1510,其包括一组一个或多个核心202A-N,和(一个或多个)共享缓存单元1106;系统代理单元1110;(一个或多个)总线控制器单元1116;(一个或多个)集成存储器控制器单元1114;一组或一个或多个协处理器1520,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机访问存储器(static random accessmemory,SRAM)单元1530;直接存储器访问(direct memory access,DMA)单元1532;以及显示单元1540,用于耦合到一个或多个外部显示器。在一个实施例中,(一个或多个)协处理器1520包括专用处理器,例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器,等等。
本文公开的机制的实施例可以用硬件、软件、固件或者这种实现方案的组合来实现。本公开的实施例可实现为在包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入装置和至少一个输出装置的可编程系统上执行的计算机程序或程序代码。
程序代码,例如图13中所示的代码1330,可被应用到输入指令以执行本文描述的功能并且生成输出信息。输出信息可按已知的方式被应用到一个或多个输出装置。对于本申请而言,处理系统包括任何具有处理器(例如;数字信号处理器(digital signalprocessor,DSP)、微控制器、专用集成电路(application specific integrated circuit,ASIC)或者微处理器)的系统。
程序代码可以用高级过程式或面向对象的编程语言实现来与处理系统通信。如果希望,程序代码也可以用汇编或机器语言来实现。实际上,本文描述的机制在范围上不限于任何特定的编程语言。在任何情况下,该语言可以是经编译或者解译的语言。
至少一个实施例的一个或多个方面可由存储在机器可读介质上的表示处理器内的各种逻辑的代表性指令实现,该逻辑当被机器读取时使得该机器制造逻辑来执行本文描述的技术。这种被称为“IP核”的表示可被存储在有形机器可读介质上并且被提供到各种客户或制造设施以加载到实际制作该逻辑或处理器的制造机器中。
这种机器可读存储介质可包括但不限于由机器或装置制造或形成的物品的非暂态有形布置,包括存储介质,例如硬盘,任何其他类型的盘(包括软盘、光盘、致密盘只读存储器(compact disk read-only memory,CD-ROM)、可改写致密盘(compact diskrewritable,CD-RW)和磁光盘),半导体装置,例如只读存储器(read-only memory,ROM),随机访问存储器(random access memory,RAM),例如动态随机访问存储器(dynamic randomaccess memory,DRAM),静态随机访问存储器(static random access memory,SRAM),可擦除可编程只读存储器(erasable programmable read-only memory,EEPROM),闪速存储器,电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM),相变存储器(phase change memory,PCM),磁卡或光卡,或者适合用于存储电子指令的任何其他类型的介质。
因此,本公开的实施例还包括非暂态有形机器可读介质,其包含指令或者包含定义本文描述的结构、电路、装置、处理器和/或系统特征的设计数据,例如硬件描述语言(Hardware Description Language,HDL)。这种实施例也可被称为程序产品。
仿真(包括二进制转化、代码变形等等)
在一些情况下,指令转换器可用于将指令从源指令集转换到目标指令集。例如,指令转换器可将指令转化(例如,利用静态二进制转化、包括动态编译的动态二进制转化)、变形、仿真或以其他方式转换到要被核心处理的一个或多个其他指令。指令转换器可以用软件、硬件、固件或者其组合来实现。指令转换器可以在处理器上、在处理器外或者一部分在处理器上一部分在处理器外。
图16是根据本公开的实施例与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令对比的框图。在图示的实施例中,指令转换器是软件指令转换器,虽然可替换地,指令转换器可以用软件、固件、硬件或者其各种组合来实现。图16示出了高级别语言1602的程序可被利用x86编译器1604来编译以生成x86二进制代码1606,x86二进制代码1606可由具有至少一个x86指令集核心的处理器1616原生执行。具有至少一个x86指令集核心的处理器1616表示任何这样的处理器:这种处理器可通过兼容地执行或以其他方式处理(1)英特尔x86指令集核心的指令集的实质部分或者(2)针对在具有至少一个x86指令集核心的英特尔处理器上运行的应用或其他软件的目标代码版本来执行与具有至少一个x86指令集核心的英特尔处理器基本上相同的功能,以便实现与具有至少一个x86指令集核心的英特尔处理器基本上相同的结果。x86编译器1604表示可操作来生成x86二进制代码1606(例如,目标代码)的编译器,x86二进制代码1606在带有或不带有额外的链接处理的情况下可被在具有至少一个x86指令集核心的处理器1616上执行。类似地,图16示出了高级别语言1602的程序可被利用替换指令集编译器1608来编译以生成替换指令集二进制代码1610,替换指令集二进制代码1610可由没有至少一个x86指令集核心的处理器1614(例如,具有执行加州森尼维耳市的MIPS技术公司的MIPS指令集和/或执行加州森尼维耳市的ARM控股公司的ARM指令集的核心的处理器)原生执行。指令转换器1612用于将x86二进制代码1606转换成可由没有x86指令集核心的处理器1614原生执行的代码。这个转换后的代码不太可能与替换指令集二进制代码1610相同,因为能够做到这一点的指令转换器是难以制作的;然而,转换后的代码将实现一般操作并且由来自替换指令集的指令构成。从而,指令转换器1612表示通过仿真、模拟或任何其他过程允许不具有x86指令集处理器或核心的处理器或其他电子装置执行x86二进制代码1606的软件、固件、硬件或者其组合。
就这里的任何实施例中使用的而言,术语“逻辑”可以指被配置为执行任何上述操作的应用、软件、固件和/或电路。软件可实现为记录在非暂态计算机可读存储介质上的软件包、代码、指令、指令集和/或数据。固件可实现为被硬编码(例如,非易失性)在存储器装置中的代码、指令或指令集和/或数据。
就这里的任何实施例中使用的而言,“电路”可单独或者按任何组合包括硬连线的电路、可编程电路、状态机电路、逻辑和/或存储由可编程电路执行的指令的固件。电路可实现为集成电路,例如集成电路芯片。在一些实施例中,电路可至少部分通过处理器110执行与本文描述的功能相对应的代码和/或指令集(例如,软件、固件等等)来形成,从而将通用处理器变换成专用处理环境以执行本文描述的一个或多个操作。在一些实施例中,存储器控制器电路或其他系统的各种组件和电路可被组合在片上系统(SoC)体系结构中。
本文描述的操作的实施例可实现在其上存储有指令的计算机可读存储装置中,所述指令当被一个或多个处理器执行时执行这些方法。处理器可包括例如处理单元和/或可编程电路。存储装置可包括机器可读存储装置,包括任何类型的有形非暂态存储装置,例如,任何类型的盘,包括软盘、光盘、致密盘只读存储器(compact disk read-only memory,CD-ROM)、可改写致密盘(compact disk rewritable,CD-RW)和磁光盘,半导体装置,例如只读存储器(read-only memory,ROM)、随机访问存储器(random access memory,RAM)(比如动态和静态RAM)、可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)、电可擦除可编程只读存储器(electrically erasable programmable read-onlymemory,EEPROM)、闪速存储器、磁卡或光卡或者适用于存储电子指令的任何类型的存储装置。
在一些实施例中,硬件描述语言(hardware description language,HDL)可用于为本文描述的各种逻辑和/或电路指定(一个或多个)电路和/或逻辑实现方式。例如,在一个实施例中,硬件描述语言可遵守或兼容可使得对本文描述的一个或多个电路和/或逻辑的半导体制造成为可能的超高速集成电路(very high speed integrated circuits,VHSIC)硬件描述语言(VHSIC hardware description language,VHDL)。VHDL可遵守或兼容IEEE标准1076-1987、IEEE标准1076.2、IEEE1076.1、VHDL-2006的IEEE草案3.0、VHDL-2008的IEEE草案4.0和/或IEEE VHDL标准和/或其他硬件描述标准的其他版本。
在一些实施例中,Verilog硬件描述语言(HDL)可用于为本文描述的各种逻辑和/或电路指定(一个或多个)电路和/或逻辑实现方式。例如,在一个实施例中,HDL可遵守或兼容IEEE标准62530-2011:SystemVerilog–统一硬件设计、规范和验证语言,日期2011年7月7日;IEEE标准1800TM-2012:SystemVerilog–统一硬件设计、规范和验证语言的IEEE标准,2013年2月21日发布;IEEE标准1364-2005:Verilog硬件描述语言的IEEE标准,日期2006年4月18日,和/或Verilog HDL和/或SystemVerilog标准的其他版本。
示例
本公开的示例包括与对关于手写笔使用的用户意图的预测性检测有关的诸如方法、装置、设备或系统之类的主题,如下所述。
示例1.根据此示例,提供了一种装置。该装置包括第一存储器控制器电路,用于控制经由第一导电总线对第一存储器电路的读取和/或写入访问;第二存储器控制器电路,用于控制经由第二导电总线对第二存储器电路的读取和/或写入访问;以及耦合到所述第一存储器控制器电路和所述第二存储器控制器电路的电力控制电路,所述电力控制电路用于将数据从经由所述第二导电总线利用所述第二存储器控制器电路的所述第二存储器电路传送到经由所述第一导电总线利用所述第一存储器控制器电路的所述第一存储器电路,并且所述电力控制电路用于在将所述数据从所述第二存储器电路传送到所述第一存储器电路之后使所述第二存储器电路掉电。就本文使用的而言,导电总线可包括多点分支总线,例如前端总线(FSB);点到点接口,例如QuickPath互连(QPI);或者类似的连接。
示例2.此示例包括示例1的元素,其中所述第一存储器控制器电路包括第一多个存储器控制器,其中所述第一存储器电路包括第一多个存储器封装,其中所述第一导电总线包括第一多个通道来将所述第一多个存储器控制器耦合到所述第一多个存储器封装;其中所述第二存储器控制器电路包括第二多个存储器控制器,其中所述第二存储器电路包括第二多个存储器封装,其中所述第二导电总线包括第二多个通道来将所述第二多个存储器控制器耦合到所述第二多个存储器封装。
示例3.此示例包括示例2的元素,其中所述第一多个存储器控制器包括第一一个或多个存储器控制器,其中所述第一多个通道包括第一一个或多个通道,其中所述第二多个存储器控制器包括第二一个或多个存储器控制器,其中所述第二多个通道包括第二一个或多个通道,其中所述电力控制电路用于通过使所述第二一个或多个存储器控制器和所述第二多个存储器封装掉电来使所述第二存储器电路掉电。
示例4.此示例包括示例1的元素,还包括处理器核心来执行操作系统,其中所述操作系统用于将所述第一存储器电路和所述第二存储器电路的数据的至少一半传送到持续性存储装置中的一个或多个文件,所述操作系统用于将所述第一存储器电路和所述第二存储器电路的数据的剩余页移动到所述第一存储器电路和所述第二存储器电路内的一组连续的存储器页。
示例5.此示例包括示例4的元素,其中将所述第一存储器电路和所述第二存储器电路的数据的剩余页拷贝到所述第一存储器电路和所述第二存储器电路内的所述一组连续的存储器页导致所述第一存储器电路内的存储器的空置页和所述第二存储器电路内的存储器的被占用页。
示例6.此示例包括示例5的元素,其中将所述数据从所述第二存储器电路传送到所述第一存储器电路,包括:将所述第二存储器电路内的存储器的被占用页的数据传送到所述第一存储器电路内的存储器的空置页内的位置。
示例7.此示例包括示例5的元素,其中将所述数据从所述第二存储器电路传送到所述第一存储器电路,包括:将所述第二存储器电路内的存储器的动态随机访问存储器(“DRAM”)页传送到所述第一存储器电路内的存储器的DRAM页。
示例8.此示例包括示例1的元素,其中,在所述第二存储器电路被掉电的同时,如果新流量映射到所述第二存储器电路内的位置,则所述电力控制电路用于将所述新流量路由到所述第一存储器电路内的位置。
示例9.此示例包括示例1的元素,其中所述电力控制电路用于响应于接收到将所述第二存储器电路加电的命令而将所述第二存储器电路加电,其中所述电力控制电路用于将传送的数据从所述第一存储器电路返回到所述第二存储器电路。
示例10.此示例包括示例1的元素,其中使所述第二存储器电路掉电包括以下各项中的一个或多个:停止通过所述第二导电总线向所述第二存储器电路的时钟信号传输;去除到所述第二存储器电路的电力;禁用对所述第二存储器电路的自动化自刷新操作;或者至少部分去除到所述第二存储器控制器电路的电力。
示例11.此示例包括示例1的元素,其中所述电力控制电路用于使所述第二存储器电路掉电包括使所述第一存储器电路和所述第二存储器电路的组合的至少一半掉电。
示例12.此示例包括示例1的元素,其中所述电力控制电路响应于电力控制寄存器的配置比特来将所述数据从所述第二存储器电路传送到所述第一存储器电路。
示例13.此示例包括示例11的元素,其中所述电力控制寄存器是由处理器执行的操作系统可访问的。
示例14.根据此示例,提供了一种方法。该方法包括由电力控制电路接收将数据从经由第二通道的第二存储器电路传送到经由第一通道的第一存储器电路的指令;将所述第一存储器电路中存储的和所述第二存储器电路中存储的数据的至少一半传送到持续性存储装置中的一个或多个文件,其中未传送的数据是剩余数据;将所述剩余数据拷贝到所述第一存储器电路间和所述第二存储器电路间的一组连续页以提供所述第二存储器电路中的被占用存储器页和所述第一存储器电路中的空置存储器页;将数据从所述第二存储器电路中的被占用存储器页传送到所述第一存储器电路中的空置存储器页中的存储器位置;并且减小施加到所述第二存储器电路的电力。
示例15.此示例包括示例14的元素,其中减小施加到所述第二存储器电路的电力包括以下各项中的一个或多个:停止通过所述第二通道向所述第二存储器电路的时钟信号传输;去除到所述第二存储器电路的电力;禁用对所述第二存储器电路的自动化自刷新操作;或者至少部分去除到所述第二存储器控制器电路的电力。
示例16.此示例包括示例14的元素,还包括:响应于接收到将所述第二存储器电路加电的命令,向所述第二存储器电路重施加电力;并且从所述第一存储器电路向所述第二存储器电路拷贝曾被从所述第二存储器电路传送到所述第一存储器电路的数据。
示例17.此示例包括示例14的元素,其中由电力控制电路接收将数据从经由第二通道的第二存储器电路传送到经由第一通道的第一存储器电路的指令,包括:从为所述第一存储器电路和所述第二存储器电路存储配置设置的电力控制寄存器读取比特。
示例18.根据此示例,提供了一种系统。该系统包括:处理器;至少一个存储器控制器,用于控制经由至少一个第一通道对第一多个存储器封装的读取和/或写入访问和经由至少一个第二通道对第二多个存储器封装的读取和/或写入访问;以及耦合到所述至少一个存储器控制器的电力控制电路,所述电力控制电路用于将数据从所述第二多个存储器封装传送到所述第一多个存储器封装,所述电力控制电路用于使所述至少一个第一通道和所述至少一个第二通道的至少一半掉电,并且所述电力控制电路用于在将所述数据从所述第二多个存储器封装传送到所述第一多个存储器封装之后使所述第二多个存储器封装掉电。
示例19.此示例包括示例18的元素,还包括:系统代理电路,用于控制所述处理器的电力特征,其中所述系统代理电路包括所述电力控制电路;以及互连电路,用于将所述处理器耦合到所述系统代理电路以及耦合到所述至少一个存储器控制器。
示例20.此示例包括示例18的元素,其中所述电力控制电路用于将所述第一多个存储器封装的和所述第二多个存储器封装的数据的页的至少一半传送到持续性存储装置中的一个或多个文件,所述电力控制电路用于将所述第一多个存储器封装的和所述第二多个存储器封装的数据的剩余页拷贝到所述第一存储器封装和所述第二存储器封装内的一组连续的存储器页。
示例21.此示例包括示例20的元素,其中所述一组连续的存储器页包括存储器页的多个分段。
示例22.此示例包括示例20的元素,其中将所述第一多个存储器封装和所述第二多个存储器封装的数据的剩余页拷贝到所述第一多个存储器封装和所述第二多个存储器封装内的一组连续的存储器页导致所述第一多个存储器封装内的存储器的空置页和所述第二多个存储器封装内的存储器的被占用页。
示例23.此示例包括示例22的元素,其中将所述数据从所述第二多个存储器模块传送到所述第一多个存储器模块,包括:将所述第二多个存储器封装内的存储器的被占用页的数据传送到所述第一多个存储器封装内的存储器的空置页内的存储器位置。
示例24.此示例包括示例18的元素,其中,在所述第二多个存储器封装被掉电的同时,如果新流量映射到所述第二多个存储器封装内的位置,则所述电力控制电路用于将所述新流量路由到所述第一多个存储器封装内的位置。
示例25.此示例包括示例18的元素,其中所述电力控制电路用于响应于接收到将所述第二多个存储器封装加电的命令而将所述第二多个存储器封装加电,其中所述电力控制电路用于将传送的数据从所述第一多个存储器封装返回到所述第二多个存储器封装。
示例26.根据此示例,提供了一种存储指令的计算机可读装置,所述指令如果被一个或多个处理器执行,则执行如示例14至17的任何一项所述的方法。
示例27.根据此示例,提供了一种装置,包括用于执行如示例14至17的任何一项所述的方法的装置。
本文采用的术语和表达被用作描述而非限制的术语,并且在使用这种术语和表达时并不打算排除示出和描述的特征(或其一些部分)的任何等同,并且认识到各种修改在权利要求的范围内是可能的。因此,权利要求打算覆盖所有这种等同。
本文已描述了各种特征、方面和实施例。正如本领域技术人员将会理解的,这些特征、方面和实施例容许与彼此组合并且容许变化和修改。因此,本公开应当被认为涵盖了这种组合、变化和修改。

Claims (25)

1.一种装置,包括:
第一存储器控制器电路,用于控制经由第一导电总线对第一存储器电路的读取和/或写入访问;
第二存储器控制器电路,用于控制经由第二导电总线对第二存储器电路的读取和/或写入访问;以及
耦合到所述第一存储器控制器电路和所述第二存储器控制器电路的电力控制电路,所述电力控制电路用于将数据从经由所述第二导电总线利用所述第二存储器控制器电路的所述第二存储器电路传送到经由所述第一导电总线利用所述第一存储器控制器电路的所述第一存储器电路,并且所述电力控制电路用于在将所述数据从所述第二存储器电路传送到所述第一存储器电路之后使所述第二存储器电路掉电。
2.如权利要求1所述的装置,其中所述第一存储器控制器电路包括第一多个存储器控制器,其中所述第一存储器电路包括第一多个存储器封装,其中所述第一导电总线包括第一多个通道来将所述第一多个存储器控制器耦合到所述第一多个存储器封装;
其中所述第二存储器控制器电路包括第二多个存储器控制器,其中所述第二存储器电路包括第二多个存储器封装,其中所述第二导电总线包括第二多个通道来将所述第二多个存储器控制器耦合到所述第二多个存储器封装。
3.如权利要求2所述的装置,其中所述电力控制电路用于通过使所述第二多个存储器控制器和所述第二多个存储器封装掉电来使所述第二存储器电路掉电。
4.如权利要求1至3的任何一项所述的装置,还包括:
处理器核心,用于执行操作系统,其中所述操作系统用于将所述第一存储器电路和所述第二存储器电路的数据的页的至少一半传送到持续性存储装置中的一个或多个文件,所述操作系统用于将所述第一存储器电路和所述第二存储器电路的数据的剩余页移动到所述第一存储器电路和所述第二存储器电路内的一组连续的存储器页。
5.如权利要求4所述的装置,其中将所述第一存储器电路和所述第二存储器电路的数据的剩余页移动到所述第一存储器电路和所述第二存储器电路内的所述一组连续的存储器页导致所述第一存储器电路内的存储器的空置页和所述第二存储器电路内的存储器的被占用页。
6.如权利要求5所述的装置,其中将所述数据从所述第二存储器电路传送到所述第一存储器电路,包括:
将所述第二存储器电路内的存储器的被占用页的数据传送到所述第一存储器电路内的存储器的空置页内的位置。
7.如权利要求5所述的装置,其中将所述数据从所述第二存储器电路传送到所述第一存储器电路,包括:
将所述第二存储器电路内的存储器的动态随机访问存储器(“DRAM”)页传送到所述第一存储器电路内的存储器的DRAM页。
8.如权利要求1至3的任何一项所述的装置,其中,在所述第二存储器电路被掉电的同时,如果新流量映射到所述第二存储器电路内的位置,则所述电力控制电路用于将所述新流量路由到所述第一存储器电路内的位置。
9.如权利要求1至3的任何一项所述的装置,其中所述电力控制电路用于响应于接收到将所述第二存储器电路加电的命令而将所述第二存储器电路加电,其中所述电力控制电路用于将传送的数据从所述第一存储器电路返回到所述第二存储器电路。
10.如权利要求1至3的任何一项所述的装置,其中使所述第二存储器电路掉电包括以下各项中的一个或多个:
停止通过所述第二导电总线向所述第二存储器电路的时钟信号传输;
去除到所述第二存储器电路的电力;
禁用对所述第二存储器电路的自动化自刷新操作;或者
至少部分去除到所述第二存储器控制器电路的电力。
11.如权利要求1至3的任何一项所述的装置,其中所述电力控制电路用于使所述第二存储器电路掉电包括使所述第一存储器电路和所述第二存储器电路的组合的至少一半掉电。
12.如权利要求1至3的任何一项所述的装置,其中所述电力控制电路响应于电力控制寄存器的配置比特来将所述数据从所述第二存储器电路传送到所述第一存储器电路。
13.如权利要求12所述的装置,其中所述电力控制寄存器是由处理器执行的操作系统可访问的。
14.一种方法,包括:
由电力控制电路接收将数据从经由第二通道的第二存储器电路传送到经由第一通道的第一存储器电路的指令;
由存储器控制电路将所述第一存储器电路中存储的和所述第二存储器电路中存储的数据的至少一半传送到持续性存储装置中的一个或多个文件,其中未传送的数据是剩余数据;
由所述存储器控制电路将所述剩余数据拷贝到所述第一存储器电路间和所述第二存储器电路间的一组连续页以提供所述第二存储器电路中的被占用存储器页和所述第一存储器电路中的空置存储器页;
由所述存储器控制电路将数据从所述第二存储器电路中的被占用存储器页传送到所述第一存储器电路中的空置存储器页中的存储器位置;以及
由所述电力控制电路减小施加到所述第二存储器电路的电力。
15.如权利要求14所述的方法,其中减小施加到所述第二存储器电路的电力包括以下各项中的一个或多个:
由所述电力控制电路停止通过所述第二通道向所述第二存储器电路的时钟信号传输;
由所述电力控制电路去除到所述第二存储器电路的电力;
由所述电力控制电路禁用对所述第二存储器电路的自动化自刷新操作;或者
由所述电力控制电路至少部分去除到所述第二存储器控制器电路的电力。
16.如权利要求14所述的方法,还包括:
响应于接收到将所述第二存储器电路加电的命令,由所述电力控制电路向所述第二存储器电路重施加电力;并且
由所述存储器控制电路从所述第一存储器电路向所述第二存储器电路拷贝曾从所述第二存储器电路传送到所述第一存储器电路的数据。
17.如权利要求14所述的方法,其中接收将数据从经由所述第二通道的所述第二存储器电路传送到经由所述第一通道的所述第一存储器电路的指令,包括:
由所述电力控制电路从为所述第一存储器电路和所述第二存储器电路存储配置设置的电力控制寄存器读取比特。
18.一种系统,包括:
用于接收将数据从经由第二通道的第二存储器电路传送到经由第一通道的第一存储器电路的指令的装置;
用于将所述第一存储器电路中存储的和所述第二存储器电路中存储的数据的至少一半传送到持续性存储装置中的一个或多个文件的装置,其中未传送的数据是剩余数据;
用于将所述剩余数据拷贝到所述第一存储器电路间和所述第二存储器电路间的一组连续页以提供所述第二存储器电路中的被占用存储器页和所述第一存储器电路中的空置存储器页的装置;
用于将数据从所述第二存储器电路中的被占用存储器页传送到所述第一存储器电路中的空置存储器页中的存储器位置的装置;以及
用于减小施加到所述第二存储器电路的电力的装置。
19.如权利要求18所述的系统,其中所述用于减小施加到所述第二存储器电路的电力的装置包括以下各项中的一个或多个:
用于停止通过所述第二通道向所述第二存储器电路的时钟信号传输的装置;
用于去除到所述第二存储器电路的电力的装置;
用于禁用对所述第二存储器电路的自动化自刷新操作的装置;或者
用于至少部分去除到所述第二存储器控制器电路的电力的装置。
20.如权利要求18所述的系统,还包括:
用于响应于接收到将所述第二存储器电路加电的命令而向所述第二存储器电路重施加电力的装置;以及
用于将曾被从所述第二存储器电路传送到所述第一存储器电路的数据从所述第一存储器电路拷贝到所述第二存储器电路的装置。
21.如权利要求18所述的系统,其中所述用于接收将数据从经由所述第二通道的所述第二存储器电路传送到经由所述第一通道的所述第一存储器电路的指令的装置,包括:
用于由所述电力控制电路从为所述第一存储器电路和所述第二存储器电路存储配置设置的电力控制寄存器读取比特的装置。
22.一种用于传送数据的系统,该系统被布置为执行如权利要求14至17的任何一项所述的方法。
23.一种芯片集,被布置为执行如权利要求14至17的任何一项所述的方法。
24.至少一个机器可读介质,包括多个指令,所述多个指令响应于在计算装置上被执行,使得所述计算装置执行根据权利要求14至17的任何一项所述的方法。
25.一种被配置用于传送数据的装置,该装置被布置为执行如权利要求14至17的任何一项所述的方法。
CN201980020644.8A 2018-06-29 2019-05-30 用于存储器配置的动态变换的体系结构 Pending CN111886575A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/024,637 2018-06-29
US16/024,637 US10877693B2 (en) 2018-06-29 2018-06-29 Architecture for dynamic transformation of memory configuration
PCT/US2019/034737 WO2020005457A1 (en) 2018-06-29 2019-05-30 Architecture for dynamic transformation of memory configuration

Publications (1)

Publication Number Publication Date
CN111886575A true CN111886575A (zh) 2020-11-03

Family

ID=65230240

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980020644.8A Pending CN111886575A (zh) 2018-06-29 2019-05-30 用于存储器配置的动态变换的体系结构

Country Status (7)

Country Link
US (1) US10877693B2 (zh)
JP (1) JP7374116B2 (zh)
KR (1) KR20210016325A (zh)
CN (1) CN111886575A (zh)
BR (1) BR112020019651A2 (zh)
DE (1) DE112019002389T5 (zh)
WO (1) WO2020005457A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10877693B2 (en) * 2018-06-29 2020-12-29 Intel Corporation Architecture for dynamic transformation of memory configuration
US10580481B1 (en) * 2019-01-14 2020-03-03 University Of Virginia Patent Foundation Methods, circuits, systems, and articles of manufacture for state machine interconnect architecture using embedded DRAM
US10770431B1 (en) * 2019-02-27 2020-09-08 Western Digital Technologies, Inc. Memory die layouts for failure protection in SSDs
US11669901B2 (en) 2019-07-12 2023-06-06 Core Scientific Operating Company Communication network for gaming rewards
US11068292B2 (en) * 2019-08-27 2021-07-20 Core Scientific, Inc. Computing system translation to promote efficiency
US11449346B2 (en) * 2019-12-18 2022-09-20 Advanced Micro Devices, Inc. System and method for providing system level sleep state power savings
US11487447B2 (en) 2020-08-28 2022-11-01 Advanced Micro Devices, Inc. Hardware-software collaborative address mapping scheme for efficient processing-in-memory systems
US11513691B2 (en) * 2021-01-09 2022-11-29 Western Digital Technologies, Inc. Systems and methods for power and performance improvement through dynamic parallel data transfer between device and host
GB2604153A (en) * 2021-02-26 2022-08-31 Advanced Risc Mach Ltd Data Processors
US20230275597A1 (en) * 2021-11-08 2023-08-31 Ambiq Micro, Inc. Low power and wide dynamic range analog-to-digital converter

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6240496B1 (en) * 1989-11-24 2001-05-29 Hyundai Electronics America Architecture and configuring method for a computer expansion board
CA2131627A1 (en) * 1992-03-09 1993-09-16 Yu-Ping Cheng High-performance non-volatile ram protected write cache accelerator system
US6154821A (en) 1998-03-10 2000-11-28 Rambus Inc. Method and apparatus for initializing dynamic random access memory (DRAM) devices by levelizing a read domain
JP2001093275A (ja) 1999-09-20 2001-04-06 Mitsubishi Electric Corp 半導体集積回路装置
US6418510B1 (en) * 2000-09-14 2002-07-09 International Business Machines Corporation Cooperative cache and rotational positioning optimization (RPO) scheme for a direct access storage device (DASD)
US7269709B2 (en) * 2002-05-15 2007-09-11 Broadcom Corporation Memory controller configurable to allow bandwidth/latency tradeoff
US7218566B1 (en) 2005-04-28 2007-05-15 Network Applicance, Inc. Power management of memory via wake/sleep cycles
US7590796B2 (en) 2006-07-31 2009-09-15 Metaram, Inc. System and method for power management in memory systems
US20080005516A1 (en) * 2006-06-30 2008-01-03 Meinschein Robert J Memory power management through high-speed intra-memory data transfer and dynamic memory address remapping
US20080133654A1 (en) * 2006-12-01 2008-06-05 Chei-Yol Kim Network block device using network asynchronous i/o
US20080307240A1 (en) * 2007-06-08 2008-12-11 Texas Instruments Incorporated Power management electronic circuits, systems, and methods and processes of manufacture
JP2009163394A (ja) * 2007-12-28 2009-07-23 Panasonic Corp メモリ管理装置およびメモリ管理方法
US8275930B2 (en) * 2008-12-04 2012-09-25 Hitachi, Ltd. Storage system having volatile memory and non-volatile memory
US8365020B2 (en) * 2010-03-18 2013-01-29 Red Hat Israel, Ltd. Mechanism for saving crash dump files of a virtual machine on a designated disk
US9842068B2 (en) * 2010-04-14 2017-12-12 Qualcomm Incorporated Methods of bus arbitration for low power memory access
US8589730B2 (en) * 2010-08-31 2013-11-19 Apple Inc. Handling errors during device bootup from a non-volatile memory
CN101950261B (zh) * 2010-09-09 2013-12-04 中兴通讯股份有限公司 数据存储与鉴权并行的处理方法和终端
BR112013017101A2 (pt) 2011-01-11 2019-01-15 Basf Se uso de ésteres de ácido poliisobutenosucínico com um álcool, hidrogel, processo para produzir um hidrogel, e, uso de um hidrogel
US8874680B1 (en) * 2011-11-03 2014-10-28 Netapp, Inc. Interconnect delivery process
GB2510760B (en) * 2011-12-20 2020-05-20 Intel Corp Dynamic partial power down of memory-side cache in a 2-level memory hierarchy
JP5894044B2 (ja) * 2012-09-14 2016-03-23 レノボ・シンガポール・プライベート・リミテッド ハイブリッド・ディスク・ドライブにデータを記憶する方法および携帯式コンピュータ
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
EP3049938B1 (en) * 2013-09-27 2019-03-13 Hewlett-Packard Enterprise Development LP Data management on memory modules
US9304937B2 (en) * 2013-10-23 2016-04-05 Netapp Inc. Atomic write operations for storage devices
US9459810B2 (en) * 2013-12-30 2016-10-04 Sandisk Technologies Llc Storage module and method for configuring command attributes
US9727439B2 (en) * 2014-05-28 2017-08-08 Vmware, Inc. Tracking application deployment errors via cloud logs
US9563382B2 (en) * 2014-06-05 2017-02-07 Sandisk Technologies Llc Methods, systems, and computer readable media for providing flexible host memory buffer
US9836108B2 (en) * 2014-09-10 2017-12-05 Toshiba Memory Corporation Memory system and controller
US20160094339A1 (en) * 2014-09-30 2016-03-31 Sandisk Technologies Inc. Scrambling schemes for scrambling and descrambling data
US9740617B2 (en) * 2014-12-23 2017-08-22 Intel Corporation Hardware apparatuses and methods to control cache line coherence
JP2017027458A (ja) * 2015-07-24 2017-02-02 京セラドキュメントソリューションズ株式会社 メモリー制御装置及びこれを備えた画像形成装置
US20170125070A1 (en) * 2015-10-29 2017-05-04 Sandisk Technologies Inc. System and method for hibernation using a delta generator engine
US20170206031A1 (en) * 2016-01-15 2017-07-20 Samsung Electronics Co., Ltd. Fine grain level memory power consumption control mechanism
JP2017138853A (ja) * 2016-02-04 2017-08-10 株式会社東芝 情報処理装置およびプログラム
US9996477B2 (en) * 2016-09-14 2018-06-12 Western Digital Technologies, Inc. Asynchronous drive telemetry data notification
US10243560B2 (en) * 2017-08-11 2019-03-26 Seagate Technology Llc Maintaining slew rate while loading flash memory dies
US10685121B2 (en) * 2017-10-17 2020-06-16 Quanta Computer Inc. Secure environment examination
TWI645289B (zh) * 2017-10-31 2018-12-21 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體操作方法
US10877693B2 (en) * 2018-06-29 2020-12-29 Intel Corporation Architecture for dynamic transformation of memory configuration

Also Published As

Publication number Publication date
JP2021528712A (ja) 2021-10-21
US20190042157A1 (en) 2019-02-07
JP7374116B2 (ja) 2023-11-06
KR20210016325A (ko) 2021-02-15
BR112020019651A2 (pt) 2021-01-05
DE112019002389T5 (de) 2021-03-04
US10877693B2 (en) 2020-12-29
WO2020005457A1 (en) 2020-01-02

Similar Documents

Publication Publication Date Title
JP7374116B2 (ja) メモリ構成の動的変換のためのアーキテクチャ
EP3588281B1 (en) Apparatus and method for a tensor permutation engine
CN107250993B (zh) 向量缓存行写回处理器、方法、系统和指令
EP3716082A1 (en) Shared accelerator memory systems and methods
CN108595348B (zh) 无局部性提示的向量存储器访问处理器、方法、系统和指令
US10203910B2 (en) Hardware apparatuses and methods for distributed durable and atomic transactions in non-volatile memory
CN107153524B (zh) 用于给出相应复数的复共轭的计算设备和计算机可读介质
CN107003846B (zh) 用于向量索引加载和存储的方法和装置
CN113849224A (zh) 用于移动数据的指令的装置、方法和系统
EP3719655B1 (en) Apparatuses, methods, and systems to accelerate store processing
EP3757767B1 (en) Asynchronous cache flush engine to manage platform coherent and memory side caches
CN114676090A (zh) 用于低时延页解压缩和压缩加速的电路和方法
CN111831335A (zh) 经改进的插入指令的装置和方法
CN111752863A (zh) 用于专用地址映射的系统、设备和方法
TWI830927B (zh) 用於處理器非回寫能力的設備、方法、及非暫時性機器可讀取媒體
CN114675883A (zh) 用于对齐矩阵操作加速器瓦片的指令的装置、方法和系统
US10310978B2 (en) Apparatus and method for multi-level cache request tracking
CN111752865A (zh) 为不同权限级别管理不同页表的存储器管理装置和方法
EP4020172A1 (en) Processor instructions for data compression and decompression
CN112306910A (zh) 用于拆分式数据转换后备缓冲器的硬件
US9898408B2 (en) Sharing aware snoop filter apparatus and method
CN112579160A (zh) 用于具有减少的硬件要求的存储配对的装置和方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination