WO2020213397A1 - Processor and register inheritance method - Google Patents

Processor and register inheritance method Download PDF

Info

Publication number
WO2020213397A1
WO2020213397A1 PCT/JP2020/014996 JP2020014996W WO2020213397A1 WO 2020213397 A1 WO2020213397 A1 WO 2020213397A1 JP 2020014996 W JP2020014996 W JP 2020014996W WO 2020213397 A1 WO2020213397 A1 WO 2020213397A1
Authority
WO
WIPO (PCT)
Prior art keywords
register
thread
area
inherited
controller
Prior art date
Application number
PCT/JP2020/014996
Other languages
French (fr)
Japanese (ja)
Inventor
一嘉 石渡
学 根本
Original Assignee
株式会社エヌエスアイテクス
株式会社デンソー
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 株式会社エヌエスアイテクス, 株式会社デンソー filed Critical 株式会社エヌエスアイテクス
Priority to JP2021514866A priority Critical patent/JP7217341B2/en
Publication of WO2020213397A1 publication Critical patent/WO2020213397A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements

Definitions

  • This disclosure relates to a processor and register inheritance method.
  • processing with a heavy load on the CPU may be divided into multiple threads and processed in parallel in order to improve response time and throughput.
  • the operation result is stored in the memory from the register each time the process of the previous thread is completed. After that, the operation result is reloaded from the memory to the register, and the processing of the subsequent thread is started (hereinafter, referred to as "load / store processing").
  • Patent Document 1 proposes a register content inheritance device in a processor in order to improve the above-mentioned load / store processing problem related to scalar operations.
  • the scalar operation is targeted, but unlike the scalar operation, the register area used for the operation is not constant but variable according to the vector length, and the register number is simply used as the register number. The area cannot be specified. Therefore, the technique of scalar calculation cannot be used for vector calculation.
  • An object of the present disclosure is to provide a processor and register inheritance method in which load / store processing is reduced as much as possible and processing performance is improved even in vector operations.
  • the processor includes a plurality of arithmetic units, a thread scheduler that distributes threads to a plurality of arithmetic units, a register file shared by the plurality of arithmetic units, and a register file.
  • the register controller includes a register controller that allocates a register area used by a thread, and a management table that stores information that identifies the thread and the register in association with the address of the register area to which the register is allocated.
  • the register controller manages the inherited register inherited from the previous thread to the subsequent thread by using the information that identifies the thread and the register.
  • the register size changes according to the vector length, so the register area cannot be simply specified by the register number.
  • the configuration of the present disclosure even when the register capacity changes according to the vector length. Later threads can inherit the register. As a result, load / store processing can be reduced as much as possible and processing performance can be improved even in multithreaded vector operations.
  • FIG. 1 is a block diagram showing a configuration of a processor according to the first embodiment.
  • FIG. 2A is a conceptual diagram of a register file before allocating a register to the thread according to the first embodiment.
  • FIG. 2B is a conceptual diagram of a register file after allocating registers to the first thread, the second thread, and the third thread according to the first embodiment.
  • FIG. 2C is a conceptual diagram of the size of the register after allocating the register to the first thread according to the first embodiment.
  • FIG. 2D is a conceptual diagram of the size of the register after allocating the register to the second thread according to the first embodiment.
  • FIG. 3A is a diagram showing an example of a management table used in the processor according to the first embodiment.
  • FIG. 3A is a diagram showing an example of a management table used in the processor according to the first embodiment.
  • FIG. 3B is a diagram showing an example of a management table when the value of the register number v0 is inherited from the previous thread to the subsequent thread according to the first embodiment.
  • FIG. 4 is a flow diagram in which the processor according to the first embodiment processes a register at the end of thread processing.
  • FIG. 5 is a flow diagram in which the processor according to the first embodiment performs register allocation processing at the start of thread processing.
  • FIG. 6 is a diagram for explaining saving and reloading of the register according to the second embodiment.
  • FIG. 7 is a flow diagram in which the processor according to the second embodiment performs register allocation processing at the start of thread processing.
  • FIG. 1 is a block diagram showing a configuration of a processor according to the first embodiment.
  • the processor 100 has a cache 102, a register file 104, an arithmetic unit 106, a register controller 108, a thread scheduler 110, and a local RAM 112.
  • the processor 100 dynamically allocates register resources to a large number of threads while inheriting registers between threads. As a result, the processor 100 can allocate a plurality of threads to the PE 114 and execute them in parallel even for different instruction streams, and further improve the processing performance.
  • the thread scheduler 110 specifies a later thread to the register controller 108, and the register controller 108 determines whether or not there is a register inherited by the subsequent thread (step S102).
  • the register controller 108 updates the key and address of the management table 116 to the key of the later thread and the address of the register that processes the later thread (step S310).

Abstract

A processor (100) is equipped with: a plurality of PEs (114); a thread scheduler (110) for allocating threads to the plurality of PEs (114); a register file (104) shared by the plurality of PEs (114); a register controller (108) for assigning a register region used by a thread in the register file (104); and a management table (116) in which information identifying a thread and a register, and the address of the register region assigned to the relevant register, are stored in association with each other. When the register used by a previous thread is inherited by a subsequent thread, the register controller (108) does not release the register region to be inherited even after the process of the previous thread has finished, and uses the information identifying the subsequent thread and register to rewrite the information in the management table (116) associated with the address of the relevant register region to be inherited.

Description

プロセッサおよびレジスタの継承方法How to inherit processors and registers
 本開示は、プロセッサおよびレジスタの継承方法に関する。 This disclosure relates to a processor and register inheritance method.
