CN114467077A - 使用影子锁存器配置的寄存器文件的位宽重配置 - Google Patents
使用影子锁存器配置的寄存器文件的位宽重配置 Download PDFInfo
- Publication number
- CN114467077A CN114467077A CN202080067209.3A CN202080067209A CN114467077A CN 114467077 A CN114467077 A CN 114467077A CN 202080067209 A CN202080067209 A CN 202080067209A CN 114467077 A CN114467077 A CN 114467077A
- Authority
- CN
- China
- Prior art keywords
- shadow
- bit width
- latches
- read
- floating point
- 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
- 238000011156 evaluation Methods 0.000 claims abstract description 5
- 238000000034 method Methods 0.000 claims description 14
- 230000008901 benefit Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 239000007787 solid Substances 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/30141—Implementation provisions of register files, e.g. ports
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/30101—Special purpose 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- 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
- 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/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种处理器,包括:前端,所述前端具有指令集,所述前端以第一位宽度操作;以及浮点单元,所述被耦接以在以所述第一位宽度操作的所述处理器中接收所述指令集。所述浮点单元以第二位宽操作,并且基于对提供给所述浮点单元的所述指令集的位宽评估,所述浮点单元采用影子锁存器配置的浮点单元寄存器文件来执行位宽重配置。所述影子锁存器配置的浮点寄存器文件包括多个常规锁存器和多个影子锁存器,所述多个影子锁存器用于存储要从所述影子锁存器读取或写入所述影子锁存器的数据。所述位宽重配置使得以所述第二位宽操作的所述浮点单元能够对以所述第一位宽接收的所述指令集进行操作。
Description
背景技术
处理器采用各种结构来存储数据以供在处理活动期间使用。一种类型的数据结构是寄存器文件。典型的寄存器文件将数据存储在与可并行写入或从中读取的条目相关联的功能锁存器中。为了访问存储在功能锁存器中的数据,典型的处理器利用拆分重命名来将寄存器“拆分”为高位寄存器和低位寄存器。拆分重命名允许处理器实现比处理器的原始宽度宽的寄存器。特别地,寄存器的高位部分和寄存器的低位部分由微处理器分配不同的标识符或名称,使得寄存器在逻辑上被看作两个不同的寄存器。例如,若干当前可用的微处理器将256位寄存器拆分重命名为高128位寄存器和低128位寄存器。将寄存器拆分重命名为高寄存器和低寄存器导致执行计算操作所需的寄存器空间量增加。例如,将以上所述256位寄存器拆分重命名为高128位寄存器和低128位寄存器需要物理寄存器文件中的条目数和区域的两倍。拆分重命名所需的物理寄存器文件大小的增加导致制造成本增加,因为执行拆分重命名操作需要更多的微处理器空间。
附图说明
通过参考附图,可更好地理解本公开,并且本公开的许多特征和优点对于本领域技术人员来说变得显而易见。在不同附图中使用相同附图标记来指示相似或相同的项。
图1是根据一些实施方案的支持使用影子锁存器进行寄存器的位宽重配置的处理器核心的框图。
图2是根据一些实施方案的图1的处理器核心中的影子锁存器配置的浮点寄存器文件的位单元布局。
图3是根据一些实施方案的在图1的处理器核心中采用使用影子锁存器的位宽重配置的方法的流程图。
图4是根据一些实施方案的图1的处理器核心中的影子锁存器配置的浮点寄存器文件的框图。
图5是根据一些实施方案的图4的处理器核心中的影子锁存器配置的浮点寄存器文件中所利用的时序图。
具体实施方式
图1至图5示出根据一些实施方案的支持在处理器的处理器核心中进行寄存器的位宽重配置的系统和技术。处理器中的浮点单元包括影子锁存器配置的浮点寄存器文件,所述影子锁存器配置的浮点寄存器文件基于影子锁存器配置的浮点寄存器文件中影子锁存器的可用性将位宽从第一位宽(例如,256位宽)重配置为第二位宽(例如,512位宽),使得以第一位宽操作的浮点单元能够在以第二位宽操作的处理器中使用。影子锁存器配置的浮点寄存器文件包括在例如利用浮点单元的读取和写入数据操作期间用于位宽重配置的影子锁存器、常规锁存器和影子选择多路复用器(MUX)。
为了执行位宽重配置,在第一和第二时钟周期操作期间,将512位操作的前256位存储在常规锁存器中,并且将后256位存储在同一单个条目的影子锁存器配置的浮点寄存器文件内的影子锁存器中。在例如512位读取或写入操作期间,在第一时钟周期期间从影子锁存器配置的浮点寄存器文件访问前256位,并且在第二时钟周期期间访问后256位,其中两个访问在同一条目中发生。因为前256位和后256位两者都存储在影子锁存器配置的浮点寄存器文件中的单个条目中,所以不需要进行拆分重命名来重配置512位操作的位宽。也就是说,通过利用影子锁存器配置的浮点寄存器文件,不需要通常将512位指令拆分为两个单独寄存器(即,高位寄存器和低位寄存器)的拆分重命名来使浮点单元对512位指令集进行操作。
图1示出根据一些实施方案的具有支持位宽重配置的执行管线105的处理器的处理器核心100。在一些实施方案中,所示处理器核心100包括例如基于x86指令集架构(ISA)、ARM ISA等的中央处理单元(CPU)核心。处理器实现多个此类处理器核心,并且处理器在多种电子设备中的一种中实现,诸如笔记本电脑、台式电脑、平板电脑、服务器、支持计算的蜂窝电话、个人数字助理(PDA)、机顶盒、游戏控制台等。
在一些实施方案中,用于处理器核心100的处理器支持x86架构,所述x86架构支持两种类型的向量算术指令的执行:单指令多数据(SIMD)流扩展(SSE)指令和高级向量扩展(AVX)指令。AVX指令操纵256位操作数,并且SSE指令操纵128位操作数。AVX-512指令是到x86指令集架构(ISA)的256位AVXSIMD指令的512位扩展。因此,采用具有512位寄存器的寄存器文件的处理器支持AVX指令和SSE指令两者的执行。在一些实施方案中,利用本文所述的影子锁存器配置的浮点寄存器文件,采用具有256位寄存器的寄存器文件的处理器或处理单元(诸如浮点单元120)也支持512位操作。
在所描绘的示例中,执行管线105包括指令高速缓存110(“Icache”)、前端115、浮点单元120和定点单元125(通常也称为“整数执行单元”)。处理器核心100还包括耦接到存储器层次结构(未示出)的加载存储单元(LSU)130,所述存储器层次结构包括一级或多级高速缓存(例如,L1高速缓存、L2高速缓存等)、系统存储器诸如系统RAM以及一个或多个大容量存储设备诸如固态驱动器(SSD)或光驱。
指令高速缓存110存储由前端115的提取单元(未示出)响应于命令提取操作(例如,对请求由程序计数器标识的指令流中的下一指令的提取)或响应于推测性预取操作而提取的指令集数据。前端115将提取单元所提取的指令解码为要由浮点单元120或定点单元125执行(perform/execute)的一个或多个操作。涉及浮点计算的那些操作被分发到浮点单元120以供执行,而涉及定点计算的操作被分发到定点单元125。
如本文所用,指令类型是指由指令操纵的操作数的大小。因此,不同类型的指令操纵不同大小的操作数。例如,在一些实施方案中,浮点单元120执行从操纵128位操作数的指令(称为128位指令)解码的操作并且还执行从操纵256位操作数的指令(称为256位指令)解码的操作。此外,浮点单元120利用本文所述的位宽重配置技术来执行从操纵512位操作数的指令(称为512位指令)解码的操作。
在一些实施方案中,浮点单元(FPU)120包括映射单元135、调度器单元140、影子锁存器配置的浮点寄存器文件(SC-FPRF)145和一个或多个执行(EX)单元150。在一些实施方案中,FPU 120实施关于浮点数的操作并且执行包括加法、减法、乘法、除法、平方根和位移位或广播的操作以及诸如指数函数、三角函数等的超越函数。在各种实施方案中,FPU 120支持各种图形处理单元(GPU)和中央处理单元(CPU)的操作。例如,如果CPU遇到需要执行浮点操作的指令,则CPU向FPU 120传输请求,FPU 120实施操作并将结果返回给CPU。尽管图1所示的FPU 120在处理器核心100内部实现,但在其他实施方案中,FPU 120在GPU和CPU外部实现。
SC-FPRF 145利用另外的影子锁存器147和影子选择MUX 148来存储指令、指令所使用的操作数和执行指令的结果。SC-FPRF 145中的条目由物理寄存器编号指示。在一些实施方案中,物理寄存器编号使用映射单元135映射(或重命名)为由指令集架构定义的架构寄存器编号。通常,由调度器单元140维护的队列条目包括用于存储操作有效载荷或操作标识符(例如,操作的操作码)的字段、用于包含操作的一个或多个源操作数的物理寄存器的地址或其他标识符的字段、用于存储要与操作一起使用的任何立即值或位移值的字段、标识要在其中存储对应操作的执行结果的物理寄存器的目的地字段以及用于存储指令相关性信息的至少一个字段。例如,加载指令包括指示加载指令的目标的地址信息以及指示SC-FPRF 145中接收来自目标地址的数据的PRN的架构寄存器操作数。
除了对以第一位宽(256位宽)操作的指令进行操作之外,FPU 120还对以包括相对大量位的第二位宽操作的指令(例如,对512位指令)进行操作。也就是说,在一些实施方案中,即使FPU 120的数据路径被限制为256位指令,FPU 120也能够利用SC-FPRF 145通过将指令操作或事务从单个时钟周期扩展为两个时钟周期(例如,第一时钟周期和第二时钟周期)来将256位数据路径重配置为对512位指令进行操作。因此,在一些实施方案中,当SC-FPRF 145是512位寄存器文件(即,将较低256位存储在常规锁存器146中,并且将较高256位存储在影子锁存器147中)时,对512位的访问发生在两个256位周期而不是一个512位周期内。
在一些实施方案中,例如,在读取操作期间,当执行单元150从SC-FPRF 145读取数据时,在事务的第一周期中从常规锁存器146中读取较低256位并且在事务的第二个周期中从影子锁存器147读取较高256位。使用提供给影子选择MUX 148的读取地址,影子选择MUX148利用读取功能来选择要在读取操作的第二周期期间读取影子锁存器147中的哪个影子锁存器。在一些实施方案中,为了执行读取操作,向SC-FPRF 145添加读取功能,所述读取功能用于确定是读取存储在影子锁存器中的影子数据还是存储在常规锁存器中的正常数据。因此,读取功能允许执行单元150使用影子选择MUX 148来选择要读取的数据。
类似地,在写入操作期间,当调度单元140或执行单元150对SC-FPRF 145执行写入操作时,在事务的第一周期期间将较低256位写入常规锁存器146并且在事务的第二周期期间将较高256位写入影子锁存器147。在写入操作期间,与传统寄存器文件相比,不需要另外的写入逻辑,因为正在写入的另外256位不是作为单独条目写入的,即,另外的256位是与同一条目中的常规锁存器相关联的一段影子数据。
在一些实施方案中,在到SC-FPRF 145的接口的输入端处,从SC-FPRF控制器127提供写入控制信号和读取控制信号,所述信号指定在第二周期期间将发生读取操作还是写入操作。在写入操作期间,如果从SC-FPRF控制器127提供的写入控制信号(例如,Is512写入控制输入信号)在事务开始时被设置为高逻辑值,则在第二周期期间激活用于影子写入的时钟。也就是说,Is512写入控制输入信号致使影子写入时钟在两个周期中的第二周期触发。对于读取操作,当从SC-FPRF控制器127提供的读取控制信号(例如,Is512读取控制输入信号)在事务开始时被设置为高逻辑值时,影子选择MUX 148在第二周期期间基于提供给影子选择MUX 148的读取地址来选择要读取的影子锁存器。也就是说,Is512读取控制输入信号致使影子选择MUX 148选择与所请求地址相对应的影子锁存器147来在第二周期中读取。换句话讲,在事务的第二周期中,由影子选择MUX 148选择来自影子锁存器147的数据。作为使用SC-FPRF 145的结果,在各种实施方案中,读取解码器和写入解码器在第二周期内不被钟控,从而在处理器核心100中执行指令时保持经解码值稳定并节省电力。
在一些实施方案中,由于用于影子选择MUX 148的控制信号提前(即,在事务的第一周期内)到达,因此由例如触发器提供的提供给影子选择MUX的信号(即,影子选择MUX信号)隐藏与添加另外的影子选择MUX 148相关联的时序,从而基本上消除必须切换已添加到寄存器文件的另外影子选择MUX 148的影响。
在一些实施方案中,FPU 120针对512位操作或256位操作的激活取决于SC-FPRF控制器127的配置。当要执行的微操作是512位指令时,则SC-FPRF控制器127启用FPU 120进行512位操作。当要执行的微操作是256位指令时,则SC-FPRF控制器127启用FPU 120进行512位操作。也就是说,为了使FPU 120确定将发生512位操作还是256位操作,SC-FPRF控制器127将FPU 120激活为512位操作符或256位操作符。当FPU 120并非启用进行512位读取或写入操作时,激活256位读取或写入操作并且使其在单个周期中发生。当FPU 120启用进行512位读取或写入操作时,512位读取或写入操作被激活,并且在给定端口上花费两个时钟周期进行512操作。
在一些实施方案中,由于FPU 120是256位宽的FPU,其中使用两个256位周期来执行512位操作,因此FPU 120中的调度器单元140阻止在第二周期期间接受第二微操作,以便允许第一微操作在第一周期和第二周期期间完成。也就是说,由于FPU 120执行512位操作花费两个周期,因此FPU 120中的调度器单元140被SC-FPRF控制器127标记为512位微操作花费两个周期,并且阻止另一个微操作或另一个事务在第二周期期间开始。
类似地,加载存储单元130以512位操作和256位操作两者进行操作。SC-FPRF控制器127将加载存储单元130标记为FPU 120正在执行512位微操作。由于加载存储单元130利用内部256位数据路径来处理512位加载和存储,因此512位操作的较低256位在第一周期期间执行,并且较高256位在第二周期期间执行,从而与SC-FPRF 145和执行管道相匹配。因此,在一些实施方案中,加载存储单元130接口和FPU 120接口两者都是256位宽的。
在一些实施方案中,在FPU 120中执行512位微操作允许512位指令使用回退队列(未示出)中的单个条目和处理器核心100中的许多其他结构,诸如例如加载队列以及EX150中的调度器。相比例如将512位指令拆分为两个256位微操作的拆分重命名,使用单个条目可提高性能。在一些实施方案中,本文所述的影子锁存器配置的浮点寄存器文件方案被扩展为多个锁存器和周期(诸如四个锁存器和四个周期)以利用128位数据路径执行512位操作。
为了使用SC-FPRF 145利用256位数据路径实现512位重命名和512位微操作,除了通常用于将数据存储在寄存器文件中的常规锁存器之外,还向寄存器文件中的每个条目添加一组另外的影子锁存器(参考图2详细描绘)。另外,向浮点单元120添加第二写入时钟以允许写入影子锁存器。
调度器单元140调度指令以供在FPU 120中执行。此外,因为SC-FPRF 145使用两个周期来执行单个周期操作,所以调度器单元140适于适应执行两个周期操作所需的另外的周期。因此,浮点单元120中的调度器单元140阻止或延迟接受另外的周期的另一个微操作,直到两个周期操作已经完成为止。也就是说,在一个实施方案中,调度器单元140理解512位微操作花费两个周期,并且阻止在所述第二周期中采取另一个微操作或另一个事务。在一些实施方案中,浮点单元120还要求调度器(调度器单元140)辨别出512位微操作在寄存器文件和执行管线中花费两个周期。
加载存储单元130在两个周期而不是单个周期内执行加载和存储操作,以便针对为影子锁存操作添加的另外周期进行调整。因此,例如,对于512位操作,加载存储单元130在两个周期而不是单个周期内利用256位数据路径执行512位加载和存储。
在各种实施方案中,虽然FPU 120使用256位数据路径执行其全部操作,但解码器(未示出)使用512位数据路径而不是256位来解码512位操作。换句话讲,解码器不知道FPU120使用256位数据路径进行操作,而是像解码器通常针对512位操作所做的那样执行。
在一些实施方案中,影子选择多路复用器信号由本地触发器输出,因为影子选择多路复用器信号与第一周期事务一起出现。在一些实施方案中,从本地触发器输出影子选择多路复用器信号相比读取解码允许处理器更快,并且通过额外或另外的影子选择多路复用器隐藏时序。
尽管以下描述与在浮点单元120中实现的影子锁存器配置的浮点寄存器文件145相关,但它适用于例如针对定点单元125或完全不同类型的处理单元(诸如数字信号处理器、图形处理器、专用集成电路(ASIC)等)实现的任何类型的寄存器文件或影子锁存器配置的寄存器文件。SC-FPRF 145包括功能锁存器、影子锁存器和影子选择多路复用器,所述影子选择多路复用器允许将数据读取到功能锁存器和影子锁存器以及从功能锁存器和影子锁存器写入数据(下面参考图2进一步讨论)。
图2是根据一些实施方案的采用使用影子锁存器的位宽重配置的图1的SC-FPRF145的位单元布局。SC-FPRF 145包括影子锁存器147、影子选择MUX 148、功能或常规锁存器146、读取逻辑单元(读取逻辑)265和写入逻辑单元(写入逻辑)270。在所示示例中,影子锁存器147包括多个影子锁存器,影子选择MUX 148包括多个影子选择多路复用器,常规锁存器146包括多个常规锁存器,读取逻辑单元265包括多个读取逻辑单元,写入逻辑单元270包括多个写入逻辑单元。在一些实施方案中,每个影子锁存器147和常规锁存器146执行存储要在位宽重配置操作期间写入和读取到SC-FPRF 145的数据的锁存操作。每个影子选择MUX148用于选择在位宽重配置操作期间从SC-FPRF 145读取的数据。在一些实施方案中,读取逻辑单元265和写入逻辑单元270包括用于执行本领域公知的读取和写入操作的逻辑。
如图2所描绘,对于512位操作的位宽重配置,FPU 120(具有256数据路径)在两个时钟周期期间将前256位存储在常规锁存器146中并且将后256位存储在影子锁存器147中。也就是说,在写入操作期间,在第一周期中,常规锁存器146存储与512位操作相关联的较低256位。在第二周期中,影子锁存器147存储512位操作的较高256位。在读取操作期间,在第一周期中,从常规锁存器146读取数据。在第二周期中,从EX 150读取已经由影子选择MUX148选择的影子锁存器147并将其提供给EX 150(如图1和3所示)。
图3是根据一些实施方案的使用图1的处理器核心采用影子锁存的方法300。在框310处,由处理器核心100向浮点单元120发起具有数据操作(例如,读取操作或写入操作)的指令集。在框330处,浮点单元120对以第二位宽设置的指令集进行操作。在框340处,基于对指令集的位宽操作评估,浮点单元120采用SC-FPRF 145来执行位宽重配置。例如,在一些实施方案中,对指令集的位宽操作评估包括:确定指令集的位宽是512位操作还是256位操作,以及确定要由浮点单元120执行的数据操作是读取操作、写入操作还是读取操作和写入操作两者。在一些实施方案中,确定指令集的位宽是512位还是256位指定浮点单元120是将在浮点操作期间执行位宽重配置还是仅以规定的256位(浮点单元120的数据路径的位宽)执行浮点操作。在一些实施方案中,确定要由浮点单元120执行的数据操作是读取操作还是写入操作将激活写入控制信号或读取控制信号,所述信号针对浮点单元120中的读取和写入操作指定访问影子锁存器的时序和要使用影子选择MUX 148访问的影子锁存器。
图4是根据一些实施方案的图1的处理器核心100的SC-FPRF 145的框图。SC-FPRF145包括写入MUX 470、常规锁存器446、影子锁存器447、影子选择MUX 448。在各种实施方案中,两个锁存器(例如,常规锁存器446和影子锁存器447)共享单个写入MUX 470,但在写入过程期间利用不同的写入时钟(例如,写入时钟信号410和影子写入时钟信号420)。
在写入操作期间,在SC-FPRF 145的写入端口处,写入MUX 470接收要写入常规锁存器446和影子锁存器447的写入数据(例如,512位数据)。基于写入MUX信号440,当写入时钟信号410逻辑值为高时,写入MUX 470引导写入数据491写入常规锁存器446。当影子写入时钟信号420逻辑值为高时,写入MUX 470将写入数据492引导到影子锁存器447。常规锁存器446和影子锁存器447分别存储所接收的写入数据491和写入数据492。在读取操作期间,常规锁存器446和影子锁存器447基于例如控制影子选择MUX 448的影子选择MUX信号430的逻辑值来释放锁存器数据461和影子锁存器数据471。在一些实施方案中,当例如影子选择MUX信号430的逻辑值为低时,从锁存器446读取锁存器数据461作为读取数据499。当影子选择MUX信号430为高时,从影子锁存器447读取影子锁存器数据471作为读取数据499。然后将读取数据499作为SC-FPRF 145的输出经由读取端口MUX提供给执行单元150。
图5是根据一些实施方案的利用图4的SC-FPRF 145的读取和写入操作的时序图500。时序图500描绘时钟信号510、影子选择MUX信号430、读取数据499、写入时钟信号410、锁存器数据461、影子写入时钟信号420和影子锁存器数据471。在所示实施方案中,时序图500示出四个时钟周期,然而,在替代实施方案中利用不同数量的时钟周期。
对于写入操作,在第一时钟周期期间,写入时钟信号410和影子写入时钟信号420为低,并且没有数据被写入常规锁存器446或影子锁存器447。在第一时钟周期结束时,写入时钟信号410从低转变为高,并且因此,写入数据491被写入常规锁存器446。影子写入时钟信号420在转变期间保持为低,并且在第二周期期间,数据不被写入影子锁存器447。在第二时钟周期结束时,在第二时钟周期中间转变为低的写入时钟信号410保持为低,并且在第三周期期间,没有数据被写入常规锁存器446。在第二时钟周期结束时,影子写入时钟信号420从低转变为高,并且写入数据492被写入影子锁存器447。在第三时钟周期结束时,写入时钟信号410和影子写入时钟信号420保持为低,并且在第四时钟周期期间没有数据被分别写入常规锁存器446和影子锁存器447。对于读取操作,在第一时钟周期期间,影子选择MUX信号430为低,并且不从影子锁存器447读取数据,而从常规锁存器446读取锁存器数据461。在第一周期结束时,当影子选择MUX信号430从低转变为高时,从影子锁存器447读取影子锁存器数据471。锁存器数据461和影子锁存器数据471一起组合以在图1的SC-FPRF 145的输出端处提供期望的位宽配置。
计算机可读存储介质可包括在使用期间可由计算机系统访问以向计算机系统提供指令和/或数据的任何非暂时性存储介质或非暂时性存储介质的组合。此类存储介质包括但不限于光学介质(例如,压缩盘(CD)、数字多功能盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或快闪存储器)或基于微机电系统(MEMS)的存储介质。计算机可读存储介质可嵌入计算系统中(例如,系统RAM或ROM),固定地附接到计算系统(例如,磁性硬盘驱动器)、可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的快闪存储器)或者经由有线或无线网络耦接到计算机系统(例如,网络可访问存储装置(NAS))。
在一些实施方案中,以上所述技术的某些方面可由执行软件的处理系统的一个或多个处理器实现。软件包括存储或以其他方式有形地体现在非暂时性计算机可读存储介质上的一个或多个可执行指令集。软件可包括指令和某些数据,所述指令和某些数据在由一个或多个处理器执行时操纵一个或多个处理器来执行以上所述技术的一个或多个方面。非暂时性计算机可读存储介质可包括例如磁盘或光盘存储设备、固态存储设备诸如快闪存储器、高速缓存、随机存取存储器(RAM)或者其他一个或多个非易失性存储器设备等。存储在非暂时性计算机可读存储介质上的可执行指令可呈源代码、汇编语言代码、对象代码或由一个或多个处理器解译或以其他方式可执行的其他指令格式的形式。
应注意,并非以上在一般描述中所述的所有活动或元件都需要,特定活动或设备的一部分可能不需要,并且可执行一个或多个其他活动,或者可包括除所述那些元件之外的元件。再者,列出的活动次序不一定是执行活动的次序。另外,已经参考具体实施方案描述了概念。然而,本领域普通技术人员应了解,在不脱离如以下权利要求中所阐述的本公开范围的情况下,可作出各种修改和改变。因此,应在说明性而非限制性意义上看待本说明书和附图,并且所有此类修改都意图被包括在本公开的范围内。
上文已经参照具体实施方案描述了益处、其他优点和问题解决方案。然而,所述益处、优点、问题解决方案以及可致使任何益处、优点或解决方案出现或变得更突出的任何特征都不应被解释为是任何或所有权利要求的关键、必需或必要特征。此外,以上所公开的特定实施方案仅是说明性的,因为所公开的主题可以受益于本文教导的本领域技术人员显而易见的不同但等效的方式来修改和实践。除了如以下权利要求中所述的之外,并不意图限于本文所示的构造或设计的细节。因此,显然可更改或修改以上所公开的特定实施方案,并且所有此类变化都被认为在所公开的主题的范围内。因此,本文所寻求的保护如以下权利要求中所阐述。
Claims (20)
1.一种处理器,其包括:
前端,所述前端具有指令集,所述前端以第一位宽操作;以及
浮点单元,所述浮点单元被耦接来接收所述指令集,所述浮点单元以第二位宽操作,其中,基于对提供给所述浮点单元的所述指令集的位宽评估,所述浮点单元采用影子锁存器配置的寄存器文件来执行位宽重配置。
2.如权利要求1所述的处理器,其中:
所述位宽重配置使得以所述第二位宽操作的所述浮点单元能够对以所述第一位宽接收的所述指令集进行操作。
3.如权利要求1所述的处理器,其中:
所述影子锁存器配置的寄存器文件包括多个常规锁存器和多个影子锁存器,所述多个影子锁存器用于存储要从所述影子锁存器读取或写入所述影子锁存器的数据。
4.如权利要求3所述的处理器,其中:
所述多个常规锁存器中的至少一个常规锁存器存储第一位宽操作的多个较低位,并且所述多个影子锁存器中的至少一个影子锁存器存储与所述第一位宽操作相关联的多个较高位。
5.如权利要求4所述的处理器,其中:
所述第一位宽操作是512位宽操作,并且所述第二位宽是256位。
6.如权利要求3所述的处理器,其中:
所述影子锁存器配置的寄存器文件包括耦接到所述多个影子锁存器的多个影子多路复用器(MUX)。
7.如权利要求6所述的处理器,其中:
在读取操作期间,所述多个影子MUX中的至少一个影子MUX用于选择所述多个影子锁存器中的至少一个影子锁存器进行读取。
8.如权利要求3所述的处理器,其中:
在写入操作期间,所述多个影子锁存器中的至少一个影子锁存器在多个时钟周期中的第二时钟周期期间使用写入控制信号来激活。
9.如权利要求3所述的处理器,其中:
在读取操作期间,对所述多个影子锁存器中的至少一个影子锁存器的所述读取操作在第二时钟周期期间通过读取控制信号来激活,所述读取控制信号致使所述影子选择多路复用器在多个时钟周期中的第二时钟周期期间选择所述影子锁存器进行所述读取操作。
10.如权利要求1所述的处理器,其中:
读取逻辑用于从多个影子锁存器选择影子锁存器来读取数据。
11.如权利要求3所述的处理器,其中:
其中所述影子锁存器位于所述影子锁存器配置的寄存器文件中的单个条目中。
12.一种方法,其包括:
接收以第一位宽操作的指令集;
以第二位宽操作浮点单元;以及
基于对所述指令集的位宽评估,采用影子锁存器配置的寄存器文件来执行位宽重配置。
13.如权利要求12所述的方法,其中:
所述位宽重配置使得以所述第二位宽操作的所述浮点单元能够对以所述第一位宽接收的所述指令集进行操作。
14.如权利要求12所述的方法,其中:
所述影子锁存器配置的寄存器文件包括多个常规锁存器和多个影子锁存器,所述多个影子锁存器用于存储要从所述影子锁存器读取或写入所述影子锁存器的数据。
15.根据权利要求14所述的方法,其还包括:
将第一位宽操作的多个较低位存储在所述多个常规锁存器中的至少一个常规锁存器中,并且将与所述第一位宽操作相关联的多个较高位存储在所述多个影子锁存器中的至少一个影子锁存器中。
16.如权利要求14所述的方法,其中:
所述第一位宽是512位宽,并且所述第二位宽是256位宽。
17.如权利要求14所述的方法,其中:
所述影子锁存器配置的寄存器文件包括耦接到所述多个影子锁存器的多个影子多路复用器(MUX)。
18.如权利要求17所述的方法,其中:
在读取操作期间,所述多个影子MUX中的至少一个影子MUX用于选择所述多个影子锁存器中的至少一个影子锁存器进行读取。
在写入操作期间,对所述多个影子锁存器中的至少一个影子锁存器的所述写入操作在多个时钟周期中的第二时钟周期期间使用写入控制信号来激活。
19.一种浮点单元,其包括:
调度器单元;以及
影子锁存器配置的寄存器文件,所述影子锁存器配置的寄存器文件耦接到所述调度器单元,其中基于对以第一位宽提供给所述浮点单元的指令集的位宽评估,所述浮点单元采用所述影子锁存器配置的寄存器文件来使用第二位宽执行位宽重配置。
20.如权利要求1所述的处理器,其中:
所述影子锁存器配置的寄存器文件包括多个常规锁存器和多个影子锁存器,所述多个影子锁存器用于存储要从所述影子锁存器读取或写入所述影子锁存器的数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/585,817 US11544065B2 (en) | 2019-09-27 | 2019-09-27 | Bit width reconfiguration using a shadow-latch configured register file |
US16/585,817 | 2019-09-27 | ||
PCT/US2020/052756 WO2021062178A1 (en) | 2019-09-27 | 2020-09-25 | Bit width reconfiguration using a shadow-latch configured register file |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114467077A true CN114467077A (zh) | 2022-05-10 |
Family
ID=75161993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080067209.3A Pending CN114467077A (zh) | 2019-09-27 | 2020-09-25 | 使用影子锁存器配置的寄存器文件的位宽重配置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11544065B2 (zh) |
EP (1) | EP4034991A4 (zh) |
JP (1) | JP2022548864A (zh) |
KR (1) | KR20220064975A (zh) |
CN (1) | CN114467077A (zh) |
WO (1) | WO2021062178A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230268010A1 (en) * | 2022-02-18 | 2023-08-24 | Infineon Technologies LLC | Data path circuit and method |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5860000A (en) | 1996-01-31 | 1999-01-12 | Hitachi Micro Systems, Inc. | Floating point unit pipeline synchronized with processor pipeline |
US5933627A (en) | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
US6298431B1 (en) | 1997-12-31 | 2001-10-02 | Intel Corporation | Banked shadowed register file |
US5986962A (en) | 1998-07-23 | 1999-11-16 | International Business Machines Corporation | Internal shadow latch |
EP1004959B1 (en) | 1998-10-06 | 2018-08-08 | Texas Instruments Incorporated | Processor with pipeline protection |
US6240031B1 (en) | 2000-03-24 | 2001-05-29 | Cypress Semiconductor Corp. | Memory architecture |
US6430083B1 (en) * | 2000-06-28 | 2002-08-06 | Intel Corporation | Register file scheme |
US6877084B1 (en) * | 2000-08-09 | 2005-04-05 | Advanced Micro Devices, Inc. | Central processing unit (CPU) accessing an extended register set in an extended register mode |
US6470435B2 (en) | 2000-12-28 | 2002-10-22 | Intel Corporation | Dual state rename recovery using register usage |
US6950928B2 (en) | 2001-03-30 | 2005-09-27 | Intel Corporation | Apparatus, method and system for fast register renaming using virtual renaming, including by using rename information or a renamed register |
US20030023836A1 (en) | 2001-06-01 | 2003-01-30 | Michael Catherwood | Shadow register array control instructions |
JP2003016051A (ja) * | 2001-06-29 | 2003-01-17 | Nec Corp | 複素ベクトル演算プロセッサ |
US6795360B2 (en) | 2001-08-23 | 2004-09-21 | Integrated Device Technology, Inc. | Fifo memory devices that support all four combinations of DDR or SDR write modes with DDR or SDR read modes |
US7134002B2 (en) | 2001-08-29 | 2006-11-07 | Intel Corporation | Apparatus and method for switching threads in multi-threading processors |
US7213134B2 (en) | 2002-03-06 | 2007-05-01 | Hewlett-Packard Development Company, L.P. | Using thread urgency in determining switch events in a temporal multithreaded processor unit |
US7127592B2 (en) | 2003-01-08 | 2006-10-24 | Sun Microsystems, Inc. | Method and apparatus for dynamically allocating registers in a windowed architecture |
US7069411B1 (en) | 2003-08-04 | 2006-06-27 | Advanced Micro Devices, Inc. | Mapper circuit with backup capability |
US7426728B2 (en) | 2003-09-24 | 2008-09-16 | Hewlett-Packard Development, L.P. | Reducing latency, when accessing task priority levels |
US7343480B2 (en) | 2003-10-09 | 2008-03-11 | International Business Machines Corporation | Single cycle context switching by swapping a primary latch value and a selected secondary latch value in a register file |
US8140829B2 (en) | 2003-11-20 | 2012-03-20 | International Business Machines Corporation | Multithreaded processor and method for switching threads by swapping instructions between buffers while pausing execution |
US20050138323A1 (en) | 2003-12-18 | 2005-06-23 | Intel Corporation, A Delaware Corporation | Accumulator shadow register systems and methods |
US7398347B1 (en) * | 2004-07-14 | 2008-07-08 | Altera Corporation | Methods and apparatus for dynamic instruction controlled reconfigurable register file |
US20060294344A1 (en) | 2005-06-28 | 2006-12-28 | Universal Network Machines, Inc. | Computer processor pipeline with shadow registers for context switching, and method |
US7844804B2 (en) | 2005-11-10 | 2010-11-30 | Qualcomm Incorporated | Expansion of a stacked register file using shadow registers |
US7565513B2 (en) | 2007-02-28 | 2009-07-21 | Advanced Micro Devices, Inc. | Processor with power saving reconfigurable floating point unit decoding an instruction to single full bit operation or multiple reduced bit operations |
US20080209185A1 (en) * | 2007-02-28 | 2008-08-28 | Advanced Micro Devices, Inc. | Processor with reconfigurable floating point unit |
US7778105B2 (en) | 2008-03-17 | 2010-08-17 | Oracle America, Inc. | Memory with write port configured for double pump write |
KR20100009421A (ko) | 2008-07-18 | 2010-01-27 | 현대자동차주식회사 | 자동차 배터리 케이스용 폴리프로필렌 수지 조성물 및 이를이용한 고단열성 자동차 배터리 케이스 |
WO2010025074A1 (en) * | 2008-08-28 | 2010-03-04 | Sandbridge Technologies, Inc. | Latch-based implementation of a register file for a multi-threaded processor |
CN101788901B (zh) | 2009-01-24 | 2013-09-25 | 世意法(北京)半导体研发有限责任公司 | 使用影子寄存器的高效硬件实现的设备及其方法 |
KR101553652B1 (ko) * | 2009-02-18 | 2015-09-16 | 삼성전자 주식회사 | 이종 프로세서에 대한 명령어 컴파일링 장치 및 방법 |
US9207943B2 (en) | 2009-03-17 | 2015-12-08 | Qualcomm Incorporated | Real time multithreaded scheduler and scheduling method |
US20110004644A1 (en) * | 2009-07-03 | 2011-01-06 | Via Technologies, Inc. | Dynamic floating point register precision control |
US8560924B2 (en) | 2010-01-05 | 2013-10-15 | International Business Machines Corporation | Register file soft error recovery |
US20120110037A1 (en) * | 2010-11-01 | 2012-05-03 | Qualcomm Incorporated | Methods and Apparatus for a Read, Merge and Write Register File |
CN103827840B (zh) | 2011-09-29 | 2017-09-12 | 英特尔公司 | 用于拷贝寄存器内容的处理器、方法和装置以及计算系统 |
US9639369B2 (en) * | 2013-11-11 | 2017-05-02 | Apple Inc. | Split register file for operands of different sizes |
US9514842B2 (en) | 2014-09-24 | 2016-12-06 | Apple Inc. | Memory testing system |
US10241800B2 (en) | 2015-06-16 | 2019-03-26 | International Business Machines Corporation | Split-level history buffer in a computer processing unit |
US20170060593A1 (en) | 2015-09-02 | 2017-03-02 | Qualcomm Incorporated | Hierarchical register file system |
US10622043B2 (en) | 2017-09-11 | 2020-04-14 | Qualcomm Incorporated | Multi-pump memory system access circuits for sequentially executing parallel memory operations |
US11709681B2 (en) | 2017-12-11 | 2023-07-25 | Advanced Micro Devices, Inc. | Differential pipeline delays in a coprocessor |
-
2019
- 2019-09-27 US US16/585,817 patent/US11544065B2/en active Active
-
2020
- 2020-09-25 WO PCT/US2020/052756 patent/WO2021062178A1/en active Application Filing
- 2020-09-25 EP EP20868019.9A patent/EP4034991A4/en active Pending
- 2020-09-25 KR KR1020227010069A patent/KR20220064975A/ko unknown
- 2020-09-25 CN CN202080067209.3A patent/CN114467077A/zh active Pending
- 2020-09-25 JP JP2022516304A patent/JP2022548864A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2022548864A (ja) | 2022-11-22 |
KR20220064975A (ko) | 2022-05-19 |
WO2021062178A1 (en) | 2021-04-01 |
US11544065B2 (en) | 2023-01-03 |
US20210096862A1 (en) | 2021-04-01 |
EP4034991A1 (en) | 2022-08-03 |
EP4034991A4 (en) | 2023-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210026634A1 (en) | Apparatus with reduced hardware register set using register-emulating memory location to emulate architectural register | |
CN107077321B (zh) | 用于执行融合的单个周期递增-比较-跳转的指令和逻辑 | |
TWI654562B (zh) | 藉由演算法匹配、停用特徵或限制效能之回溯相容性 | |
US9639369B2 (en) | Split register file for operands of different sizes | |
TWI644208B (zh) | 藉由對硬體資源之限制實現的向後相容性 | |
TWI507980B (zh) | 最佳化暫存器初始化操作 | |
US10048967B2 (en) | Processor arranged to operate as a single-threaded (nX)-bit processor and as an n-threaded X-bit processor in different modes of operation | |
US9250899B2 (en) | Method and apparatus for spatial register partitioning with a multi-bit cell register file | |
TWI567751B (zh) | 多暫存器記憶體存取指令、處理器、方法及系統 | |
KR102478874B1 (ko) | 비순차적 하드웨어 소프트웨어 공동 설계된 프로세서에서 스택 동기화 명령어를 갖는 술어 값의 스택을 구현하고 유지하기 위한 방법 및 장치 | |
RU2638641C2 (ru) | Загрузка парциальной ширины, зависящая от режима, в процессорах с регистрами с большим числом разрядов, способы и системы | |
CN115686633A (zh) | 用于实现链式区块操作的系统和方法 | |
KR102161682B1 (ko) | 이미디에이트 핸들링 및 플래그 핸들링을 위한 프로세서 및 방법 | |
EP2309383A1 (en) | System with wide operand architecture and method | |
JP6835436B2 (ja) | マスクをマスク値のベクトルに拡張するための方法および装置 | |
JP2023526788A (ja) | マスターシャドウ物理レジスタファイルを利用するための方法及びシステム | |
US11544065B2 (en) | Bit width reconfiguration using a shadow-latch configured register file | |
US11451241B2 (en) | Setting values of portions of registers based on bit values | |
JP2017538215A (ja) | 逆分離演算を実行するための命令及びロジック | |
US20160170767A1 (en) | Temporary transfer of a multithreaded ip core to single or reduced thread configuration during thread offload to co-processor | |
US11960897B2 (en) | Apparatus and methods employing a shared read post register file | |
US20210132985A1 (en) | Shadow latches in a shadow-latch configured register file for thread storage | |
JP2001142694A (ja) | データフィールドのエンコード方法、情報フィールドの拡張方法、及び、コンピュータシステム |
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 |