发明名称 Software emulation of massive hardware threading for tolerating remote memory references
摘要 A method and system for software emulation of hardware support for multi-threaded processing using virtual hardware threads is provided. A software threading system executes on a node that has one or more processors, each with one or more hardware threads. The node has access to local memory and access to remote memory. The software threading system manages the execution of tasks of a user program. The software threading system switches between the virtual hardware threads representing the tasks as the tasks issue remote memory access requests while in user privilege mode. Thus, the software threading system emulates more hardware threads than the underlying hardware supports and switches the virtual hardware threads without the overhead of a context switch to the operating system or change in privilege mode.
申请公布号 US9201689(B2) 申请公布日期 2015.12.01
申请号 US201113092822 申请日期 2011.04.22
申请人 Cray Inc. 发明人 Scott Steven L.;Titus Gregory B.;Choi Sung-Eun;Johnson Troy A.;Mizell David;Ringenburg Michael F.;West Karlon
分类号 G06F9/455;G06F9/46;G06F9/48 主分类号 G06F9/455
代理机构 Perkins Coie LLP 代理人 Perkins Coie LLP
主权项 1. A method in a processing node for executing multiple tasks concurrently, the processing node having a logical processor and access to local memory and remote memory, the logical processor for executing instructions of an instruction set of an actual processor of the processing node, the method comprising: providing a program having multiple tasks that may be executed in parallel, the tasks for performing functionality that includes accessing remote memory; executing by the logical processor instructions of a task of the program in a first privilege mode; and when the task is to access remote memory and while remaining in the first privilege mode, executing by the logical processor one or more instructions to transfer control from the task to a software threading system; and under control of the software threading system:executing by the logical processor one or more instructions to issue a remote memory access request;executing by the logical processor one or more instructions to designate the task as waiting on the issued remote memory access request;executing by the logical processor one or more instructions to select another task that is not waiting on an issued remote memory access request for execution while the task is waiting for the remote memory access request to complete;executing by the logical processor one or more instructions to switch execution to the other task that is not waiting on an issued remote memory access request; andexecuting by the logical processor instructions of the other task that is not waiting on an issued remote memory access request, such that the logical processor executes instructions to switch execution to the other task that is not waiting after the currently executing task is designated as waiting to effect the executing of multiple tasks concurrently by the logical processor without switching from the first privilege mode to a second privilege mode.
地址 Seattle WA US