関連出願への相互参照Cross-reference to related applications
 本出願は、2019年4月18日に日本国に出願した特願2019-079383号に基づくものであって、その優先権の利益を主張するものであり、その特許出願のすべての内容が、参照により本明細書に組み入れられる。 This application is based on Japanese Patent Application No. 2019-079383 filed in Japan on April 18, 2019, claiming the benefit of its priority, and all the contents of the patent application. Incorporated herein by reference.
 従来、CPU(Central Processing Unit)の負荷が大きな処理は、応答時間およびスループットを向上させるために、複数のスレッドに分割されて並列処理されることがある。複数のスレッドに分割される負荷の大きな処理では、前のスレッドの処理が終わるたびに、演算結果をレジスタからメモリにストアする。その後、演算結果をメモリからレジスタにリロードし、後のスレッドの処理を開始する(以下、「ロード/ストア処理」という。)。 Conventionally, processing with a heavy load on the CPU (Central Processing Unit) may be divided into multiple threads and processed in parallel in order to improve response time and throughput. In a heavy-duty process divided into a plurality of threads, the operation result is stored in the memory from the register each time the process of the previous thread is completed. After that, the operation result is reloaded from the memory to the register, and the processing of the subsequent thread is started (hereinafter, referred to as "load / store processing").
 このロード/ストア処理では、PE(Processing Element)が1つずつしかメモリにアクセスできない。特に、メモリが1つのとき、ロード/ストア処理に由来するメモリへのアクセスの競合が高い頻度で発生する。そのため、スレッドの数が多い負荷の大きな処理では、ロード/ストア処理の時間が長くなる。すなわち、ロード/ストア処理はコストが高く、スレッドの数が多いほど処理速度への影響が大きくなる。 In this load / store process, only one PE (Processing Element) can access the memory. In particular, when there is only one memory, contention for access to the memory due to load / store processing occurs frequently. Therefore, in a process with a large number of threads and a heavy load, the load / store process takes a long time. That is, the load / store processing is expensive, and the larger the number of threads, the greater the influence on the processing speed.
 このロード/ストア処理に由来するメモリへのアクセスの競合を解消するために、メモリの数を増やすことが考えられる。しかし、プロセッサの面積の増大やコストの増加を引き起こし複雑性が高くなるため、根本的な解決にはならない。例えば、特許文献1では、スカラ演算に関する上述したロード/ストア処理の問題を改善するために、プロセッサにおけるレジスタ内容の継承装置が提案されている。 It is conceivable to increase the number of memories in order to eliminate the memory access conflict caused by this load / store process. However, it is not a fundamental solution because it increases the complexity due to the increase in processor area and cost. For example, Patent Document 1 proposes a register content inheritance device in a processor in order to improve the above-mentioned load / store processing problem related to scalar operations.
特開2000-020326号公報Japanese Patent Application Laid-Open No. 2000-020326
 上記した特許文献1ではスカラ演算を対象としているが、ベクトル演算では、スカラ演算とは異なり、演算に利用するレジスタの領域が一定ではなくベクトル長に応じて可変となり、単純にレジスタ番号でレジスタの領域を指定できない。そのため、スカラ演算の技術をベクトル演算には利用できない。 In the above-mentioned Patent Document 1, the scalar operation is targeted, but unlike the scalar operation, the register area used for the operation is not constant but variable according to the vector length, and the register number is simply used as the register number. The area cannot be specified. Therefore, the technique of scalar calculation cannot be used for vector calculation.
 本開示は、ベクトル演算においてもロード/ストア処理を可能な限り削減し、処理性能を改善したプロセッサおよびレジスタの継承方法を提供することを目的とする。 An object of the present disclosure is to provide a processor and register inheritance method in which load / store processing is reduced as much as possible and processing performance is improved even in vector operations.
 本開示は上記課題を解決するために以下の技術的手段を採用する。特許請求の範囲に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示す一例であって、本開示の技術的範囲を限定するものではない。 This disclosure employs the following technical means to solve the above problems. The reference numerals in parentheses described in the claims are an example showing the correspondence with the specific means described in the embodiments described later as one embodiment, and do not limit the technical scope of the present disclosure. ..
 上記目的を達成するために、本開示にかかるプロセッサは、複数の演算器と、複数の演算器に対してスレッドを振り分けるスレッドスケジューラと、複数の演算器で共有されるレジスタファイルと、レジスタファイルに、スレッドで用いるレジスタの領域を割り当てるレジスタコントローラと、スレッドおよびレジスタを識別する情報と当該レジスタが割り当てられたレジスタの領域のアドレスとを関連付けて記憶した管理テーブルとを備え、レジスタコントローラは、前のスレッドで用いたレジスタを後のスレッドで継承させるときには、前のスレッドの処理が終了した後も、継承すべきレジスタの領域を解放せず、当該継承すべきレジスタの領域のアドレスに関連付けられた管理テーブルの情報を後のスレッドおよびレジスタを識別する情報に書き換える。 In order to achieve the above object, the processor according to the present disclosure includes a plurality of arithmetic units, a thread scheduler that distributes threads to a plurality of arithmetic units, a register file shared by the plurality of arithmetic units, and a register file. The register controller includes a register controller that allocates a register area used by a thread, and a management table that stores information that identifies the thread and the register in association with the address of the register area to which the register is allocated. When a register used by a thread is inherited by a later thread, the area of the register to be inherited is not released even after the processing of the previous thread is completed, and the management associated with the address of the area of the register to be inherited is managed. Rewrite the table information with information that identifies later threads and registers.
 この構成により、レジスタコントローラは、前のスレッドから後のスレッドに継承される継承レジスタをスレッドおよびレジスタを識別する情報を用いて管理する。ベクトル演算では、ベクトル長に応じてレジスタのサイズ(容量)が変わるため、単純にレジスタ番号でレジスタの領域を指定できないが、本開示の構成により、ベクトル長に応じてレジスタの容量が変わるときでも後のスレッドは当該レジスタを継承できる。これにより、マルチスレッドのベクトル演算においてもロード/ストア処理を可能な限り削減し、処理性能を改善できる。 With this configuration, the register controller manages the inherited register inherited from the previous thread to the subsequent thread by using the information that identifies the thread and the register. In vector operations, the register size (capacity) changes according to the vector length, so the register area cannot be simply specified by the register number. However, according to the configuration of the present disclosure, even when the register capacity changes according to the vector length. Later threads can inherit the register. As a result, load / store processing can be reduced as much as possible and processing performance can be improved even in multithreaded vector operations.
