CN1316074A - 中断/软件控制的线程处理 - Google Patents
中断/软件控制的线程处理 Download PDFInfo
- Publication number
- CN1316074A CN1316074A CN99805314A CN99805314A CN1316074A CN 1316074 A CN1316074 A CN 1316074A CN 99805314 A CN99805314 A CN 99805314A CN 99805314 A CN99805314 A CN 99805314A CN 1316074 A CN1316074 A CN 1316074A
- Authority
- CN
- China
- Prior art keywords
- thread
- context
- memory location
- environment
- processor
- 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
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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
- G06F9/30127—Register windows
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Programmable Controllers (AREA)
Abstract
通过在存储器和环境寄存器组之间传递完全线程环境而实现的快速线程处理。每个线程环境响应指定的指定或指令从相应的存储器网站读出。
Description
发明背景
1.发明领域
本发明涉及面向线程的处理,特别是,涉及使用环境的多线程处理。
2.相关技术说明
在多线程处理中,一个处理器可以成功的运行多个不同的进程(通常指“线程”)。在特别事件发生时,象经过一个预定时间后或收到一个特定指令时,处理器挂起一个线程的运行,储存描述被挂起线程的状态的环境,并开始运行由另一个环境描述的另一个线程。每一个“环境”含有处理器初始一个新线程的运行或继续执行一个被挂起线程需要的信息。通常这个信息包括存储器地址,状态信息和数据。
为了实现对存储的线程环境的直接和快速的存取,有些处理器含有多个本地环境寄存器区(bank)。然而,这是一个将运行线程数量限制为固定数量的不灵活的装置。当线程数量小于已有的寄存器区的数量时这种处理器的效率非常低。
或者,多个环境可被储存在分离的存储器中。此种方法的各种实例在美国专利5349680中有所描述。这些实例的其中一个中,在该专利中作为已有的信息处理设置,一个主处理机包括用于连续执行不同应用程序进程的操作的应用程序支持单元和用于扩展信息处理装置的***支持单元两者。这种装置的效率被描述为较差,因为应用程序支持单元和***支持单元从不同时操作。美国专利5349680提出了利用多个存储环境的不同装置,但是每一装置都要使用两个分开的处理器。这种提高效率的方法太昂贵了。
发明概述
本发明的目的是通过一个不受使用固定数量的本地环境寄存器的不可改变性妨碍的单一处理器来实现的快速而有效的多线程处理。
这个和其他目的可通过环境寄存器组和存储器之间的环境交换来实现。这使仅用少数硬件的快速多线程处理成为可能。依据本发明,使用的方法包括:
将多个中断的每一个与相应的存储器位置相关联;
在存储器位置内储存多个分别的线程环境指针,每个指针识别包含全面描述所述线程之一的运行状态的线程环境的存储器位置;
响应任何中断的出现,从与中断关联的相应的存储位置中读指针;
从由读入环境到环境寄存器组中的线程环境指针标识的存储器位置读出线程环境;
运行读出的线程环境描述的线程。
通过在与各个中断关联的存储器位置存储环境的指针而不是环境本身,这些中断是从特定环境中去引用的。这在决定中断响应中提供了高度的灵活性。它还能通过在只在一个存储位置中存储的多个中断共用的环境并在这些中断的每个指针中包括此共用环境的地址而节省存储器。而后,通过在由指针识别的存储位置中直接储存环境本身,快速使处理器从一个线程转变到另一个线程就成为可能了。
注意单词“存储器”,在此旨在笼统的译作与其使用和包括的相符的方式,但不限于各种类型的易失的和非易失的装置,例如寄存器,RAM,DRAM,ROM,和这些设置的组合。还有,“读”指的是从一个存储器中检索信息并把它写入另一个存储器中。
在本发明的一个特别有益的实施方案中,程序流(即形成程序的指令序列)中的某些由处理器执行的指令直接影响处理器中的环境改变。这使得可以快速改变由线程本身开启的环境。
附图简述
图1是依据本发明的一个实施方案说明多线程处理***操作的框图。
图2是带有存储在存储器中特定的一组指针和线程环境的图1的多线程处理***操作的框图。
图3是带有优先级线程的图1的多线程处理***操作的图表。
图4是带有第一和第二优先级的图1的多线程处理***操作的框图。
优选实施方案的描述
图1的多线程处理***包括一个单一处理器10和一个存储器20。示范处理器10是一个利用时钟脉冲定序由程序计数寄存器识别的指令的硬件加速单元。一般的,程序计数寄存器含有要被读出并通过处理器执行的下一个指令的存储位置。
处理器包括中断处理单元12,环境寄存器组14,指令解码器16和运算逻辑单元18。存储器20,在这个示范方案中,包括一个RAM,它有多个存储位置用来储存多线程环境指针PtrTC1,PtrTC2,PtrTC3,…PtrTCn,和多线程环境等。
处理器10和存储器20连接到一个共用的总线30上来彼此通信并同连在总线上的其他硬件通信。总线包括用来传送信息如地址,中断,读出选通,写入选通和设备选择选通的各条线路。优选的,这是一个至少部分生成在用处理器和存储器基底的共用硅上的高速总线。
处理器10的操作完全受控于中断和程序流中的指令。这些中断要么是从总线30那收到的外部中断要么是在处理器自身内产生的比如,从处理器中的计时器产生的内部中断。每个外部中断与储存着线程指针PtrTC1,PtrTC2PtrTC3,…PtrTCn之一的存储器20的预定位置相关联。每个指针与连接在总线30上的硬件使用的线程环境中的一个相关联并识别储存特定环境的存储位置。注意不止一个指针(如PtrTC1和PtrTC3)可与同一个线程环境关联,然后识别同一个存储位置。如果不止一个装置连接在总线30上,如一个接收FIFO和一个传递FIFO,利用同一个环境,这是很有用的。每个内部中断与储存着由处理器利用的线程环境的存储器20中的一个预定的位置相关。
如果一个环境是共用的,处理时间会长些,因为中断服务线程必须决定中断的来源。但是,需要较少的存储器。相反的,如果一个中断独立的使用一个环境,中断服务线程能够固有的识别中断的来源而且处理响应时间也短了。这给***结构提供了灵活性。
所有的中断都由中断处理单元12处理,它包括一个线程环境***120,一个指针寄存器122和,可选的一个高速缓存管理器124。线程环境***120产生与内部和外部中断关联的存储位置识别的地址。作为对任何中断的响应,线程环境***产生识别储存着相关的一个线程环境指针PtrTC1,PtrTC2,PtrTC3,…PtrTCn的存储器20中的预定位置的地址。处理器然后从这个存储单元中读线程环境位置到指针寄存器122中。外部中断的例子包括FIFO发送完成,FIFO数据接收,DMA传输完成,FIFO发送完成,等等。内部中断的例子包括内部计时器等。
优选的线程环境***包括一个用来产生地址的专用的优先级-敏感的硬件部件,如一个可编程查找表或一个编码器,这些在本领域中都是显为人知的。它们即扩大了寻址速度还能使高优先级中断在低优先级中断前处理。
环境寄存器组14包括多个用来包含当前由处理器10运行的线程的环境的寄存器。在优先的实施方案中,寄存器组14包括:
·一个用来储存当前由处理器运行的线程的环境的存储器地址的寄存器PTR TC;
·一个用来储存以前由处理器运行的线程的环境的存储器地址的寄存器PREV PTR TC;
·一个用来识别可能不被存在存储器20中的线程环境指针识别的线程环境的位置的寄存器P0;
·一个程序计数寄存器PC,不断的更新从而识别存储器20中要被存取的下一个指令的地址;
·一个或多个通用寄存器(未示出);和
·一个或多个用来包含从存储器20中读出的或由运算器18产生的数据的数据寄存器(未示出)。
指令解码器16是个传统的硬件部件,如定序器或微定序器,用来转换从存储器20读出的指令到由运算器18执行的低级操作编码。运算逻辑单元也是个传统的硬件部件。
图2说明的是处理器10在多个顺序发生的环境改变的示范指令和中断的控制下的操作。图框40代表这些中断和环境改变发生对处理器中的事件的顺序。示出的示范环境-改变指令(恢复PREV TC,切换至P0 TC,恢复FM P0 TC,切换至PREV TC和S/W中断)影响环境寄存器组14中的改变,下文将会详述。
图框20’代表存储器20中的位置,含有特定指针,由这些指针定位的线程环境,由在序列40中出现的环境-改变指令“切换至P0 TC”和“恢复FM P0 TC”定位的线程环境。在这一特定示例中,存储单元20’分别包括:
·响应中断INT 1由处理器读出的指针Ptr TC INT1,它包含一个相关的线程环境“线程环境F”的存储位置;
·响应中断EXT 1由处理器读出的指针Ptr TC EXT 1,它包含一个相关的线程环境“线程环境A”的存储位置;
·响应中断EXT 2由处理器读出的指针Ptr TC EXT 2,它包含一个相关的线程环境“线程环境B”的存储位置;
·响应中断EXT 3由处理器读出的指针Ptr TC EXT 3,它包含一个相关的线程环境“线程环境C”的存储位置;
·线程环境“线程环境A”;
·线程环境“线程环境B”;
·线程环境“线程环境C”;
·线程环境“线程环境D”;
·线程环境“线程环境E”;
·线程环境“线程环境F”。
在这个实施方案中,指令“恢复PREV TC”,“切换至P0 TC”,“恢复FM P0 TC”,“切换PREV TC”和“S/W中断”包含在存储器20中并在当它们的存储位置由程序计数寄存器PC识别时被读入指令解码器16。
图2所示序列在时刻t0开始,即当处理器10正在运行由包含在环境寄存器组中的“线程环境A”代表的线程A时。为简便起见,每个中断都将被假设成允许操作的并在其出现时立即被执行。
在时刻t1处理器10在总线30中的一个中断线路上接收到外部中断EXT 2。响应该中断,处理器:
·读当前包含在环境寄存器组14中的线程环境,即线程A的环境(“线程环境A”),并读入由包含在环境寄存器组14中PTR TC寄存器中的当前线程环境地址识别的存储位置;
·将当前包含在寄存器PTR TC中地址读入寄存器PREV PTR TC;
·使线程环境***120产生识别与外部中断EXT 2相关的存储位置的地址,即存储着指针Ptr TC EXT 2的存储位置;
·将识别“线程环境B”的存储位置的指针Ptr TC EXT 2读入指针寄存器122中;
·把这个线程环境读入环境寄存器组14并开始运行线程B。
在时刻t2,处理器10遇到,作为线程B中的最后的指令,指令“恢复PREV TC”。执行此指令时处理器:
·从PREV PTR TC寄存器中读地址到指针寄存器122中;
·选择性地从PRT TC寄存器中读地址到寄存器PREV PTR TC中;
·从由收指针寄存器122识别的存储单元20’读线程环境A到环境寄存器组14和重新建立线程A的运行。
在时刻t3,当运行线程A时,处理器在由程序计数寄存器PC识别的存储器20’中的相应位置读出指令“切换至P0 TC”。这个指令用来开启一个从不能被存储器20’中任何预先储存的线程环境指针Ptr TCEXT 1,Ptr TC EXT 2或Ptr TC EXT 3识别的一个线程到另一个线程的转换。为实现这个转换,在切换至P0 TC指令之前的指令之一将在P0寄存器中预先储存,在环境寄存器组中,为要转换到的线程识别环境位置的地址。在这个例子中,这个转换是从当前的线程A到位于存储器20’中某个位置的线程D。该指令执行时处理器:
·读“线程环境A”到由包含在环境寄存器组14中的寄存器PREVPTR TC中的当前线程环境地址识别的存储位置;
·读当前包含在寄存器PTR TC中的地址到寄存器PREV PTR TC;
·从寄存器P0中读地址到指针寄存器122;
·从由指针寄存器122识别的存储器20’中的位置读线程环境(“线程环境D”)到环境寄存器组14;
·开始运行线程D。
在时刻t4,作为对从线程D的运行中的存储器20’读出的指令的响应,处理器10通过从存储器20’中相应的位置读来执行指令“恢复FM P0 TC”。指令“恢复FM P0 TC”与指令“切换至P0 TC”相似,但读线程的环境时并没有储存当前在环境寄存器组14中的环境。要完成这一指令,在“恢复FM P0 TC”指令之前的指令之一将在P0寄存器中预先储存识别要被恢复的线程的环境位置的地址。在这一示例中,处理器要恢复线程E通过:
·从寄存器P0中读“线程环境E”地址到指针寄存器;
·选择性的从寄存器PTR TC中读地址到寄存器PREV PTR TC中;
·从存储器20’中读“线程环境E”到环境寄存器组。
在时刻t5,在线程E的运行中,处理器在由程序计数寄存器PC识别的存储器20’中的相应位置读出指令“切换至PREV TC”。这个指令用来使能一个从当前运行的线程到早先运行的线程的转换。在这一示例中,这个转换是从当前的线程E到线程D。执行这个指令时,处理器:
·读“线程环境E”到由包含在环境寄存器组14中的寄存器PREVPTR TC中的当前线程环境地址识别的存储器20’中的存储位置;
·从寄存器PREV PTR TC中读地址到指针寄存器122;
·读当前包含在寄存器PTR TC中的地址到寄存器PREV PTR TC;
·从由指针寄存器122识别的存储器20’中的位置读线程环境F到环境寄存器组14并重建立线程D的运行。
在时刻t6,运行线程D时,处理器从由程序计数寄存器PC识别的存储器20’中的相应位置读出指令“S/W中断”。这个指令用来开启硬件中断的一种软件仿真。在此示例中,这个指令会仿真中断INT 1。响应该指令,处理器将象收到硬件中断INT 1一样响应。也就是,处理器:
·从环境寄存器组14中读当前运行的“线程环境D”到由包含在寄存器PTR TC中的地址识别的存储位置;
·读当前包含在寄存器PTR TC中的地址到寄存器PREV PTR TC;
·使线程环境***120产生识别与内部中断INT 1关联的存储位置的地址,即存储指针Ptr TCINT1的存储位置;
·读识别“线程环境F”的存储位置的指针Ptr TC INT 1到指针寄存器122中;
·把这个线程环境读入环境寄存器组14并开始运行线程F。
如上所述,处理器具有快速改变包含在单一环境寄存器组14中的环境的能力。优选的,然而,要加快环境改变速度处理器有多个环境寄存器组。在这种情形中,选择性的环境高速缓存管理器124将被包括在处理器中。
要达到最大的速度,在高速缓存存储器中环境寄存器组的个数和处理器运行的不同线程的个数一样多。这是对高速缓存存储器空间的低效率使用,但是,不是每个线程都需要这种高速度。依据本发明的另一个特征,最佳效率要通过环境寄存器组少于线程来实现,通过使每个高优先级线程有多于给低优先级线程的可用寄存器组来实现。图3和图4说明这两种优先级。
图3代表配置为通过利用位于高速缓存存储器中受控于高速缓存管理器124的4个环境寄存器组(Ⅰ,Ⅱ,Ⅲ,Ⅳ)来运行8个线程(线程A,B,…H)的***中的线程处理。每个环境寄存器组都与图1所示的相似,但更进一步的包括了储存包含在各个8个线程的环境中的优先级代码P的寄存器。在此示例中:
·一个单一位被用于指示高优先级(p=1)或低优先级(p=0)线程;
·线程A,B,C被指定为高优先级线程;
·线程D,E,F,G,H被指定为低优先级线程;
在图3的示例中,在时刻t0处理器10没有运行任何线程而且环境寄存器组Ⅰ,Ⅱ,Ⅲ,Ⅳ处于一种没有寄存器组含有线程环境的复位状态。处理器处于空载直到被中断如下:
·在时刻t1,中断EXT 2通过总线30接收。处理器(通过线程环境***120)读Ptr TC EXT2指针到指针寄存器122然后从由此指针识别的存储位置中读“线程环境B”。高速缓存管理器124决定这个线程环境包括高优先级代码p=1,全部4个环境寄存器组都是空闲的(即不含任何环境),并发送“线程环境B”到环境寄存器组Ⅰ。(在这个例子中高速缓存管理器总是按数字选出第一个空闲的寄存器组,但可以按照任何序列完成,包括随机的。)环境寄存器组Ⅰ现在成为活动的并在处理器运行线程B时不断的被更新。
·在时刻t2,中断INT 1从处理器中的计时器接收到。处理器读Ptr TC INT 1指针到指针寄存器122然后从由此指针识别的存储位置中读“线程环境F”。高速缓存管理器决定这个线程环境包括低优先级代码p=0,没有环境寄存器组包含任何低优先级环境,环境寄存器组Ⅱ,Ⅲ,Ⅳ是空闲的,并发送“线程环境F”到环境寄存器组Ⅱ。(或者,一个特别的环境寄存器组可被保留给低优先级线程环境。这会消除决定没有环境寄存器组含有任何低优先级线程环境的步骤。)环境寄存器组Ⅱ成为活动的而且处理器开始运行线程F。
·在时刻t3,中断EXT 1通过总线30接收。处理器读Ptr TC EXT1指针到指针寄存器122然后从由此指针识别的存储位置读“线程环境A”。高速缓存管理器124确定这个线程环境包括高优先级代码p=1,环境寄存器组Ⅲ和Ⅳ都是空闲的,并发送“线程环境A”到环境寄存器组Ⅲ。该环境寄存器组成为活动的而且处理器开始运行线程A。
·在时刻t4,运行线程A时,处理器从由当前在环境寄存器组Ⅲ中的程序计数寄存器PC识别的存储器20’中的相应位置读出指令“切换至P0 TC”。(在这个例子中,“线程环境G”的存储位置地址将被预先-储存在环境寄存器组Ⅲ的P0寄存器中。另外包含在线程G中的优先级代码p=0,使高速缓存管理器确定这个线程环境应被读进环境寄存器组Ⅱ。)在执行这个指令时,象只有一个单一环境寄存器组存在时的情形一样处理器:
·读“线程环境F”到由包含在环境寄存器组Ⅱ中的寄存器PTRTC中的当前线程环境地址识别的存储位置;读入当前包含在环境寄存器组Ⅲ的寄存器PTR TC的地址到寄存器PREV PTR TC中;
·从环境寄存器组的寄存器P0中读“线程环境G”地址到指针寄存器122;
·读“线程环境G”到环境寄存器组Ⅱ。寄存器组Ⅱ现在成为活动的而且处理器开始运行线程G。
·在时刻t5,中断EXT 3通过总线30接收。处理器读Ptr TC EXT3指针到指针寄存器122然后从由此指针识别的存储位置读“线程环境C”。高速缓存管理器124确定这个线程环境包括高优先级代码p=1,唯一的环境寄存器组Ⅳ是空闲的,并发送“线程环境C”到环境寄存器组Ⅳ。这个环境寄存器组成为活动的而且处理器开始运行线程C。
此后,每个线程环境A,B,C将保持在各个环境寄存器组Ⅲ,Ⅰ,Ⅳ中并且每个线程可通过使各个寄存器组成为活动的而运行。任何线程D,E,F,G,H的运行需要调入相应的线程环境到环境寄存器组Ⅱ。
那么在一个配置为操作指定的高优先级环境寄存器组至少与高优先级线程(既由图3代表的)数量一致的***中,只要这些寄存器组调入了各个环境就没有必要在它们和存储器20之间再传输环境。反之,如果只有一个环境寄存器组提供给低优先级线程,这些线程的环境必须在每次处理器改变成它们中间的不同的一个时被传输到单一的寄存器组。
图4说明的是操作两个优先级的另一种***配置中的线程处理示例。在第一等级中,如图3所示,给高优先级线程的每个线程的寄存器组比给低优先级线程的多。在第二优先级,每个有多个指定环境寄存器组的线程“优先级代码p”使用一个溢出优先级算法,但此处这些寄存器的数量小于有相应优先编码p的线程的数量。在此示例中:
·一个单一位被用于指示高优先级(p=1)或低优先级(p=0)线程;但此处
·线程A,B,C和D被指定为高优先级线程(p=1);
·一个由处理器作为对中断EXT 4的响应并包含“线程环境D”的存储位置的附加的指针Ptr TC EXT 4被储存在存储器20’中;
·线程E,F,G,H被指定为低优先级线程(p=0);
图4的示例中,从时刻t0到时刻t5,操作与图3所示的相同。那之后,因为第二等级中的高优先级环境寄存器组少于高优先级线程,一个第二级优先级算法开始作用。例如,如果高优先级线程之间的优先级不同,二级优先级算法可以基于这种相对优先级。或者,如果它们都是同等的优先级可使用不同算法。以下算法基于高优先级线程利用处理器的以往历史:
·在时刻t6,中断EXT 4通过总线30接收。处理器读Ptr TC EXT4指针到指针寄存器122然后从由此指针识别的存储位置中读“线程环境D”。高速缓存管理器确定这个线程环境包括高优先级p=1,但没有环境寄存器组是空闲的。高速缓存管理器有跟踪每个线程要求使用高速缓存存储器的历史的能力。在一个优先的实施方案中,它通过给每个线程提供一个单独的计数器来实现,最初复位所有的计数器到零,然后,每次请求生成时:
·只复位与所请求的线程相关的计数器到零;
·增加其他线程的计数器。
从这些计数器储存的历史中,高速缓存管理器确定最近请求的是线程B(是收到中断EXT 2并且“线程环境B”被读入到环境寄存器组Ⅰ时的时刻t1)。根据这个历史,处理器读“线程环境B”到存储器20’然后从存储器20’中读“线程环境D”到环境寄存器组Ⅰ。这个寄存器组此时成为活动的并且处理器开始运行线程D。
注意提供多个环境寄存器组使处理器不必存取存储器20就能顺序地处理多个线程。每个线程改变所需的时间由时钟周期测量,而不是即便使用最快的总线时仍需要的更多的时间来存取存储器。
Claims (31)
1.一种响应将各个线程环境读入环境寄存器组(14)而操作单一处理器(10)来选择性的运行多个不同线程中的一个线程的方法,所述方法包括:
a.将多个中断的每一个与相应的存储器(20)位置相关联;
b.在存储器位置内储存多个分别的线程环境指针,每个所述指针识别包含全面描述所述线程之一的运行状态的线程环境的存储器位置;
c.响应任何中断的出现,从与所述中断关联的相应的存储位置中读指针;
d.从由读入环境到环境寄存器组(14)中的线程环境指针标识的存储器位置读出线程环境;
e.运行读出的线程环境描述的线程。
2.按照权利要求1的方法,每个线程环境指针识别一个不同的存储位置。
3.按照权利要求1的方法,不止一个线程环境指针识别同一个存储位置。
4.按照权利要求1的方法,响应中断之一或由处理器执行的程序流中的多个线程改变指令之一,处理器改变正在运行的线程。
5.按照权利要求4的方法,线程改变指令包括一个用来保存当前运行线程的环境和改变当前被运行线程为一个不同的线程的切换指令。
6.按照权利要求5的方法,处理器储存早先运行的线程的环境的地址并且所述线程改变指令包括一个用来改变被运行线程为早先运行的线程的第一个切换指令。
7.按照权利要求5的方法,包括了一个改变被运行线程成一个其环境包含在由第二个切换指令识别的存储位置的环境的第二个切换指令。
8.按照权利要求7的方法,第二个切换指令隐式的识别所述环境的存储位置。
9.按照权利要求7的方法,第二个切换指令明确的识别所述环境的存储位置。
10.按照权利要求9的方法,第二个切换指令包含一个识别所述环境的存储位置的指针。
11.按照权利要求9的方法第二个切换指令识别包含一个识别所述环境的存储位置的指针的存储位置。
12.按照权利要求4的方法,线程改变指令包括一个不需要保存当前运行着的线程环境的用来运行不同的线程的恢复指令。
13.按照权利要求12的方法,处理器储存早先运行线程的环境的地址并且所述线程改变指令包括一个用来改变被运行线程为早先运行的线程的第一个恢复指令。
14.按照权利要求12的方法,包括了一个改变被运行环境成一个其环境包含在由第二个恢复指令识别的存储位置的环境的第二个恢复指令。
15.按照权利要求14的方法第二个恢复指令隐式的识别所述环境的存储位置。
16.按照权利要求14的方法,第二个恢复指令明确的识别所述环境的存储位置。
17.按照权利要求16的方法,第二个恢复指令包含一个识别所述环境的存储位置的指针。
18.按照权利要求16的方法,第二个恢复指令识别包含一个识别所述环境的存储位置的指针的存储位置。
19.按照权利要求4的方法,线程改变指令包括一个用来模拟中断的S/W中断指令。
20.按照权利要求4的方法,提供多个环境寄存器组,所述单一处理器运行包含在所述环境寄存器组预定的一个的线程。
21.按照权利要求1的方法,环境寄存器组包括:
a.一个用来给当前处理器运行的线程储存环境的储存器地址的寄存器;
b.用来识别不由线程环境指针识别的线程环境的位置的寄存器。
22.按照权利要求1的方法,环境寄存器组包括一个用来给早先由处理器运行的线程储存环境的储存器地址的寄存器。
23.按照权利要求1的方法,处理器包括多个环境寄存器组。
24.按照权利要求23的方法,环境寄存器组的数量小于处理器运行的线程的数量。
25.按照权利要求24的方法,一个基于优先级的算法被用来选择线程环境要读入哪个环境寄存器组。
26.按照权利要求24的方法,线程包括高优先级线程和低优先级线程并且高优先级线程比低优先级线程可使用大比例的环境寄存器组。
27.按照权利要求26的方法,至少一个线程的优先级在处理器的操作中是可改变的。
28.按照权利要求26的方法,在给更高级或更低优先级级线程读线程环境的时刻,当所有的环境寄存器组提供给已经包含线程的相应的优先级而不是被读的环境的优先级时,采用了一组选择算法。
29.按照权利要求28的方法,所述算法影响读所述线程环境到含有最近被储存的线程环境的可用环境寄存器组。
30.一个操作处理器网络的方法,每个所述的处理器(10)响应将各个线程环境读入环境寄存器组(14),选择性的运行多个不同的线程中的任一个,所述方法包括:
a.将多个中断的每一个与相应的一个存储器(20)位置相关联;
b.在存储位置内储存多个相应的线程环境指针,每个指针识别一个包含一个全面描述所述线程的操作状态的线程环境的存储器位置;
c.响应任何中断的出现,从与所述中断相关的相应的存储位置中读指针;
d.从由读环境寄存器组(14)的线程环境指针识别的存储器位置读入线程环境;
e.运行由读的线程环境描述的的线程。
31.按照权利要求30的方法,至少有一个线程是可被多于一个处理器运行的共用线程。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/218,551 | 1998-12-22 | ||
US09/218,551 US6275749B1 (en) | 1998-12-22 | 1998-12-22 | Interrupt-controlled thread processing |
US09/273,938 | 1999-03-22 | ||
US09/273,938 US6401155B1 (en) | 1998-12-22 | 1999-03-22 | Interrupt/software-controlled thread processing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1316074A true CN1316074A (zh) | 2001-10-03 |
Family
ID=26913028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN99805314A Pending CN1316074A (zh) | 1998-12-22 | 1999-12-16 | 中断/软件控制的线程处理 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6401155B1 (zh) |
EP (1) | EP1064600A2 (zh) |
JP (1) | JP2002533807A (zh) |
KR (1) | KR20010041142A (zh) |
CN (1) | CN1316074A (zh) |
WO (1) | WO2000038060A2 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493782A (zh) * | 2008-01-23 | 2009-07-29 | 松下电器产业株式会社 | 虚拟多处理器*** |
CN101203831B (zh) * | 2005-06-23 | 2011-09-14 | 英特尔公司 | 用于对存储器更新进行缓存的装置、方法和*** |
CN101587448B (zh) * | 2009-06-26 | 2012-03-21 | 华为技术有限公司 | 一种中断处理方法和装置 |
CN101295279B (zh) * | 2007-04-29 | 2012-05-09 | 国际商业机器公司 | 多线程环境下的调试程序的方法和*** |
Families Citing this family (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7546444B1 (en) | 1999-09-01 | 2009-06-09 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
US7681018B2 (en) | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
US20020161957A1 (en) * | 2001-02-09 | 2002-10-31 | Guillaume Comeau | Methods and systems for handling interrupts |
JP2003167737A (ja) * | 2001-11-30 | 2003-06-13 | Nec Corp | スタック使用方法 |
US20030126416A1 (en) * | 2001-12-31 | 2003-07-03 | Marr Deborah T. | Suspending execution of a thread in a multi-threaded processor |
US7127561B2 (en) * | 2001-12-31 | 2006-10-24 | Intel Corporation | Coherency techniques for suspending execution of a thread until a specified memory access occurs |
US7363474B2 (en) * | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
JP2004220070A (ja) * | 2003-01-09 | 2004-08-05 | Japan Science & Technology Agency | コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体 |
US7376954B2 (en) * | 2003-08-28 | 2008-05-20 | Mips Technologies, Inc. | Mechanisms for assuring quality of service for programs executing on a multithreaded processor |
US7870553B2 (en) * | 2003-08-28 | 2011-01-11 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7418585B2 (en) * | 2003-08-28 | 2008-08-26 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US9032404B2 (en) * | 2003-08-28 | 2015-05-12 | Mips Technologies, Inc. | Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor |
US7711931B2 (en) * | 2003-08-28 | 2010-05-04 | Mips Technologies, Inc. | Synchronized storage providing multiple synchronization semantics |
US7836450B2 (en) * | 2003-08-28 | 2010-11-16 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7594089B2 (en) * | 2003-08-28 | 2009-09-22 | Mips Technologies, Inc. | Smart memory based synchronization controller for a multi-threaded multiprocessor SoC |
EP1658563B1 (en) * | 2003-08-28 | 2013-06-05 | MIPS Technologies, Inc. | Apparatus, and method for initiation of concurrent instruction streams in a multithreading microprocessor |
US20050050305A1 (en) * | 2003-08-28 | 2005-03-03 | Kissell Kevin D. | Integrated mechanism for suspension and deallocation of computational threads of execution in a processor |
US7849297B2 (en) * | 2003-08-28 | 2010-12-07 | Mips Technologies, Inc. | Software emulation of directed exceptions in a multithreading processor |
US7631307B2 (en) * | 2003-12-05 | 2009-12-08 | Intel Corporation | User-programmable low-overhead multithreading |
US7228266B1 (en) * | 2003-12-05 | 2007-06-05 | Unisys Corporation | Instruction processor emulator having separate operand and op-code interfaces |
US7681196B2 (en) * | 2004-11-18 | 2010-03-16 | Oracle International Corporation | Providing optimal number of threads to applications performing multi-tasking using threads |
US7526579B2 (en) * | 2005-01-27 | 2009-04-28 | Innovasic, Inc. | Configurable input/output interface for an application specific product |
US7406550B2 (en) * | 2005-01-27 | 2008-07-29 | Innovasic, Inc | Deterministic microcontroller with configurable input/output interface |
US7376786B2 (en) * | 2005-02-28 | 2008-05-20 | Hitachi Global Storage Technologies Netherlands B.V. | Command stack management in a disk drive |
US7308565B2 (en) * | 2005-06-15 | 2007-12-11 | Seiko Epson Corporation | Saving/restoring task state data from/to device controller host interface upon command from host processor to handle task interruptions |
US7823158B2 (en) * | 2005-08-18 | 2010-10-26 | International Business Machines Corporation | Adaptive scheduling and management of work processing in a target context in resource contention |
US7631125B2 (en) * | 2005-09-30 | 2009-12-08 | Intel Corporation | Dynamically migrating channels |
US7512773B1 (en) * | 2005-10-18 | 2009-03-31 | Nvidia Corporation | Context switching using halt sequencing protocol |
US20070101325A1 (en) * | 2005-10-19 | 2007-05-03 | Juraj Bystricky | System and method for utilizing a remote memory to perform an interface save/restore procedure |
US7971205B2 (en) * | 2005-12-01 | 2011-06-28 | International Business Machines Corporation | Handling of user mode thread using no context switch attribute to designate near interrupt disabled priority status |
US7916146B1 (en) | 2005-12-02 | 2011-03-29 | Nvidia Corporation | Halt context switching method and system |
US8533710B1 (en) * | 2006-08-31 | 2013-09-10 | Oracle America, Inc. | Using observed thread activity to dynamically tune a virtual machine for responsiveness |
US7768515B1 (en) * | 2006-11-03 | 2010-08-03 | Nvidia Corporation | Apparatus, system, and method for reducing shadowed state memory requirements for identifying driver command exceptions in a graphics system |
US7898546B1 (en) * | 2006-11-03 | 2011-03-01 | Nvidia Corporation | Logical design of graphics system with reduced shadowed state memory requirements |
JP2010517161A (ja) * | 2007-01-23 | 2010-05-20 | アギア システムズ インコーポレーテッド | デバイス用シングル・スレッド・アーキテクチャにおけるアプリケーションの切り替え |
US20080307208A1 (en) * | 2007-06-07 | 2008-12-11 | Fujitsu Limited | Application specific processor having multiple contexts |
JP5173714B2 (ja) * | 2008-09-30 | 2013-04-03 | ルネサスエレクトロニクス株式会社 | マルチスレッドプロセッサ及びその割り込み処理方法 |
JP5803721B2 (ja) * | 2012-02-13 | 2015-11-04 | 株式会社デンソー | データ処理装置 |
US9170968B2 (en) * | 2012-09-27 | 2015-10-27 | Intel Corporation | Device, system and method of multi-channel processing |
US20140095847A1 (en) * | 2012-09-28 | 2014-04-03 | Doron Orenstein | Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading |
US9354883B2 (en) | 2014-03-27 | 2016-05-31 | International Business Machines Corporation | Dynamic enablement of multithreading |
US9804846B2 (en) | 2014-03-27 | 2017-10-31 | International Business Machines Corporation | Thread context preservation in a multithreading computer system |
US9417876B2 (en) | 2014-03-27 | 2016-08-16 | International Business Machines Corporation | Thread context restoration in a multithreading computer system |
US9594660B2 (en) | 2014-03-27 | 2017-03-14 | International Business Machines Corporation | Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores |
US10102004B2 (en) | 2014-03-27 | 2018-10-16 | International Business Machines Corporation | Hardware counters to track utilization in a multithreading computer system |
US9921848B2 (en) | 2014-03-27 | 2018-03-20 | International Business Machines Corporation | Address expansion and contraction in a multithreading computer system |
US9996354B2 (en) * | 2015-01-09 | 2018-06-12 | International Business Machines Corporation | Instruction stream tracing of multi-threaded processors |
US11416421B2 (en) * | 2016-07-19 | 2022-08-16 | Cypress Semiconductor Corporation | Context-based protection system |
US10496573B2 (en) * | 2017-03-31 | 2019-12-03 | Intel Corporation | Context-sensitive interrupts |
GB201717303D0 (en) * | 2017-10-20 | 2017-12-06 | Graphcore Ltd | Scheduling tasks in a multi-threaded processor |
KR102340871B1 (ko) * | 2019-11-25 | 2021-12-20 | 주식회사 알티스트 | 인터럽트 처리 장치 및 방법 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4074353A (en) | 1976-05-24 | 1978-02-14 | Honeywell Information Systems Inc. | Trap mechanism for a data processing system |
JPS5616248A (en) | 1979-07-17 | 1981-02-17 | Matsushita Electric Ind Co Ltd | Processing system for interruption |
EP0134386A2 (en) | 1983-08-05 | 1985-03-20 | Ten X Technology, Inc. | Method and apparatus for executing object code instructions compiled from a high-level language source |
US5142677A (en) | 1989-05-04 | 1992-08-25 | Texas Instruments Incorporated | Context switching devices, systems and methods |
US5353418A (en) | 1989-05-26 | 1994-10-04 | Massachusetts Institute Of Technology | System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread |
WO1992003783A1 (en) | 1990-08-23 | 1992-03-05 | Supercomputer Systems Limited Partnership | Method of implementing kernel functions |
US5349680A (en) | 1990-11-07 | 1994-09-20 | Kabushiki Kaisha Toshiba | Information processing apparatus for executing application programs under control of a system program |
US5696957A (en) | 1991-05-17 | 1997-12-09 | Ricoh Company, Ltd | Integrated circuit comprising a central processing unit for executing a plurality of programs |
US5553305A (en) | 1992-04-14 | 1996-09-03 | International Business Machines Corporation | System for synchronizing execution by a processing element of threads within a process using a state indicator |
US5428779A (en) | 1992-11-09 | 1995-06-27 | Seiko Epson Corporation | System and method for supporting context switching within a multiprocessor system having functional blocks that generate state programs with coded register load instructions |
JP3547482B2 (ja) | 1994-04-15 | 2004-07-28 | 株式会社日立製作所 | 情報処理装置 |
JP3169779B2 (ja) | 1994-12-19 | 2001-05-28 | 日本電気株式会社 | マルチスレッドプロセッサ |
US5659749A (en) | 1995-05-08 | 1997-08-19 | National Instruments Corporation | System and method for performing efficient hardware context switching in an instrumentation system |
US5799188A (en) * | 1995-12-15 | 1998-08-25 | International Business Machines Corporation | System and method for managing variable weight thread contexts in a multithreaded computer system |
US5944816A (en) * | 1996-05-17 | 1999-08-31 | Advanced Micro Devices, Inc. | Microprocessor configured to execute multiple threads including interrupt service routines |
US6061710A (en) * | 1997-10-29 | 2000-05-09 | International Business Machines Corporation | Multithreaded processor incorporating a thread latch register for interrupt service new pending threads |
-
1999
- 1999-03-22 US US09/273,938 patent/US6401155B1/en not_active Expired - Fee Related
- 1999-12-16 JP JP2000590052A patent/JP2002533807A/ja not_active Withdrawn
- 1999-12-16 KR KR1020007009191A patent/KR20010041142A/ko not_active Application Discontinuation
- 1999-12-16 EP EP99964624A patent/EP1064600A2/en not_active Withdrawn
- 1999-12-16 WO PCT/EP1999/010170 patent/WO2000038060A2/en not_active Application Discontinuation
- 1999-12-16 CN CN99805314A patent/CN1316074A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101203831B (zh) * | 2005-06-23 | 2011-09-14 | 英特尔公司 | 用于对存储器更新进行缓存的装置、方法和*** |
CN101295279B (zh) * | 2007-04-29 | 2012-05-09 | 国际商业机器公司 | 多线程环境下的调试程序的方法和*** |
CN101493782A (zh) * | 2008-01-23 | 2009-07-29 | 松下电器产业株式会社 | 虚拟多处理器*** |
CN101587448B (zh) * | 2009-06-26 | 2012-03-21 | 华为技术有限公司 | 一种中断处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
EP1064600A2 (en) | 2001-01-03 |
US6401155B1 (en) | 2002-06-04 |
KR20010041142A (ko) | 2001-05-15 |
WO2000038060A2 (en) | 2000-06-29 |
JP2002533807A (ja) | 2002-10-08 |
WO2000038060A3 (en) | 2000-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1316074A (zh) | 中断/软件控制的线程处理 | |
CN1038160C (zh) | 多处理器数据存储器共享 | |
US7398521B2 (en) | Methods and apparatuses for thread management of multi-threading | |
US8893145B2 (en) | Method to reduce queue synchronization of multiple work items in a system with high memory latency between processing nodes | |
CN1991768B (zh) | 与不同种类的资源通信的基于指令***结构的内定序器 | |
EP1696318B1 (en) | Methods and apparatus for segmented stack management in a processor system | |
US6948034B2 (en) | Method for use of stack | |
CN1942858A (zh) | 用于高效多任务化的方法和装置 | |
US9430411B2 (en) | Method and system for communicating with non-volatile memory | |
US6275749B1 (en) | Interrupt-controlled thread processing | |
CN1008484B (zh) | 处理机输入/输出和中断过滤器 | |
CN103999051A (zh) | 用于着色器核心中着色器资源分配的策略 | |
HU219533B (hu) | Multimédia számítógéprendszer, valamint eljárás multimédia számítógéprendszer működésének vezérlésére | |
CN100346307C (zh) | Java操作***中实时任务调度的实现方法 | |
US9390033B2 (en) | Method and system for communicating with non-volatile memory via multiple data paths | |
US20040148606A1 (en) | Multi-thread computer | |
CN107870866B (zh) | Io命令调度方法与nvm接口控制器 | |
US20060015876A1 (en) | Light weight context switching technique | |
CN101980147B (zh) | 多线程处理器及其指令执行与同步方法 | |
CN114610472B (zh) | 异构计算中多进程管理方法及计算设备 | |
CN1262934C (zh) | 具有不同资源访问方案的***集成代理程序 | |
CN111158875A (zh) | 基于多模块的多任务处理方法、装置及*** | |
US20150134882A1 (en) | Method and system for using templates to communicate with non-volatile memory | |
Manner | Hardware task/processor scheduling in a polyprocessor environment | |
CN107870779B (zh) | 调度方法与装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |