Method and apparatus for avoiding raw hazards in an execute-ahead processor
    41.
    发明申请
    Method and apparatus for avoiding raw hazards in an execute-ahead processor 有权
    用于避免执行前处理器中的原始危害的方法和装置

    公开(公告)号:US20050251666A1

    公开(公告)日:2005-11-10

    申请号:US10923219

    申请日:2004-08-20

    IPC分类号: G06F9/38 G06F15/00

    摘要: One embodiment of the present invention provides a system that avoids read-after-write (RAW) hazards while speculatively executing instructions on a processor. The system starts in a normal execution mode, wherein the system issues instructions for execution in program order. Upon encountering a stall condition during execution of an instruction, the system generates a checkpoint, and executes the instruction and subsequent instructions in a speculative-execution mode. The system also maintains dependency information for each register indicating whether or not a value in the register depends on an unresolved data-dependency. The system uses this dependency information to avoid RAW hazards during the speculative-execution mode.

    摘要翻译: 本发明的一个实施例提供了一种在推测性地在处理器上执行指令时避免写后读取(RAW)危险的系统。 系统以正常执行模式启动,其中系统以程序顺序发出执行指令。 在执行指令期间遇到停顿状态时,系统生成检查点,并以推测执行模式执行指令和后续指令。 该系统还维护每个寄存器的依赖性信息,指示寄存器中的值是否取决于未解决的数据依赖性。 系统使用这种依赖信息来避免在推测执行模式下的RAW危害。

    Automatic prefetch of pointers
    42.
    发明授权
    Automatic prefetch of pointers 有权
    自动预取指针

    公开(公告)号:US06934809B2

    公开(公告)日:2005-08-23

    申请号:US10080859

    申请日:2002-02-22

    摘要: Techniques have been developed whereby likely pointer values are identified at runtime and contents of corresponding storage location can be prefetched into a cache hierarchy to reduce effective memory access latencies. In some realizations, one or more writable stores are defined in a processor architecture to delimit a portion or portions of a memory address space.

    摘要翻译: 已经开发了技术,其中可能在运行时识别指针值,并且可以将对应的存储位置的内容预取到高速缓存层级以减少有效的存储器访问延迟。 在一些实现中,在处理器架构中定义一个或多个可写存储器以限定存储器地址空间的一部分或部分。

    Selectively deferring the execution of instructions with unresolved data dependencies as they are issued in program order
    43.
    发明申请
    Selectively deferring the execution of instructions with unresolved data dependencies as they are issued in program order 有权
    选择性地推迟执行具有未解决的数据依赖关系的指令,因为它们是按程序顺序发出的

    公开(公告)号:US20050081195A1

    公开(公告)日:2005-04-14

    申请号:US10686061

    申请日:2003-10-14

    IPC分类号: G06F9/00 G06F9/38 G06F9/45

    摘要: One embodiment of the present invention provides a system that facilitates deferring execution of instructions with unresolved data dependencies as they are issued for execution in program order. During a normal execution mode, the system issues instructions for execution in program order. Upon encountering an unresolved data dependency during execution of an instruction, the system generates a checkpoint that can subsequently be used to return execution of the program to the point of the instruction. Next, the system executes subsequent instructions in an execute-ahead mode, wherein instructions that cannot be executed because of an unresolved data dependency are deferred, and wherein other non-deferred instructions are executed in program order.

    摘要翻译: 本发明的一个实施例提供了一种系统,其有助于在按照程序顺序执行时,推迟执行具有未解决的数据依赖性的指令。 在正常执行模式下,系统以程序顺序发出执行指令。 在执行指令期间遇到未解决的数据依赖性时,系统产生一个检查点,随后可以使用该检查点将程序的执行返回到指令点。 接下来,系统以执行模式执行后续指令,其中由于未解决的数据依赖性而不能执行的指令被延迟,并且其中其他非延迟指令以程序顺序执行。

    Method and apparatus for using an assist processor and value speculation to facilitate prefetching for a primary processor
    44.
    发明授权
    Method and apparatus for using an assist processor and value speculation to facilitate prefetching for a primary processor 有权
    用于使用辅助处理器的方法和装置以及用于推动主处理器的预取的价值推测

    公开(公告)号:US06772321B2

    公开(公告)日:2004-08-03

    申请号:US09761360

    申请日:2001-01-16

    IPC分类号: G06F1500

    摘要: One embodiment of the present invention provides a system that prefetches from memory by using an assist processor that performs data speculation and that executes in advance of a primary processor. The system operates by executing executable code on the primary processor while simultaneously executing a reduced version of the executable code on the assist processor. This allows the assist processor to generate the same pattern of memory references that the primary processor generates in advance of when the primary processor generates the memory references. While executing the reduced version of the executable code, the system predicts a data value returned by a long latency operation within the executable code. The system subsequently uses the predicted data value to continue executing the reduced version of the executable code without having to wait for the long latency operation to complete.

    摘要翻译: 本发明的一个实施例提供一种通过使用执行数据推测并且在主处理器之前执行的辅助处理器来从存储器预取的系统。 该系统通过在主处理器上执行可执行代码同时在辅助处理器上执行可执行代码的简化版本来操作。 这允许辅助处理器在主处理器产生存储器引用之前产生与主处理器产生的相同的存储器引用模式。 在执行可执行代码的缩减版本的同时,系统预测在可执行代码内的长延迟操作返回的数据值。 系统随后使用预测数据值继续执行可执行代码的简化版本,而不必等待长延迟操作完成。

    Supporting multi-dimensional space-time computing through object versioning
    45.
    发明授权
    Supporting multi-dimensional space-time computing through object versioning 有权
    通过对象版本控制支持多维时空计算

    公开(公告)号:US06463526B1

    公开(公告)日:2002-10-08

    申请号:US09420335

    申请日:1999-10-18

    IPC分类号: G06F952

    摘要: One embodiment of the present invention provides a system that facilitates multi-dimensional space and time dimensional execution of computer programs. The system includes a head thread that executes program instructions and a series of speculative threads that execute program instructions in advance of the head thread, wherein each speculative thread executes program instructions in advance of preceding speculative threads in the series. The head thread accesses a primary version of the memory element and the series of speculative threads access space-time dimensioned versions of the memory element. The system starts by receiving a memory access to the memory element. If the memory access is a write operation by the head thread or a speculative thread, the system determines if a version of the memory element associated with the head thread or speculative thread exists. If not, the system creates a version of the memory element for the thread. Next, the system performs the write operation to the version of the memory element. After performing the write operation, the system checks status information associated with the memory element to determine if the memory element has been read by a following speculative thread in the series of speculative threads. If so, the system causes the following speculative thread and any successive speculative threads in the series to roll back so that the following speculative thread and any successive speculative threads in the series can read a result of the write operation. If not, the system performs the write operation to all successive space-time dimensioned versions of the memory element.

    摘要翻译: 本发明的一个实施例提供一种促进计算机程序的多维空间和时间尺寸执行的系统。 该系统包括执行程序指令的头螺纹和在头部线程之前执行程序指令的一系列推测线程,其中每个推测线程在该系列中的先前推测线程之前执行程序指令。 头线程访问存储器元件的主要版本,并且一系列推测线程访问存储器元件的时空维度版本。 系统通过接收存储器元件的存储器访问来开始。 如果存储器访问是头部线程或推测线程的写入操作,则系统确定是否存在与头部线程或推测线程相关联的存储器元件的版本。 如果没有,系统会创建线程的内存元素的版本。 接下来,系统对存储元件的版本执行写入操作。 在执行写入操作之后,系统检查与存储器元件相关联的状态信息,以确定存储器元件是否已被一系列推测性线程中的以下推测线程读取。 如果是这样,系统会导致以下推测线程和系列中任何连续的推测线程回滚,以便以下推测线程和系列中任何连续的推测线程可以读取写操作的结果。 如果没有,则系统对所有连续的时空维度版本的存储器元件执行写入操作。

    Using time stamps to improve efficiency in marking fields within objects
    46.
    发明授权
    Using time stamps to improve efficiency in marking fields within objects 有权
    使用时间戳来提高对象内标记区域的效率

    公开(公告)号:US06460067B1

    公开(公告)日:2002-10-01

    申请号:US09327399

    申请日:1999-06-07

    IPC分类号: G06F1500

    CPC分类号: G06F9/52

    摘要: One embodiment provides for a system that uses a time stamp in order to more efficiently mark objects to keep track of accesses to fields with the objects. Upon receiving a first reference to a first field in an object, the system determines whether the first field has been accessed within a current time period. The system does so by retrieving a time stamp associated with the object. This time stamp indicates the last time any marking bit associated with any field in the object was updated. The system compares the time stamp with a current time value associated with the current time period. The system additionally retrieves a first marking bit associated with the first field and determines if the first marking bit is set. If the first marking bit is set and if the time stamp equals the current time value, the system determines that the first field has been accessed in the current time period. The system indicates that a second field in the object has been accessed in the current time period upon receiving a second reference to the second field. In response to the second reference, the system sets a second marking bit associated with the second field. The system also updates the time stamp associated with the object, if necessary, so that the time stamp contains the current time value.

    摘要翻译: 一个实施例提供了一种使用时间戳的系统,以便更有效地标记对象以跟踪对具有对象的字段的访问。 在接收到对象中的第一个字段的第一个引用后,系统确定在当前时间段内是否已经访问了第一个字段。 系统通过检索与对象相关联的时间戳来实现。 该时间戳表示最后一次与对象中的任何字段相关联的任何标记位被更新。 系统将时间戳与当前时间段相关联的当前时间值进行比较。 系统还检索与第一场相关联的第一标记位,并确定是否设置了第一标记位。 如果设置了第一个标记位,并且如果时间戳等于当前时间值,则系统确定在当前时间段内已经访问了第一个字段。 系统指示当接收到对第二字段的第二个引用时,当前时间段中已经访问了该对象中的第二个字段。 响应于第二参考,系统设置与第二场相关联的第二标记位。 如果需要,系统还更新与对象相关联的时间戳,以便时间戳包含当前时间值。

    Dynamic handling of object versions to support space and time dimensional program execution
    47.
    发明授权
    Dynamic handling of object versions to support space and time dimensional program execution 有权
    动态处理对象版本,以支持空间和时间维度程序执行

    公开(公告)号:US06438677B1

    公开(公告)日:2002-08-20

    申请号:US09422028

    申请日:1999-10-20

    IPC分类号: G06F952

    摘要: One embodiment of the present invention provides a system that supports space and time dimensional program execution by facilitating accesses to different versions of a memory element. The system supports a head thread that executes program instructions and a speculative thread that executes program instructions in advance of the head thread. The head thread accesses a primary version of the memory element, and the speculative thread accesses a space-time dimensioned version of the memory element. During a reference to the memory element by the head thread, the system accesses the primary version of the memory element. During a reference to the memory element by the speculative thread, the speculative thread accesses a pointer associated with the primary version of the memory element, and accesses a version of the memory element through the pointer. Note that the pointer points to the space-time dimensioned version of the memory element if the space-time dimensioned version of the memory element exists. In one embodiment of the present invention, the pointer points to the primary version of the memory element if the space-time dimensioned version of the memory element does not exist.

    摘要翻译: 本发明的一个实施例提供一种通过促进对存储器元件的不同版本的访问来支持空间和时间维度程序执行的系统。 该系统支持执行程序指令的头部线程和在头部线程之前执行程序指令的推测线程。 头线程访问存储器元件的主要版本,并且推测线程访问存储器元件的时空维度版本。 在通过头部线程引用存储器元件期间,系统访问存储器元件的主要版本。 在通过推测线程对存储器元件的引用期间,推测线程访问与存储器元件的主版本相关联的指针,并且通过指针访问存储器元件的版本。 请注意,如果内存元素的时空维度版本存在,则指针指向内存元素的时空维度版本。 在本发明的一个实施例中,如果存储元件的时空尺寸版本不存在,则指针指向存储元件的主版本。

    Supporting space-time dimensional program execution by selectively versioning memory updates
    48.
    发明授权
    Supporting space-time dimensional program execution by selectively versioning memory updates 有权
    通过有选择地对内存更新进行版本控制来支持时空维度程序执行

    公开(公告)号:US06353881B1

    公开(公告)日:2002-03-05

    申请号:US09313229

    申请日:1999-05-17

    IPC分类号: G06F952

    摘要: A system is provided that facilitates space and time dimensional execution of computer programs through selective versioning of memory elements located in a system heap. The system includes a head thread that executes program instructions and a speculative thread that simultaneously executes program instructions in advance of the head thread with respect to the time dimension of sequential execution of the program. The collapsing of the time dimensions is facilitated by expanding the heap into two space-time dimensions, a primary dimension (dimension zero), in which the head thread operates, and a space-time dimension (dimension one), in which the speculative thread operates. In general, each dimension contains its own version of an object and objects created by the thread operating in the dimension. The head thread generally accesses a primary version of a memory element and the speculative thread generally accesses a corresponding space-time dimensioned version of the memory element. During a write by the head thread, the system performs the write to all dimensions of the memory element. Note that if the dimensions are collapsed at this address a single update will update all time dimensions. It also checks status information associated with the memory element to determine if the memory element has been read by the speculative thread. If so, the system causes the speculative thread to roll back so that the speculative thread can read a result of the write operation.

    摘要翻译: 提供了一种系统,其通过对位于系统堆中的存储器元件进行选择性版本化来促进计算机程序的空间和时间尺寸的执行。 该系统包括执行程序指令的头螺纹和相对于程序的顺序执行的时间维度在头部线程之前同时执行程序指令的推测线程。 通过将堆扩展到两个时空维度(头线程操作的主维度(维度零))和空时维度(维度一)来促进时间维度的崩溃,其中推测线程 操作。 通常,每个维度都包含自己的一个对象的版本,以及由维度中的线程创建的对象。 头部线程通常访问存储器元件的主要版本,并且推测线程通常访问存储器元件的对应的时空维度版本。 在头部线程的写入期间,系统对存储器元件的所有维进行写入。 请注意,如果维度在此地址中折叠,则单个更新将更新所有时间维。 它还检查与存储器元件相关联的状态信息以确定存储器元件是否已被推测性线程读取。 如果是这样,系统会使推测线程回滚,以便推测线程可以读取写入操作的结果。

    Processor with a register file that supports multiple-issue execution
    49.
    发明授权
    Processor with a register file that supports multiple-issue execution 有权
    具有支持多次执行的寄存器文件的处理器

    公开(公告)号:US08447931B1

    公开(公告)日:2013-05-21

    申请号:US11173110

    申请日:2005-07-01

    IPC分类号: G06F12/00

    摘要: One embodiment of the present invention provides a processor that supports multiple-issue execution. This processor includes a register file, which contains an array of memory cells, wherein the memory cells contain bits for architectural registers of the processor. The register file also includes multiple read ports and multiple write ports to support multiple-issue execution. During operation, if multiple read ports simultaneously read from a given register, the register file is configured to: read each bit of the given register out of the array of memory cells through a single bitline associated with the bit; and to use a driver located outside of the array of memory cells to drive the bit to the multiple read ports. In this way, each memory cell only has to drive a single bitline (instead of multiple bitlines) during a multiple-port read operation, thereby allowing memory cells to use smaller and more power-efficient drivers for read operations.

    摘要翻译: 本发明的一个实施例提供一种支持多次执行的处理器。 该处理器包括一个寄存器文件,该寄存器文件包含一个存储单元阵列,其中存储单元包含处理器结构寄存器的位。 注册文件还包括多个读取端口和多个写入端口,以支持多次执行。 在操作期间,如果从给定寄存器同时读取多个读取端口,则寄存器文件被配置为:通过与该位相关联的单个位线,将给定寄存器的每个位从存储器单元阵列中读出; 并使用位于存储器单元阵列之外的驱动器将该位驱动到多个读取端口。 以这种方式,每个存储器单元仅在多端口读取操作期间仅驱动单个位线(而不是多个位线),从而允许存储器单元使用较小且更省电的驱动器进行读取操作。

    Method and apparatus for synchronizing threads on a processor that supports transactional memory
    50.
    发明授权
    Method and apparatus for synchronizing threads on a processor that supports transactional memory 有权
    用于在支持事务性存储器的处理器上同步线程的方法和装置

    公开(公告)号:US07930695B2

    公开(公告)日:2011-04-19

    申请号:US11418652

    申请日:2006-05-05

    IPC分类号: G06F9/46

    摘要: One embodiment of the present invention provides a system that synchronizes threads on a multi-threaded processor. The system starts by executing instructions from a multi-threaded program using a first thread and a second thread. When the first thread reaches a predetermined location in the multi-threaded program, the first thread executes a Start-Transactional-Execution (STE) instruction to commence transactional execution, wherein the STE instruction specifies a location to branch to if transactional execution fails. During the subsequent transactional execution, the first thread accesses a mailbox location in memory (which is also accessible by the second thread) and then executes instructions that cause the first thread to wait. When the second thread reaches a second predetermined location in the multi-threaded program, the second thread signals the first thread by accessing the mailbox location, which causes the transactional execution of the first thread to fail, thereby causing the first thread to resume non-transactional execution from the location specified in the STE instruction. In this way, the second thread can signal to the first thread without the first thread having to poll a shared variable.

    摘要翻译: 本发明的一个实施例提供了一种在多线程处理器上同步线程的系统。 系统通过使用第一个线程和第二个线程执行来自多线程程序的指令来启动。 当第一线程到达多线程程序中的预定位置时,第一线程执行开始 - 事务执行(STE)指令以开始事务执行,其中STE指令指定分支到事务执行失败的位置。 在随后的事务执行期间,第一个线程访问存储器中的邮箱位置(也可由第二个线程访问),然后执行使第一个线程等待的指令。 当第二线程到达多线程程序中的第二预定位置时,第二线程通过访问邮箱位置来发信号通知第一线程,这导致第一线程的事务性执行失败,从而使第一线程恢复为非线程, 从STE指令中指定的位置进行事务执行。 以这种方式,第二线程可以向第一线程发信号,而第一线程不必轮询共享变量。