図1は、第1の実施形態に係るプロセッサの構成を示すブロック図である。FIG. 1 is a block diagram showing a configuration of a processor according to the first embodiment. 図2Aは、第1の実施形態に係るスレッドにレジスタを割り当てる前のレジスタファイルの概念図である。FIG. 2A is a conceptual diagram of a register file before allocating a register to the thread according to the first embodiment. 図2Bは、第1の実施形態に係る第1のスレッド、第2のスレッド、第3のスレッドにレジスタを割り当てた後のレジスタファイルの概念図である。FIG. 2B is a conceptual diagram of a register file after allocating registers to the first thread, the second thread, and the third thread according to the first embodiment. 図2Cは、第1の実施形態に係る第1のスレッドにレジスタを割り当てた後のレジスタのサイズの概念図である。FIG. 2C is a conceptual diagram of the size of the register after allocating the register to the first thread according to the first embodiment. 図2Dは、第1の実施形態に係る第2のスレッドにレジスタを割り当てた後のレジスタのサイズの概念図である。FIG. 2D is a conceptual diagram of the size of the register after allocating the register to the second thread according to the first embodiment. 図3Aは、第1の実施形態に係るプロセッサで用いられる管理テーブルの例を示す図である。FIG. 3A is a diagram showing an example of a management table used in the processor according to the first embodiment. 図3Bは、第1の実施形態に係る前のスレッドから後のスレッドにレジスタ番号v0の値を継承したときの管理テーブルの例を示す図である。FIG. 3B is a diagram showing an example of a management table when the value of the register number v0 is inherited from the previous thread to the subsequent thread according to the first embodiment. 図4は、第1の実施形態に係るプロセッサがスレッドの処理終了時にレジスタの処理を行うフロー図である。FIG. 4 is a flow diagram in which the processor according to the first embodiment processes a register at the end of thread processing. 図5は、第1の実施形態に係るプロセッサがスレッドの処理開始時にレジスタの割り当て処理を行うフロー図である。FIG. 5 is a flow diagram in which the processor according to the first embodiment performs register allocation processing at the start of thread processing. 図6は、第2の実施形態に係るレジスタの退避およびリロードを説明するための図である。FIG. 6 is a diagram for explaining saving and reloading of the register according to the second embodiment. 図7は、第2の実施形態に係るプロセッサがスレッドの処理開始時にレジスタの割り当て処理を行うフロー図である。FIG. 7 is a flow diagram in which the processor according to the second embodiment performs register allocation processing at the start of thread processing.
 以下、図面を参照して本実施形態を説明する。なお、以下に説明する本実施形態は、本実施する場合の一例を示すものであって、本発明を以下に説明する具体的構成に限定するものではない。本発明の実施にあたっては、実施形態に応じた具体的構成が適宜採用されてよい。 Hereinafter, the present embodiment will be described with reference to the drawings. It should be noted that the present embodiment described below is an example of the case of the present embodiment, and the present invention is not limited to the specific configuration described below. In carrying out the present invention, a specific configuration according to the embodiment may be appropriately adopted.
(第1の実施形態)
[プロセッサの構成]
 図1は、第1の実施形態に係るプロセッサの構成を示すブロック図である。プロセッサ100は、キャッシュ102、レジスタファイル104、演算ユニット106、レジスタコントローラ108、スレッドスケジューラ110、ローカルRAM112を有する。
(First Embodiment)
[Processor configuration]
FIG. 1 is a block diagram showing a configuration of a processor according to the first embodiment. The processor 100 has a cache 102, a register file 104, an arithmetic unit 106, a register controller 108, a thread scheduler 110, and a local RAM 112.
 第1の実施形態のプロセッサ100は、グラフ構造のプログラムを解析、分割して得られた多量のスレッドを処理する。グラフ構造を分割して複数のスレッドを生成しているので、あるスレッドで得られた演算結果出力を後続のスレッドで入力として用いるということが起こるため、スレッド間で演算結果の引継ぎが必要となる。さらに、この引継ぎのときに、処理性能を高めるためにロード/ストア処理を削減することも必要となる。 The processor 100 of the first embodiment analyzes and divides a graph-structured program and processes a large number of threads obtained. Since the graph structure is divided to generate multiple threads, the operation result output obtained in one thread may be used as input in the subsequent threads, so it is necessary to inherit the operation results between threads. .. Furthermore, at the time of this takeover, it is also necessary to reduce the load / store processing in order to improve the processing performance.
 そこで、プロセッサ100は、多量のスレッドに対してレジスタ資源を動的に配置しつつ、スレッド間でレジスタを継承させる。これにより、プロセッサ100は、異なる命令ストリームに対してであっても複数のスレッドをPE114に割り当て並列実行し、さらに処理性能を高めることもできる。 Therefore, the processor 100 dynamically allocates register resources to a large number of threads while inheriting registers between threads. As a result, the processor 100 can allocate a plurality of threads to the PE 114 and execute them in parallel even for different instruction streams, and further improve the processing performance.
 キャッシュ102は、ホストCPUと演算ユニット106との間に置かれるキャッシュである。キャッシュ102は、システムバスインターフェイスまたはROMインターフェイスと通信してもよい。 The cache 102 is a cache placed between the host CPU and the arithmetic unit 106. The cache 102 may communicate with the system bus interface or the ROM interface.
 レジスタファイル104は、演算データを格納するレジスタファイルである(以下、スレッドに割り当てられる各レジスタを「レジスタ」、スレッドに割り当てられる複数のレジスタを「レジスタの領域」という。)。 The register file 104 is a register file that stores arithmetic data (hereinafter, each register assigned to a thread is referred to as a "register", and a plurality of registers assigned to a thread are referred to as a "register area").
 このレジスタファイル104を、図2を用いて具体的に説明する。図2では特にベクトル演算におけるレジスタにフォーカスし説明する。図2Aは、第1の実施形態に係るスレッドにレジスタを割り当てる前のレジスタファイル104の概念図であり、図2Bは、第1の実施形態に係る第1のスレッドt1、第2のスレッドt2、第3のスレッドt3にレジスタを割り当てた後のレジスタファイル104の概念図であり、図2Cは、第1の実施形態に係る第1のスレッドt1にレジスタを割り当てた後のレジスタのサイズの概念図であり、図2Dは、第1の実施形態に係る第2のスレッドt2にレジスタを割り当てた後のレジスタのサイズの概念図である。 This register file 104 will be specifically described with reference to FIG. FIG. 2 will focus on the registers in the vector operation. FIG. 2A is a conceptual diagram of the register file 104 before allocating a register to the thread according to the first embodiment, and FIG. 2B shows a first thread t1 and a second thread t2 according to the first embodiment. FIG. 2C is a conceptual diagram of the register file 104 after allocating a register to the third thread t3, and FIG. 2C is a conceptual diagram of a register size after allocating a register to the first thread t1 according to the first embodiment. 2D is a conceptual diagram of the size of the register after allocating the register to the second thread t2 according to the first embodiment.
 図2Aに示すように、スレッドにレジスタの領域を割り当てる前のレジスタファイル104は、第1のスレッドt1、第2のスレッドt2、第3のスレッドt3のいずれにも、レジスタの領域が割り当てられていない。 As shown in FIG. 2A, in the register file 104 before allocating the register area to the thread, the register area is allocated to all of the first thread t1, the second thread t2, and the third thread t3. Absent.
 一方、図2Bに示すように、スレッドにレジスタの領域を割り当てた後のレジスタファイル104は、第1のスレッドt1、第2のスレッドt2、第3のスレッドt3それぞれに、連続したレジスタの領域が割り当てられている。 On the other hand, as shown in FIG. 2B, in the register file 104 after allocating the register area to the thread, a continuous register area is provided in each of the first thread t1, the second thread t2, and the third thread t3. Assigned.
 1つの要素に対して順次演算をするスカラ演算とは異なり、ベクトル演算は複数個のデータを1つのレジスタとして1つの演算を全データに同時に実行する。データの要素数は、ベクトル長という。ベクトル演算に利用するレジスタのサイズは、このベクトル長に依存する。そのため、レジスタのサイズは、スレッドに割り当てるレジスタの最大サイズにより決まる。 Unlike the scalar operation, which performs sequential operations on one element, the vector operation uses multiple data as one register and executes one operation on all data at the same time. The number of data elements is called the vector length. The size of the register used for vector operation depends on this vector length. Therefore, the size of the register is determined by the maximum size of the register allocated to the thread.
 例えば、第1のスレッドt1は、第2のスレッドt2よりも、ベクトル長が大きい。そのため、図2Cに示すように、第1のスレッドt1に割り当てるレジスタv0~v31のサイズは、図2Dに示すように、第2のスレッドt2に割り当てるレジスタv0~v31のサイズよりも大きい。 For example, the first thread t1 has a larger vector length than the second thread t2. Therefore, as shown in FIG. 2C, the size of the registers v0 to v31 assigned to the first thread t1 is larger than the size of the registers v0 to v31 assigned to the second thread t2, as shown in FIG. 2D.
 図1に戻って説明を続ける。演算ユニット106は、スレッドの処理を実行する実行部である。演算ユニット106は、複数のPE114を有する。PE114は、演算器である。複数のPE114のうちの少なくとも1つは、ベクトル演算するベクトル演算器である。 Return to Fig. 1 and continue the explanation. The arithmetic unit 106 is an execution unit that executes thread processing. The arithmetic unit 106 has a plurality of PE 114s. PE114 is an arithmetic unit. At least one of the plurality of PE 114s is a vector arithmetic unit that performs vector arithmetic.
 レジスタコントローラ108は、スレッドにレジスタの領域を割り当てるレジスタのコントローラである。管理テーブル116は、スレッドの処理に用いられるレジスタを管理するテーブルである。上述したPE114は、管理テーブル116を参照して、レジスタを確保し、また、レジスタにアクセスする。 The register controller 108 is a register controller that allocates a register area to threads. The management table 116 is a table that manages registers used for thread processing. The PE 114 described above allocates a register and accesses the register with reference to the management table 116.
 管理テーブル116は、スレッドおよびレジスタを識別する情報と当該レジスタが割り当てられたレジスタの領域のアドレスとを関連付けて記憶している。具体的には、管理テーブル116は、キーとレジスタのアドレスとを紐づけている。キーは、スレッドID(識別子)とレジスタ番号とを有する。すなわち、管理テーブル116は、スレッドIDで識別されるスレッドの処理に用いられるレジスタの値が、レジスタファイルのどこに記憶されているかを管理するテーブルである。 The management table 116 stores information for identifying threads and registers in association with the address of the register area to which the register is assigned. Specifically, the management table 116 associates the key with the address of the register. The key has a thread ID (identifier) and a register number. That is, the management table 116 is a table that manages where in the register file the register value used for processing the thread identified by the thread ID is stored.
 図3Aは、第1の実施形態に係るプロセッサ100で用いられる管理テーブル116の例を示す図である。図3Aに示すように、スレッド0のレジスタ番号v0のレジスタは、アドレス0xaaaa1234で始まる領域が割り当てられ(行202)、レジスタ番号v1のレジスタは、アドレス0xbbbb1234で始まる領域が割り当てられ(行204)、レジスタ番号v2のレジスタは、アドレス0xcccc1234で始まる領域が割り当てられている(行206)。 FIG. 3A is a diagram showing an example of a management table 116 used in the processor 100 according to the first embodiment. As shown in FIG. 3A, the register at register number v0 of thread 0 is allocated an area starting at address 0xaaaa1234 (line 202), and the register at register number v1 is allocated an area starting at address 0xbbbb1234 (line 204). The register of register number v2 is allocated an area starting with the address 0xcccc1234 (line 206).
 レジスタコントローラ108は、例えば、スレッドの処理が終了した後に、レジスタを解放する。具体的には、レジスタコントローラ108は、スレッドの処理を終了するときに、そのスレッドで確保していた領域に対し、使用可能であることを示すフラグを立てることで領域を解放する。 The register controller 108 releases the register, for example, after the thread processing is completed. Specifically, when the processing of the thread is terminated, the register controller 108 releases the area reserved by the thread by setting a flag indicating that the area can be used.
 また、第1の実施形態では、レジスタコントローラ108は、スレッドの処理が終了した後も、レジスタの領域を解放せず、当該スレッドで用いたレジスタを後のスレッドに継承できる。具体的には、レジスタコントローラ108は、承継すべきレジスタを解放しないように、使用不可のフラグを立てる。それと共に、レジスタコントローラ108は、継承すべきレジスタの領域のアドレスに関連付けられた管理テーブル116の情報を後のスレッドIDおよびレジスタ番号に書き換える。これにより、レジスタ番号とレジスタのアドレスとが紐づけられ、レジスタのサイズが可変でも、レジスタの継承を行える。 Further, in the first embodiment, the register controller 108 does not release the register area even after the processing of the thread is completed, and can inherit the register used in the thread to a later thread. Specifically, the register controller 108 sets an unusable flag so as not to release the register to be inherited. At the same time, the register controller 108 rewrites the information in the management table 116 associated with the address of the register area to be inherited into the later thread ID and register number. As a result, the register number and the register address are linked, and the register can be inherited even if the register size is variable.
 この管理テーブル116の書き換えを、図3Bを用いて具体的に説明する。図3Bは、第1の実施形態に係る前のスレッドから後のスレッドにレジスタ番号v0の値を継承したときの管理テーブル116の例を示す図である。 The rewriting of the management table 116 will be specifically described with reference to FIG. 3B. FIG. 3B is a diagram showing an example of the management table 116 when the value of the register number v0 is inherited from the previous thread to the subsequent thread according to the first embodiment.
 図3Bに示すように、前のスレッド0のレジスタ番号v0を後のスレッド1に継承するので、前のスレッド0のレジスタ番号v0に使用不可のフラグを立て、レジスタの領域を解放しないで保持する。管理テーブル116のキーは、「スレッド0_v0」から「スレッド1_v0」(行302)に変更される。これにより、スレッド1を処理するPE114は、スレッド1のレジスタ番号v0として、アドレス0xaaaa1234を参照する。そうすると、この領域は使用不可として保持されているので、この領域から前のスレッド0で使っていたレジスタ番号v0のレジスタの値を読み出せる。 As shown in FIG. 3B, since the register number v0 of the previous thread 0 is inherited by the subsequent thread 1, the register number v0 of the previous thread 0 is flagged as unusable and the register area is held without being released. .. The key of the management table 116 is changed from "thread 0_v0" to "thread 1_v0" (row 302). As a result, the PE 114 that processes the thread 1 refers to the address 0xaaaa1234 as the register number v0 of the thread 1. Then, since this area is held as unusable, the value of the register of register number v0 used in the previous thread 0 can be read from this area.
 このように、ベクトル演算でも、アドレス0xaaaa1234のレジスタv0に格納された前のスレッドの演算結果は、メモリに退避されることなく、後のスレッドに継承される。なお、後のスレッド1の処理が開始された後は、レジスタv0の値を書き換えてよいことは言うまでもない。 In this way, even in the vector operation, the operation result of the previous thread stored in the register v0 at the address 0xaaaa1234 is inherited by the subsequent thread without being saved in the memory. Needless to say, the value of the register v0 may be rewritten after the processing of the subsequent thread 1 is started.
 一方、図3Aのレジスタ番号v1、v2については、後のスレッド1に継承しないので、割り当てられていた領域を解放する。具体的には、それらの領域を使用可能であることを示すフラグを立てる。 On the other hand, the register numbers v1 and v2 in FIG. 3A are not inherited by the subsequent thread 1, so the allocated area is released. Specifically, it sets a flag indicating that those areas are available.
 図3Bに示すように、スレッド1のレジスタ番号v1、レジスタ番号v2については、スレッド0からの継承はないので、新たな領域が割り当てられる。後のスレッド1のレジスタ番号v1にはアドレス0xbbbb5678の領域が割り当てられ(行304)、レジスタ番号v2にはアドレス0xcccc5678が割り当てられている(行306)。 As shown in FIG. 3B, the register number v1 and the register number v2 of thread 1 are not inherited from thread 0, so a new area is allocated. The area of the address 0xbbbb5678 is assigned to the register number v1 of the subsequent thread 1 (line 304), and the address 0xcccc5678 is assigned to the register number v2 (line 306).
 図1に戻って説明を続ける。スレッドスケジューラ110は、PE114にスレッドを割り振るスケジューラである。具体的には、スレッドスケジューラ110は、PE114にスレッドを渡す。PE114は、レジスタコントローラ108が有する管理テーブル116を参照して、このスレッドを処理するレジスタを確保し、スレッドを処理する。 Return to Fig. 1 and continue the explanation. The thread scheduler 110 is a scheduler that allocates threads to PE 114. Specifically, the thread scheduler 110 passes a thread to PE 114. The PE 114 refers to the management table 116 of the register controller 108, allocates a register for processing this thread, and processes the thread.
 また、スレッドスケジューラ110は、レジスタの継承があるときは、レジスタコントローラ108に対して、前のスレッドに後続する後のスレッドと後のスレッドに継承されるレジスタ番号との対応関係を指定する。指定を受けたレジスタコントローラ108は、後のスレッドが前のスレッドで用いられたレジスタを継承するように管理テーブル116を書き換える。 Further, when the register is inherited, the thread scheduler 110 specifies to the register controller 108 the correspondence between the subsequent thread following the previous thread and the register number inherited by the subsequent thread. The designated register controller 108 rewrites the management table 116 so that the later thread inherits the register used in the previous thread.
 ローカルRAM112は、読み書き用の揮発性メモリである。演算ユニット106の演算結果を記憶し、システムバスインターフェイスと通信を行う。また、後述するレジスタファイル104から退避された全データを記憶する場合にも使用される。 The local RAM 112 is a volatile memory for reading and writing. The calculation result of the calculation unit 106 is stored and communicated with the system bus interface. It is also used when storing all the data saved from the register file 104, which will be described later.
[プロセッサの動作]
 以下では、上述したプロセッサ100の動作を示すフローを説明する。図4は、第1の実施形態に係るプロセッサ100が、スレッドの処理終了時に、レジスタの処理を行うフロー図である。PE114が前のスレッドを処理すると、フローが開始する。
[Processor operation]
Hereinafter, a flow showing the operation of the processor 100 described above will be described. FIG. 4 is a flow diagram in which the processor 100 according to the first embodiment performs register processing at the end of thread processing. When PE114 processes the previous thread, the flow begins.
 まず、スレッドスケジューラ110が、レジスタコントローラ108に対して後のスレッドを指定し、レジスタコントローラ108が、後のスレッドに継承されるレジスタがあるか否かを判定する(ステップS102)。 First, the thread scheduler 110 specifies a later thread to the register controller 108, and the register controller 108 determines whether or not there is a register inherited by the subsequent thread (step S102).
 レジスタコントローラ108が、後のスレッドに継承されるレジスタがあると判定すると(ステップS102:Yes)、継承されるレジスタに使用不可のフラグを立てる(ステップS104)。 When the register controller 108 determines that there is a register to be inherited by a subsequent thread (step S102: Yes), the inherited register is flagged as unusable (step S104).
 その後、レジスタコントローラ108が、管理テーブル116のキーを前のスレッドのキーから後のスレッドのキーに書き換え(ステップS106)、継承されるレジスタ以外のレジスタに使用可能のフラグを立て(ステップS108)、フローが終了する。 After that, the register controller 108 rewrites the key of the management table 116 from the key of the previous thread to the key of the subsequent thread (step S106), sets a flag that can be used for registers other than the inherited register (step S108), and sets a flag. The flow ends.
 一方、スレッドスケジューラ110が、レジスタコントローラ108に対して後のスレッドを指定せず、レジスタコントローラ108が、後のスレッドに継承されるレジスタがないと判定すると(ステップS102:No)、処理終了に係るスレッドが用いていたレジスタに使用可能のフラグを立て(ステップS110)、フローが終了する。 On the other hand, when the thread scheduler 110 does not specify a later thread for the register controller 108 and the register controller 108 determines that there is no register inherited by the subsequent thread (step S102: No), the process ends. A usable flag is set in the register used by the thread (step S110), and the flow ends.
 図5は、第1の実施形態のプロセッサ100が、スレッドの処理開始時に、レジスタの割り当て処理を行うフロー図である。スレッドスケジューラ110が、PE114に対して後のスレッドを割り当てると、フローが開始する。 FIG. 5 is a flow diagram in which the processor 100 of the first embodiment performs a register allocation process at the start of thread processing. When the thread scheduler 110 allocates a later thread to PE 114, the flow starts.
 まず、レジスタコントローラ108が、管理テーブル116において、使用可能フラグが立っているレジスタの領域にレジスタを割り当てる(ステップS202)。なお、前のスレッドから継承されるレジスタについては、ここで割り当てを行う必要はない。レジスタコントローラ108は、管理テーブル116のキーとアドレスを、後のスレッドのキーと後のスレッドを処理するレジスタのアドレスとに書き換える。 First, the register controller 108 allocates a register to the area of the register for which the enable flag is set in the management table 116 (step S202). It is not necessary to allocate the register inherited from the previous thread here. The register controller 108 rewrites the key and address of the management table 116 with the key of the later thread and the address of the register that processes the later thread.
 その後、PE114が、管理テーブル116を参照し、後のスレッドを処理し(ステップS204)、フローが終了する。 After that, PE 114 refers to the management table 116, processes the subsequent thread (step S204), and the flow ends.
 このようにして、プロセッサ100は、レジスタ継承を利用することにより、前のスレッドを処理して得られた値を後のスレッドに継承できる。これにより、対象データに対してロード/ストア処理を削除し、プロセッサ100の処理性能を改善できる。 In this way, the processor 100 can inherit the value obtained by processing the previous thread to the subsequent thread by using the register inheritance. As a result, the load / store process can be deleted for the target data, and the processing performance of the processor 100 can be improved.
 また、プロセッサ100は、レジスタ番号に加えてレジスタのアドレスを用いて、継承させるレジスタを管理する。これにより、ベクトル長に応じてレジスタの容量が変わるベクトル演算においても、レジスタ継承を利用できる。 Further, the processor 100 manages the register to be inherited by using the register address in addition to the register number. As a result, register inheritance can be used even in vector operations in which the register capacity changes according to the vector length.
(第2の実施形態)
[プロセッサの構成]
 次に、第2の実施形態に係るプロセッサ100について説明する。第2の実施形態に係るプロセッサ100の基本的な構成は第1の実施形態のプロセッサ100と同じであるが(図1参照)、第2の実施形態のプロセッサ100は、第1の実施形態のプロセッサ100とは異なり、レジスタファイル104にフラグメンテーション(断片化)が発生したときに、連続したレジスタの領域を割り当てる処理を行う。
(Second Embodiment)
[Processor configuration]
Next, the processor 100 according to the second embodiment will be described. The basic configuration of the processor 100 according to the second embodiment is the same as that of the processor 100 of the first embodiment (see FIG. 1), but the processor 100 of the second embodiment is the same as that of the first embodiment. Unlike the processor 100, when fragmentation (fragmentation) occurs in the register file 104, a process of allocating a continuous register area is performed.
 具体的には、レジスタコントローラ108は、例えば、レジスタファイル104において、レジスタファイル104に連続するレジスタの領域を確保できるか否かを判定する。レジスタコントローラ108は、フラグメンテーションにより、レジスタファイル104に連続するレジスタの領域を確保できないと判定したときは、レジスタファイル104に格納されたレジスタのデータをいったんローカルRAM112に退避する。 Specifically, the register controller 108 determines, for example, whether or not a register area continuous with the register file 104 can be secured in the register file 104. When the register controller 108 determines that a continuous register area cannot be secured in the register file 104 by fragmentation, the register controller 108 temporarily saves the register data stored in the register file 104 to the local RAM 112.
 そして、ローカルRAM112に退避させたデータをレジスタファイル104にリロードしてレジスタに連続した領域を割り当てることによりフラグメンテーションを解消すると共に、管理テーブル116の継承すべきレジスタのアドレスを更新する。 Then, the data saved in the local RAM 112 is reloaded into the register file 104 to allocate a continuous area to the registers to eliminate fragmentation and update the address of the register to be inherited in the management table 116.
 このレジスタの退避およびリロードを、図6を用いて具体的に説明する。図6は、レジスタの退避およびリロードを説明するための図である。図6に示すように、レジスタファイル104の面積はレジスタファイル104の容量を表す。レジスタコントローラ108が、レジスタファイル104にスレッドを処理するレジスタの領域を確保する。レジスタコントローラ108が、例えば、スレッドt1とスレッドt2とを演算するレジスタの領域を確保する。 The saving and reloading of this register will be specifically described with reference to FIG. FIG. 6 is a diagram for explaining save and reload of registers. As shown in FIG. 6, the area of the register file 104 represents the capacity of the register file 104. The register controller 108 allocates a register area for processing threads in the register file 104. The register controller 108 reserves, for example, a register area for calculating the thread t1 and the thread t2.
 レジスタファイル104には、スレッドt3に必要なレジスタを確保するだけの空き領域がある。しかし、レジスタの空き領域は、フラグメンテーションが生じる。そのため、スレッドt3を処理できる連続したレジスタの空き領域を確保できないことがある。 The register file 104 has enough free space to secure the registers required for thread t3. However, free register space is fragmented. Therefore, it may not be possible to secure a continuous free area of registers that can process thread t3.
 特に、レジスタ継承を繰り返し行うと、レジスタの領域が部分的にしか解放されない。そのため、レジスタの領域のフラグメンテーションが発生しやすい。そうすると、レジスタコントローラ108が、スレッドを処理できる連続したレジスタの領域を確保することが難しくなる。 In particular, when register inheritance is repeated, the register area is only partially released. Therefore, fragmentation of the register area is likely to occur. Then, it becomes difficult for the register controller 108 to secure a continuous register area capable of processing threads.
 このようにスレッドに必要なレジスタのために連続した領域を確保できないときに、レジスタコントローラ108は、レジスタファイル104に格納されている全データをローカルRAM112に退避する。 When a continuous area cannot be secured due to the registers required for the thread in this way, the register controller 108 saves all the data stored in the register file 104 to the local RAM 112.
 レジスタコントローラ108は、ローカルRAM112から全データをリロードし、スレッド毎にレジスタの領域を確保しなおす。このとき、レジスタコントローラ108が、可能な限りレジスタの領域の空きがないように、スレッドt1とスレッドt2とを処理するレジスタの領域を確保する。これにより、後のスレッドt3の処理に必要なレジスタとして、連続したレジスタの領域が確保される。 The register controller 108 reloads all the data from the local RAM 112 and reallocates the register area for each thread. At this time, the register controller 108 secures a register area for processing the thread t1 and the thread t2 so that the register area is as free as possible. As a result, a continuous register area is secured as a register required for the subsequent processing of thread t3.
 レジスタコントローラ108は、ローカルRAM112から全データをリロードする際に、スレッドおよびレジスタと、レジスタ領域のアドレスの対応関係を管理テーブル116に書き込む。これにより、レジスタの再割当が行われレジスタのアドレスが変更されたときでも、スレッドは、管理テーブル116が有するキーに基づいて、レジスタにアクセスできるため処理に影響はない。なお、そもそもレジスタファイル104の空き容量が不足しているときは、処理中のスレッドが完了し対象レジスタ領域が解放され、次のスレッドに必要な空き容量が確保可能な時点で上述したレジスタの再割当の処理が実行される。 When reloading all data from the local RAM 112, the register controller 108 writes the correspondence between the threads and registers and the address of the register area in the management table 116. As a result, even when the register is reassigned and the address of the register is changed, the thread can access the register based on the key held in the management table 116, so that the processing is not affected. If the free space of the register file 104 is insufficient in the first place, the above-mentioned register is restarted when the thread being processed is completed and the target register area is released and the free space required for the next thread can be secured. The allocation process is executed.
[プロセッサの動作]
 第2の実施形態に係るプロセッサ100の動作は、第2のフローのみ上述した第1の実施形態に係る第2のフローとは相違する。以下では、この相違点のみ説明する。
[Processor operation]
The operation of the processor 100 according to the second embodiment is different from the second flow according to the first embodiment described above only in the second flow. Only this difference will be described below.
 図7は、第2の実施形態に係るプロセッサ100が、スレッドの処理開始時に、レジスタの割り当て処理を行うフロー図である。第2の実施形態に係るフローは、第1の実施形態に係るフローとは異なり、連続したレジスタ領域を確保できないときに、レジスタファイル104から全データをローカルRAM112に退避し、改めて全データをレジスタファイル104にリロードするステップを含む。スレッドスケジューラ110が、PE114に対して後のスレッドを割り当てると、フローが開始する。 FIG. 7 is a flow diagram in which the processor 100 according to the second embodiment performs a register allocation process at the start of thread processing. The flow according to the second embodiment is different from the flow according to the first embodiment, and when a continuous register area cannot be secured, all the data from the register file 104 is saved in the local RAM 112, and all the data are registered again. Includes a step of reloading to file 104. When the thread scheduler 110 allocates a later thread to PE 114, the flow starts.
 まず、レジスタコントローラ108が、後のスレッドを処理するための連続したレジスタの領域を確保できるか否かを判定する(ステップS302)。 First, it is determined whether or not the register controller 108 can secure a continuous register area for processing a subsequent thread (step S302).
 レジスタコントローラ108が、後のスレッドを処理するための連続したレジスタの領域を確保できると判定すると(ステップS302:Yes)、PE114が、使用可能フラグが立っているレジスタの領域にレジスタを割り当てる(ステップS304)。 When the register controller 108 determines that a contiguous register area for processing a subsequent thread can be secured (step S302: Yes), the PE 114 allocates a register to the area of the register for which the enable flag is set (step S302: Yes). S304).
 その後、レジスタコントローラ108が、管理テーブル116のキーとアドレスとを、後のスレッドのキーと後のスレッドを処理するレジスタのアドレスとに更新し(ステップS310)する。 After that, the register controller 108 updates the key and address of the management table 116 to the key of the later thread and the address of the register that processes the later thread (step S310).
 一方、レジスタコントローラ108が、後のスレッドを処理するための連続したレジスタの領域を確保できないと判定すると(ステップS302:No)、全データをレジスタファイル104からローカルRAM112に退避し(ステップS306)、改めて全データをローカルRAM112からレジスタファイルにリロードし(ステップS308)、スレッド毎に連続したレジスタの領域を確保しなおす。 On the other hand, when the register controller 108 determines that a continuous register area for processing a subsequent thread cannot be secured (step S302: No), all the data is saved from the register file 104 to the local RAM 112 (step S306). All the data is reloaded from the local RAM 112 into the register file (step S308), and the continuous register area is re-allocated for each thread.
 その後、レジスタコントローラ108が、管理テーブル116のキーとアドレスとを、後のスレッドのキーと後のスレッドを処理するレジスタのアドレスとに更新する(ステップS310)。 After that, the register controller 108 updates the key and address of the management table 116 to the key of the later thread and the address of the register that processes the later thread (step S310).
 レジスタコントローラ108によってレジスタ領域にレジスタが確保され、管理テーブル116にレジスタとそのアドレスの情報が記憶された後に、PE114は、後のスレッドを処理し(ステップS312)、フローが終了する。 After the register is secured in the register area by the register controller 108 and the information of the register and its address is stored in the management table 116, the PE 114 processes the subsequent thread (step S312), and the flow ends.
 このように、第2の実施形態に係る第2のフローでは、第1の実施形態に係る第2のフローとは異なり、連続したレジスタ領域を確保できないときに、レジスタファイル104から全データをローカルRAM112に退避し、改めて全データをレジスタファイル104にリロードするステップを有する。これにより、レジスタコントローラ108は、レジスタ継承を利用することで発生しやすくなったレジスタの領域のフラグメンテーションを解消し、ベクトル演算の演算効率を高く保持することができる。

 
As described above, in the second flow according to the second embodiment, unlike the second flow according to the first embodiment, when a continuous register area cannot be secured, all the data is locally stored from the register file 104. It has a step of saving to the RAM 112 and reloading all the data into the register file 104 again. As a result, the register controller 108 can eliminate the fragmentation of the register area, which tends to occur by using the register inheritance, and can maintain high calculation efficiency of the vector operation.

Claims (6)

  1.  複数の演算器(114)と、
     前記複数の演算器に対してスレッドを振り分けるスレッドスケジューラ(110)と、
     前記複数の演算器で共有されるレジスタファイル(104)と、
     前記レジスタファイルに、前記スレッドで用いるレジスタの領域を割り当てるレジスタコントローラ(108)と、
     前記スレッドおよび前記レジスタを識別する情報と当該レジスタが割り当てられたレジスタの領域のアドレスとを関連付けて記憶した管理テーブル(116)と、
     を備え、
     前記レジスタコントローラは、前のスレッドで用いたレジスタを後のスレッドに継承させるときには、前記前のスレッドの処理が終了した後も、継承すべきレジスタの領域を解放せず、当該継承すべきレジスタの領域のアドレスに関連付けられた前記管理テーブルの情報を前記後のスレッドおよびレジスタを識別する情報に書き換えるプロセッサ(100)。
    With multiple arithmetic units (114),
    A thread scheduler (110) that distributes threads to the plurality of arithmetic units, and
    A register file (104) shared by the plurality of arithmetic units and
    A register controller (108) that allocates a register area used by the thread to the register file,
    A management table (116) that stores information that identifies the thread and the register in association with the address of the register area to which the register is assigned, and
    With
    When the register controller inherits the register used in the previous thread to the subsequent thread, the register controller does not release the area of the register to be inherited even after the processing of the previous thread is completed, and the register to be inherited A processor (100) that rewrites the information in the management table associated with the address of the region into the information that identifies the thread and the register after that.
  2.  前記レジスタファイルは、単一データのみではなく複数のデータをまとめて扱えるベクトルレジスタも処理対象とし、
     前記複数の演算器は、ベクトルレジスタも同様に処理可能な演算器を含む請求項1に記載のプロセッサ。
    The register file also processes vector registers that can handle not only single data but also multiple data at once.
    The processor according to claim 1, wherein the plurality of arithmetic units include an arithmetic unit capable of processing a vector register in the same manner.
  3.  前記レジスタコントローラは、前記スレッドスケジューラから前記後のスレッドに継承される前記前のスレッドおよびレジスタの情報を取得し、前記管理テーブルに記憶された、前記前のスレッドおよび継承すべきレジスタの情報を前記後のスレッドおよびレジスタの情報に書き換える請求項1または2に記載のプロセッサ。 The register controller acquires the information of the previous thread and the register inherited from the thread scheduler to the subsequent thread, and obtains the information of the previous thread and the register to be inherited stored in the management table. The processor according to claim 1 or 2, which rewrites information in a later thread and register.
  4.  前記レジスタコントローラは、前記前のスレッドの処理を終了するときに、前記前のスレッドで確保していたレジスタの領域のうち、前記後のスレッドが継承するレジスタ以外のレジスタの領域に対し、使用可能であることを示すフラグを立てることで領域を解放する請求項1から3のいずれかに記載のプロセッサ。 When the processing of the previous thread is terminated, the register controller can be used for a register area other than the register inherited by the subsequent thread among the register areas allocated by the previous thread. The processor according to any one of claims 1 to 3, which releases an area by setting a flag indicating that.
  5.  前記レジスタコントローラは、前記スレッドで用いる前記レジスタのために、前記レジスタファイルに連続する領域を確保できないときは、前記レジスタファイルに格納されたレジスタのデータをいったんメモリに退避し、メモリに退避させたデータをレジスタファイルにリロードして各レジスタに連続した領域を割り当てると共に、前記管理テーブルを更新する請求項1から4のいずれかに記載のプロセッサ。 When the register controller cannot secure a continuous area in the register file due to the register used in the thread, the register data of the register stored in the register file is temporarily saved in the memory and saved in the memory. The processor according to any one of claims 1 to 4, which reloads data into a register file, allocates contiguous areas to each register, and updates the management table.
  6.  複数の演算器(114)と、
     前記複数の演算器に対してスレッドを振り分けるスレッドスケジューラ(110)と、
     前記複数の演算器で共有されるレジスタファイル(104)と、
     前記レジスタファイルに、前記スレッドで用いるレジスタの領域を割り当てるレジスタコントローラ(108)と、
     前記スレッドおよび前記レジスタを識別する情報と当該レジスタが割り当てられたレジスタの領域のアドレスとを関連付けて記憶した管理テーブル(116)と、
     を備えるプロセッサ(100)において、
     前記レジスタコントローラは、前記スレッドの処理が終了した後も、後のスレッドに継承すべきレジスタの領域を解放せず、当該継承すべきレジスタの領域のアドレスに関連付けられた前記管理テーブルの情報を前記後のスレッドおよびレジスタを識別する情報に書き換えるレジスタの継承方法。

     
    With multiple arithmetic units (114),
    A thread scheduler (110) that distributes threads to the plurality of arithmetic units, and
    A register file (104) shared by the plurality of arithmetic units and
    A register controller (108) that allocates a register area used by the thread to the register file,
    A management table (116) that stores information that identifies the thread and the register in association with the address of the register area to which the register is assigned, and
    In the processor (100) including
    The register controller does not release the register area to be inherited by the subsequent thread even after the processing of the thread is completed, and the information of the management table associated with the address of the register area to be inherited is used. A register inheritance method that rewrites information that identifies later threads and registers.

PCT/JP2020/014996 2019-04-18 2020-04-01 Processor and register inheritance method WO2020213397A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021514866A JP7217341B2 (en) 2019-04-18 2020-04-01 How processors and registers are inherited

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019079383 2019-04-18
JP2019-079383 2019-04-18

Publications (1)

Publication Number Publication Date
WO2020213397A1 true WO2020213397A1 (en) 2020-10-22

Family

ID=72837159

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/014996 WO2020213397A1 (en) 2019-04-18 2020-04-01 Processor and register inheritance method

Country Status (2)

Country Link
JP (1) JP7217341B2 (en)
WO (1) WO2020213397A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023029591A1 (en) * 2021-09-03 2023-03-09 海光信息技术股份有限公司 Processor, physical register management method, and electronic apparatus

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1078880A (en) * 1996-08-30 1998-03-24 Nec Corp Method for executing multi-thread
US20100161948A1 (en) * 2006-11-14 2010-06-24 Abdallah Mohammad A Apparatus and Method for Processing Complex Instruction Formats in a Multi-Threaded Architecture Supporting Various Context Switch Modes and Virtualization Schemes

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1078880A (en) * 1996-08-30 1998-03-24 Nec Corp Method for executing multi-thread
US20100161948A1 (en) * 2006-11-14 2010-06-24 Abdallah Mohammad A Apparatus and Method for Processing Complex Instruction Formats in a Multi-Threaded Architecture Supporting Various Context Switch Modes and Virtualization Schemes

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023029591A1 (en) * 2021-09-03 2023-03-09 海光信息技术股份有限公司 Processor, physical register management method, and electronic apparatus

Also Published As

Publication number Publication date
JP7217341B2 (en) 2023-02-02
JPWO2020213397A1 (en) 2020-10-22

Similar Documents

Publication Publication Date Title
JP6294586B2 (en) Execution management system combining instruction threads and management method
US6341338B1 (en) Protocol for coordinating the distribution of shared memory
US20230196502A1 (en) Dynamic kernel memory space allocation
US20180136842A1 (en) Partition metadata for distributed data objects
JP2020511714A5 (en)
KR20110075297A (en) Apparatus and method for parallel processing in consideration of degree of parallelism
JP2006513493A (en) Managing memory by using a free buffer pool
US20120227056A1 (en) Method and system for enabling access to functionality provided by resources outside of an operating system environment
WO2016092856A1 (en) Information processing device, information processing system, task processing method, and storage medium for storing program
KR20070090649A (en) Apparatus and method for providing cooperative scheduling on multi-core system
US7971041B2 (en) Method and system for register management
JP2009199414A (en) Microcomputer
WO2020213397A1 (en) Processor and register inheritance method
JP2005209206A (en) Data transfer method for multiprocessor system, multiprocessor system, and processor for executing the method
US8615762B2 (en) Multiprocessor system, multiple threads processing method and program
US20190232891A1 (en) Vehicle Control Device
US20090187911A1 (en) Computer device with reserved memory for priority applications
JP4409568B2 (en) Band control program and multiprocessor system
US20020029800A1 (en) Multiple block sequential memory management
US20100299672A1 (en) Memory management device, computer system, and memory management method
JP6817827B2 (en) Accelerator processing management device, host device, accelerator processing execution system, method and program
JP3893136B2 (en) Embedded computer control program, recording medium recording the program, and embedded system
JP3991443B2 (en) Task switching method and data processing apparatus
CN116048377A (en) Data processing method of solid state disk and related equipment
JP2007122337A (en) Arithmetic unit

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20791332

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021514866

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20791332

Country of ref document: EP

Kind code of ref document: A1