JP2024516926A - 可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャ - Google Patents
可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャ Download PDFInfo
- Publication number
- JP2024516926A JP2024516926A JP2023553373A JP2023553373A JP2024516926A JP 2024516926 A JP2024516926 A JP 2024516926A JP 2023553373 A JP2023553373 A JP 2023553373A JP 2023553373 A JP2023553373 A JP 2023553373A JP 2024516926 A JP2024516926 A JP 2024516926A
- Authority
- JP
- Japan
- Prior art keywords
- length
- suffix
- instruction
- prefixes
- variable length
- 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
- 238000000034 method Methods 0.000 claims abstract description 64
- 230000009191 jumping Effects 0.000 claims description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 abstract description 4
- 229910052710 silicon Inorganic materials 0.000 abstract description 4
- 239000010703 silicon Substances 0.000 abstract description 4
- 238000013459 approach Methods 0.000 description 8
- 238000007792 addition Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 101000822695 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C1 Proteins 0.000 description 1
- 101000655262 Clostridium perfringens (strain 13 / Type A) Small, acid-soluble spore protein C2 Proteins 0.000 description 1
- 101000655256 Paraclostridium bifermentans Small, acid-soluble spore protein alpha Proteins 0.000 description 1
- 101000655264 Paraclostridium bifermentans Small, acid-soluble spore protein beta Proteins 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
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)
- Advance Control (AREA)
Abstract
Description
背景
命令セット符号化は、並列に実行可能な作業量を最大化することとプログラムサイズを最小化することというトレードオフで、中央処理装置(central processing unit:CPU)の性能に影響を与える場合があり、それは、プログラムを実行するために必要とされるリソースを減少させる。いくつかの既存のシステムは、32ビット長の命令といった固定幅の命令を使用する。これらのシステムは、複数の命令を同時にフェッチして復号するために、スーパースカラーコンピュータアーキテクチャをサポートする。これらの命令は次に、並列に実行され得る。しかしながら、このタイプのシステムは、単純な命令を含むすべての命令が同じ長さを有することを必要とする。たとえば、すべての命令が32ビットである場合、数ビットしか必要としない単純な命令さえ、32ビットという固定長まで増加されるであろう。それは、単純な命令を必要以上により長くすることによってプログラムサイズを増加させる。
命令セット符号化は、並列に実行可能な作業量を最大化することとプログラムサイズを最小化することというトレードオフで、中央処理装置(central processing unit:CPU)の性能に影響を与える場合があり、それは、プログラムを実行するために必要とされるリソースを減少させる。いくつかの既存のシステムは、32ビット長の命令といった固定幅の命令を使用する。これらのシステムは、複数の命令を同時にフェッチして復号するために、スーパースカラーコンピュータアーキテクチャをサポートする。これらの命令は次に、並列に実行され得る。しかしながら、このタイプのシステムは、単純な命令を含むすべての命令が同じ長さを有することを必要とする。たとえば、すべての命令が32ビットである場合、数ビットしか必要としない単純な命令さえ、32ビットという固定長まで増加されるであろう。それは、単純な命令を必要以上により長くすることによってプログラムサイズを増加させる。
他の既存のシステムは可変長の命令を使用するが、それらは並列に復号することが困難である場合がある。この困難は、第2の命令がどこで始まるかをシステムが判定し得る前に、システムが命令の長さを見出すために第1の命令を復号する必要があるために生じる。この制限を減少させる手法はあるものの、これらの手法は、異なる長さのさまざまな命令を処理するためのキャッシュを実現するために、著しい追加処理を必要とするかもしれず、または、シリコンチップ上でのより大きい面積を必要とするかもしれない。
概要
この文書は、可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャに関するシステムおよび方法を開示する。いくつかの局面では、ハイブリッド符号化アプローチが、可変長の命令を用いた並列復号を行なう際のリソース浪費を回避するために使用され、固定長の命令の非効率的な符号化を回避する。たとえば、ハイブリッド符号化アプローチは、各命令についての固定長の接頭辞と可変長の接尾辞とを含む命令フォーマットを使用し得る。
この文書は、可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャに関するシステムおよび方法を開示する。いくつかの局面では、ハイブリッド符号化アプローチが、可変長の命令を用いた並列復号を行なう際のリソース浪費を回避するために使用され、固定長の命令の非効率的な符号化を回避する。たとえば、ハイブリッド符号化アプローチは、各命令についての固定長の接頭辞と可変長の接尾辞とを含む命令フォーマットを使用し得る。
さまざまな局面では、プロセッサが、実行のための命令ブロックを受信する。復号器が、命令ブロックにおける複数の固定長の接頭辞を識別し、命令における複数の可変長の接尾辞を識別する。複数の固定長の接頭辞の各々は、可変長の接尾辞のうちの1つに関連付けられ得る。命令ブロックは次に、複数の可変長の接尾辞に基づいて実行される。そうすることにより、説明されるシステムおよび方法は、プログラムサイズを減少させ、シリコンチップ上での必要な面積を減少させる態様で実現され得る。
この概要は、可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャを実現するための簡略化された概念を紹介するために提供される。これらの簡略化された概念は、以下の詳細な説明においてさらに説明される。この概要は、請求される主題の本質的特徴を識別するよう意図されてはおらず、請求される主題の範囲を決定する際に使用するよう意図されてもいない。
図面の簡単な説明
説明されるシステムおよび方法の1つ以上の局面の詳細を以下に説明する。説明および図面における異なる事例での同じ参照番号の使用は、同様の要素を示す。
説明されるシステムおよび方法の1つ以上の局面の詳細を以下に説明する。説明および図面における異なる事例での同じ参照番号の使用は、同様の要素を示す。
詳細な説明
説明されるシステムおよび方法は、可変長の命令を使用する並列復号命令セットコンピュータを提供する。これらの命令は、接頭辞と接尾辞とを含むハイブリッド命令と呼ばれ得る。いくつかの局面では、システムおよび方法は、各ハイブリッド命令を、接頭辞および接尾辞という2つの部分に分離し得る。接頭辞は、関連付けられたかまたは対応する接尾辞の長さを示すデータを含み得る。本明細書で説明されるように、各接頭辞は、命令の接頭辞部分内の固定位置で固定長(たとえば固定数のビット)を有し得る。各接尾辞は可変長を有し得る。このため、各接頭辞は、関連付けられた接尾辞の(たとえばビット単位での)長さを示す。接頭辞の他のセクションはオプションであり、特定の命令セットがどのように定義されるかに依存し得る。たとえば、接頭辞は、命令に関連付けられた命令識別子およびデータを含み得る。
説明されるシステムおよび方法は、可変長の命令を使用する並列復号命令セットコンピュータを提供する。これらの命令は、接頭辞と接尾辞とを含むハイブリッド命令と呼ばれ得る。いくつかの局面では、システムおよび方法は、各ハイブリッド命令を、接頭辞および接尾辞という2つの部分に分離し得る。接頭辞は、関連付けられたかまたは対応する接尾辞の長さを示すデータを含み得る。本明細書で説明されるように、各接頭辞は、命令の接頭辞部分内の固定位置で固定長(たとえば固定数のビット)を有し得る。各接尾辞は可変長を有し得る。このため、各接頭辞は、関連付けられた接尾辞の(たとえばビット単位での)長さを示す。接頭辞の他のセクションはオプションであり、特定の命令セットがどのように定義されるかに依存し得る。たとえば、接頭辞は、命令に関連付けられた命令識別子およびデータを含み得る。
説明されるシステムおよび方法のいくつかの局面では、命令の部分は、可変長の命令も提供しつつ、並列に復号され得る。これらのシステムおよび方法は、プログラムサイズを減少させ、シリコンチップ上での必要な面積を減少させる態様で実現され得る。
図1は、さまざまな命令を実行可能な中央処理装置(CPU)100の例を示す。CPU100は、復号器102、算術論理演算ユニット(arithmetic logic unit:ALU)104、浮動小数点演算ユニット(floating-point unit:FPU)106、およびキャッシュ108といった、特定のタスクを行なうさまざまなサブコンポーネントを含み、それらはランダムアクセスメモリ(random-access memory:RAM)110または他のメモリデバイスに結合され得る。特定のサブコンポーネントがCPU100内に示されているが、代替的な実施形態は、CPU100内に追加のサブコンポーネントを含んでいてもよく、または、CPU100内により少ないサブコンポーネントを含んでいてもよい。
いくつかの局面では、プログラムコードが復号器102によって受信され、復号器102は、受信されたプログラムコードにおける命令を復号する。ALU104は、特定の命令のために必要とされるような整数計算を行なう。整数計算は、整数を用いた数学的計算を伴う。FPU106は、特定の命令のために必要とされるような浮動小数点計算を行なう。浮動小数点とは、小数位を有する数を2進法形式で表わすための手法である。浮動小数点計算は、整数計算とは異なるように取り扱われる。
いくつかの局面では、ALU104は、レジスタ内の値にアクセスし、それらの値に対してさまざまな演算(operations)を行なう。特定の実現化例では、CPU100は、互いから独立して動作可能な複数のALU104を含み得る。同様に、FPU106は、レジスタ内の値にアクセスし、それらの値に対してさまざまな演算を行ない得る。いくつかの局面では、CPU100は、互いから独立して動作可能な複数のFPU106を含み得る。キャッシュ108は、RAM110に書き込まれているかまたはRAM110から読み取られているさまざまなデータを格納することができる。
図2は、固定長の接頭辞(たとえば固定数のビット)と可変長の接尾辞(たとえば可変数のビット)とを含む命令ブロック200の例を示す。図2に示されるように、命令ブロック200はメモリに格納され、始点202と終点204とを有する。いくつかの局面では、命令ブロックは、メモリの隣接ブロックに格納される。説明される例では、命令ブロック200は、接頭辞206、208、210、212、214、216、218、および220の8つのブロックを有する。いくつかの局面では、接頭辞206~220は、メモリ内に連続して位置する。加えて、命令ブロック200は、接尾辞222、224、226、228、230、232、234、および236の8つのブロックを有する。いくつかの局面では、接尾辞222~236は、接頭辞206~220に続いて、メモリ内に連続して位置する。
本明細書で説明されるように、接頭辞206~220は(図2に示されるように)固定長を有し、接尾辞222~236は可変長を有する。いくつかの局面では、接頭辞206~220は16ビットの長さを有し得る。他の例では、接頭辞206~220は任意の長さを有し得る。接尾辞222~236の変化する長さは、図2に示されている。たとえば、接尾辞222は、接尾辞224および230よりも短い長さを有する。図2には8つの接頭辞206~220と8つの接尾辞222~236とが示されているが、他の実現化例は、任意の数の接頭辞と任意の数の接尾辞とを含んでいてもよい。
いくつかの局面では、各接頭辞は、特定の接尾辞に関連付けられている。たとえば、図2に示されるように、接頭辞206は接尾辞222に関連付けられ、接頭辞208は接尾辞224に関連付けられ、接頭辞210は接尾辞226に関連付けられている、などとなっている。命令の2つの部分(接頭辞および接尾辞)間の分裂は、第2の部分(接尾辞)におけるデータが、復号器によって格納または解析されることなく、実行ユニットのためにロードされ得る間に、復号器が第1の部分(接頭辞)におけるデータのみをロードすることを可能にする。このアプローチは、小さい固定数のビットを格納する簡略化された復号器の使用をサポートし、それにより、復号器のサイズを減少させ、復号器の消費電力を減少させ、復号器の性能を向上させる。
8つの固定長の接頭辞206~220を有する命令ブロック200の構成は、並列に復号され得る。各接頭辞206~220は同じ長さを有するため、メモリ内の各接頭辞についての開始位置を識別することは単純なプロセスである。たとえば、接頭辞206についてのメモリ内の開始位置は、始点202に基づいて知られている。次の接頭辞(208)についてのメモリ内の開始位置は、(ビット単位での)固定長を接頭辞206に追加することによって容易に決定される。このプロセスは、各接頭辞206~220についてのメモリ内の開始位置、および、第1の接尾辞222についてのメモリ内の開始位置を見出すために続く。
いくつかの実現化例では、各接頭辞206~220は、命令識別子、関連付けられた接尾辞の長さ、および、命令によって使用されるデータ(たとえば、実行される場合に可変長の接尾辞によって使用されるデータ)といったデータを含む。他の実現化例では、命令によって使用されるデータは、接頭辞の代わりに(または接頭辞に加えて)接尾辞に格納され得る。
図3は、接尾辞オフセットを決定可能な並列加算器300の例を示す。いくつかの局面では、各接尾辞の長さは、関連付けられた接頭辞に格納された情報に基づいて知られている。このため、説明されるシステムおよび方法は、並列加算器300の出力に基づいて、メモリ内の各接尾辞の開始位置を速やかに決定することができる。各接頭辞および各接尾辞についてのメモリ内の開始位置が決定された後で、CPU100は、命令を実行するために必要な情報のすべてを有する。図3の例では、例を簡略化するために、並列加算器300は、4つの接頭辞と4つの接尾辞とを有する命令を管理する。
いくつかの局面では、図3の例は、メモリ内の各接尾辞の開始位置を決定するために、接尾辞の累積長さを使用する。並列加算器300では、各接尾辞の開始位置を速やかに決定するために、複数の加算が並列に実行される。いくつかの局面では、並列加算器300は(たとえば、接頭辞から復号された)復号された接尾辞サイズ330を受信し、それらはブロック304、306、308、および310として表わされる。図3に示されるように、4つの復号された接尾辞サイズはそれぞれ2バイト、0バイト、4バイト、および8バイトである。
いくつかの局面では、破線302によって識別される複数の加算器回路は、加算器312、314、316、および318を含み得る。たとえば、加算器312は、ブロック304の値(2バイト)とブロック306の値(0バイト)とを加算して2バイトの出力を生成し、それはブロック324に通信される。加算器312の出力は、加算器316および318にも通信される。ブロック320、322、324、326、および328は、命令の接尾辞ブロック内の各接尾辞についてのオフセットを表わす。特に、ブロック320はゼロ(接尾辞ブロックの始点)である。ブロック322はブロック304と同じであり、それが第1のオフセットである。ブロック324および326は、接尾辞ブロック内の次の2つのオフセットを表わす。いくつかの局面では、ブロック328は、次の命令ブロックまでのオフセットを表わす。図3の例では、332は、接尾辞ブロック内の各接尾辞についてのオフセットを表わす。
加算器314は、ブロック308の値(4バイト)とブロック310の値(8バイト)とを加算して12バイトの出力を生成し、それは加算器318に通信される。加算器316は、ブロック308の出力(4バイト)を加算器312の出力(2バイト)に加算して6バイトの出力を生成し、それはブロック326に通信される。加算器318は、加算器312の出力(2バイト)を加算器314の出力(12バイト)に加算して14バイトの出力を生成し、それはブロック328に通信される。図3の例は、任意の数の接頭辞と任意の数の接尾辞とを有する命令に適用され得る。いくつかの局面では、追加の加算器が、メモリ内のすべての接尾辞の開始位置を決定するために使用されてもよい。
図4は、固定長の接頭辞と可変長の接尾辞とを有する命令ブロックを復号するためのプロセス400の例を示す。プロセス400は1組のブロックとして図示され、それらは、行なわれる動作を特定するものの、それぞれのブロックによって当該動作を行なうために示された順序または組合せに必ずしも限定されない。また、当該動作のうちの1つ以上のいずれも、幅広い追加のおよび/または代替的な方法を提供するために繰り返され、組合され、再編成され、またはリンクされてもよい。手法は、1つのデバイス上で動作する1つのエンティティまたは複数のエンティティによる実行に限定されない。
402で、デバイスまたはシステムは、CPUなどのプロセッサによる実行のための命令ブロックを受信する。いくつかの局面では、命令ブロックは、開始メモリ位置、および、場合によっては終了メモリ位置を用いて識別されたメモリの隣接ブロックに格納される。404で、プロセス400は、受信された命令ブロックにおける複数の固定長の接頭辞を識別する。本明細書で説明されるように、複数の固定長の接頭辞の各々のオフセット値は、すべての接頭辞の同じ固定長に起因して、接頭辞間の既知のオフセットに基づいて決定され得る。
406で、プロセス400は、命令ブロックにおける複数の可変長の接尾辞を識別する。本明細書で説明されるように、固定長の接頭辞の各々は、可変長の接尾辞のうちの1つに関連付けられている。408で、可変長の接尾辞の各々の長さが、関連付けられた固定長の接頭辞に含まれるデータに基づいて決定される。可変長の接尾辞の長さは、次の接尾辞の開始までのオフセット値を決定するために使用される。410で、プロセス400は、複数の加算器回路を使用して、可変長の接尾辞の各々についてのオフセット値を決定する。本明細書で説明されるように、複数の加算器回路は並列加算演算を行なって、接頭辞における接尾辞長さデータを処理し、次の接尾辞の開始までのオフセット値を決定する。412で、プロセス400は、複数の可変長の接尾辞に基づいて命令を実行する。
いくつかの局面では、本明細書で説明されるシステムおよび方法は、ルーティングを容易にするために、分裂レジスタセットを作成してもよい。たとえば、複数のレジスタセットが作成され、異なるALUに関連付けられ得る。単純な例では、2つのレジスタセットが作成され、レジスタセットAおよびレジスタセットBとラベル付けされる。ALUの第1のグループがレジスタセットAにアクセスしてもよく、ALUの第2のグループがレジスタセットBにアクセスしてもよく、ALUの第3のグループがレジスタセットAおよびレジスタセットBにアクセスしてもよい。特定の実現化例では、任意の数のレジスタセットが作成されてもよい。いくつかの局面では、レジスタセットは、マイクロアーキテクチャに関連付けられた物理レジスタのためのレジスタネーミングと並んで実現されてもよい。これは、追加の複雑性をISA(Instruction Set Architecture:命令セットアーキテクチャ)にさらすことなく、減少したルーティングの利点のすべてを提供し得る。
CPUはより大きいサイズ(たとえば、より多数のコア)へスケール変更するため、それらは、増加したルーティングに対する需要を満たすために、増加した数の物理レジスタを必要とし得る。上述の複数のレジスタセットの使用は、より大きいCPUによって引き起こされる潜在的なルーティングの問題を緩和し得る。
図5は、即値/レジスタ値Xのための復号および実行アプローチ(DEXV)の例を示す。いくつかの局面では、ある命令は復号を必要としない。たとえば、8つの命令のブロックは、分岐または他の状況に起因して、実際に復号される必要がある命令を8つよりも少なく有し得る。空所を埋めるためにNo-Op(無演算)命令がブロックに追加され得るが、そのアプローチは余分なスペースを不必要に占める。本明細書で説明されるように、いくつかの局面では、未使用のブロックを浪費することを回避するために、より小さいブロックサイズが構築される。特定の実現化例では、命令が、次の命令ブロックのフェッチおよび復号活動を修正してもよい。
いくつかの局面では、命令の2つの部分間の分裂は、復号器が接頭辞をロードするだけでいいように行なわれ得る。このため、接尾辞におけるデータは、復号器によって格納または解析されることなく、実行ユニットのためにロードされ得る。このアプローチは、小さい固定数のビットを格納する簡略化された復号器の使用をサポートし、それは、復号器の性能を向上させつつ、復号器のサイズおよび消費電力を減少させる。
図5の例は、いくつかの命令が復号を必要としない状況を取り扱うための、Xを復号して実行する命令の追加を示す。Xを復号して実行する命令は、命令の先行ブロックにおけるスタンドアロンの命令として、もしくは、分岐またはジャンプ命令の一部として実行される。スタンドアロンの命令は各々、命令の数を特定する即値(たとえば、この値は命令の一部である)を有し得る。ジャンプおよび分岐命令については、即値が使用されてもよいが、それは、ジャンプ位置がたとえば仮想関数である場合には有用ではない。その状況では、(Xの復号および実行における)Xがレジスタ値の引数であり得ること、または、(Xの復号および実行における)Xが接頭辞ブロックサイズからのオフセットに基づき得ること、という2つのオプションがある。
特定の例では、各接頭辞が16ビット(2バイト)で、ブロックに8つの接頭辞があると仮定されたい。ジャンプアドレスが、整列された16バイトプラス8バイトである場合、それは、本明細書で説明されるシステムおよび方法が次のブロックにおける4つの命令を復号して実行することができることを意味する。このため、ジャンプターゲットは、そのブロックにおける命令の数に従って整列されたメモリである必要がある。
図5の例では、X=4、ブロックサイズが8、および、接頭辞サイズが2バイト(16ビット)である。図5に示されるように、即値500は、接頭辞と接尾辞との間で分裂され得る命令識別子を示す。ブロック504は接尾辞の長さを識別し、ブロック506は次のブロックの長さ(この例では4)を識別する。レジスタ値502は、接尾辞の長さを識別するブロック508とレジスタアドレスを識別するブロック510とを含む命令識別子を示す。図5の例では、ブロック510でアドレス指定されたレジスタは、ブロック512として示される。
X=4、ブロックサイズが8、および、接頭辞サイズが2バイト(16ビット)で、図5に示される命令を実行することは、図5の下部に示される命令ブロックの実行をもたらすであろう。その命令ブロックは、4つの接頭辞514、516、518、および520を含む。(530によって示されるように)4つの命令接頭辞が命令ブロックから外される。命令ブロックはまた、4つの接尾辞522、524、526、および528を含む。4つの接尾辞は、接頭辞520の直後に続く。いくつかの局面では、ジャンプ(JDEXV)を含む状況については、(以下に説明される)図6に示される実施形態などのメモリアドレス指定スキームを使用して、アドレスが命令の終わりに添付される。
図6は、オフセットに基づいてXをジャンプし、復号し、実行すること(JDEXO)の例を示す。図6に示されるように、命令識別子600は、接頭辞と接尾辞との間で分裂され得る。命令識別子600は、ゼロであり得る接尾辞の長さを識別するブロック602を含む。ブロック604はジャンプターゲットを識別し、それは、レジスタ値または即値を識別するメモリアドレス指定スキームを使用して定義されたメモリアドレスであり得る。いくつかの局面では、メモリアドレスは、命令識別子600において定義された値、または、全体的に定義された値であってもよい。
図6に示されるように、614で、ジャンプターゲットアドレスが識別される。この例では、X=4、ブロックサイズが8、および、接頭辞サイズが2バイト(16ビット)である。614で識別されたジャンプターゲットアドレスは8であり、それは4つの接頭辞のサイズである。このため、図6の例は、4つの接頭辞606、608、610、および612を越えてジャンプする。処理は接頭辞616で始まり、接頭辞618、620、および622へと続き、その後に接尾辞ブロック624が続く。
上述のシステムおよび方法は、可変長の命令を用いた並列復号命令セットコンピュータのさまざまな例のコンテキストで説明されているが、説明されたシステム、デバイス、装置、および方法は非限定的であり、他のコンテキスト、電子デバイス、コンピューティング構成、プロセッサ構成、コンピューティング環境などに当てはまり得る。
一般に、本明細書で説明されるコンポーネント、モジュール、方法、および動作は、ソフトウェア、ファームウェア、ハードウェア(たとえば固定論理回路)、手動処理、またはそれらの任意の組合せを使用して実現され得る。例示的な方法のいくつかの動作は、コンピュータ処理システムに対してローカルおよび/またはリモートのコンピュータ読取可能記憶メモリ上に格納された実行可能命令の一般的コンテキストで説明されてもよく、実現化例は、ソフトウェアアプリケーション、プログラム、関数などを含み得る。それに代えて、またはそれに加えて、本明細書で説明される機能性のうちのいずれも、FPGA、ASIC、ASSP、SoC、CPLD、コプロセッサ、コンテキストハブ、モーション・コプロセッサ、センサ・コプロセッサなどといった1つ以上のハードウェア論理コンポーネントによって、少なくとも部分的に行なわれ得る。
以下では、可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャの1つ以上の局面に従って、追加の例が説明される。
プロセッサと関連して実現される方法は、プロセッサによる実行のための命令を受信するステップと、復号器が、命令における複数の固定長の接頭辞を識別するステップと、復号器が、命令における複数の可変長の接尾辞を識別するステップとを含み、複数の固定長の接頭辞の各々は、可変長の接尾辞のうちの1つに関連付けられ、方法はさらに、複数の可変長の接尾辞に基づいて命令を実行するステップを含む。
本明細書で説明される方法のうちのいずれかに加えて、複数の固定長の接頭辞の各々は、関連付けられた可変長の接尾辞の長さを識別するデータを含み得る。
本明細書で説明される方法のうちのいずれかに加えて、複数の固定長の接頭辞の各々は、関連付けられた可変長の接尾辞の命令識別子を識別するデータを含み得る。
本明細書で説明される方法のうちのいずれかに加えて、複数の固定長の接頭辞の各々は、実行される場合に可変長の接尾辞によって使用されるデータを含み得る。
本明細書で説明される方法のうちのいずれかは、複数の固定長の接頭辞の各々に関連付けられたオフセット値を、各接頭辞の固定長に基づいて決定するステップをさらに含み得る。
本明細書で説明される方法のうちのいずれかは、複数の可変長の接尾辞の各々に関連付けられたオフセット値を、複数の加算器回路によって生成された結果に基づいて決定するステップをさらに含み得る。
本明細書で説明される方法のうちのいずれかに加えて、複数の加算器回路は、複数の可変長の接尾辞に関連付けられたオフセット値を計算するために、複数の固定長の接頭辞からの接尾辞長さデータを処理し得る。
本明細書で説明される方法のうちのいずれかは、複数の固定長の接頭辞の一部と可変長の接尾辞の一部とを含むブロックを作成するステップをさらに含み得る。
本明細書で説明される方法のうちのいずれかは、複数の固定長の接頭辞の一部と可変長の接尾辞の一部とを含むブロックに基づいて命令を実行するステップをさらに含み得る。
本明細書で説明される方法のうちのいずれかは、実行を必要としない少なくとも1つの固定長の接頭辞を識別するステップと、固定長の接頭辞に関連付けられた少なくとも1つの可変長の接尾辞を識別するステップとをさらに含み得る。命令を実行するステップは、少なくとも1つの固定長の接頭辞と少なくとも1つの可変長の接尾辞とを越えてジャンプするステップを含む。
上述の方法に加えて、装置は、プロセッサと、プロセッサによる実行のための命令を受信するように構成された復号器とを含み、復号器は、命令における複数の固定長の接頭辞を識別することと、命令における複数の可変長の接尾辞を識別することとを含む動作を行ない、複数の固定長の接頭辞の各々は、可変長の接尾辞のうちの1つに関連付けられ、プロセッサは、複数の可変長の接尾辞に基づいて命令を実行する。
本明細書で説明される装置のうちのいずれかに加えて、複数の固定長の接頭辞の各々は、関連付けられた可変長の接尾辞の長さを識別するデータを含み得る。
本明細書で説明される装置のうちのいずれかに加えて、複数の固定長の接頭辞の各々は、関連付けられた可変長の接尾辞の命令識別子を識別するデータを含み得る。
本明細書で説明される装置のうちのいずれかに加えて、複数の固定長の接頭辞の各々は、実行される場合に可変長の接尾辞によって使用されるデータを含み得る。
本明細書で説明される装置のうちのいずれかに加えて、復号器はさらに、複数の固定長の接頭辞の各々に関連付けられたオフセット値を、各接頭辞の固定長に基づいて決定する動作を行なうように構成され得る。
本明細書で説明される装置のうちのいずれかに加えて、装置は複数の加算器回路をさらに含み得る。復号器はさらに、複数の可変長の接尾辞の各々に関連付けられたオフセット値を、複数の加算器回路によって生成された結果に基づいて決定する動作を行なうように構成される。
本明細書で説明される装置のうちのいずれかに加えて、複数の加算器回路は、複数の可変長の接尾辞に関連付けられたオフセット値を計算するために、複数の固定長の接頭辞からの接尾辞長さデータを処理するように構成され得る。
本明細書で説明される装置のうちのいずれかに加えて、復号器は、複数の固定長の接頭辞の一部と可変長の接尾辞の一部とを含むブロックを作成するための動作をさらに行なうように構成され得る。
本明細書で説明される装置のうちのいずれかに加えて、復号器は、複数の固定長の接頭辞の一部と可変長の接尾辞の一部とを含むブロックに基づいて命令を実行する動作をさらに行なうように構成され得る。
本明細書で説明される装置のうちのいずれかに加えて、復号器はさらに、実行を必要としない少なくとも1つの固定長の接頭辞を識別し、固定長の接頭辞に関連付けられた少なくとも1つの可変長の接尾辞を識別する動作を行なうように構成され得る。命令を実行することは、少なくとも1つの固定長の接頭辞と少なくとも1つの可変長の接尾辞とを越えてジャンプすることを含む。
結論
説明されたシステムおよび方法の局面は、特徴および/または方法に特有の文言で説明されてきたが、添付された請求項の主題は、説明された特定の特徴および/または方法に必ずしも限定されない。むしろ、特定の特徴および方法は、説明された手法の例示的な実現化例として開示されており、他の同等の特徴および方法は、添付された請求項の範囲内に該当するよう意図される。また、さまざまな異なる局面が説明されており、説明された各局面は独立してまたは1つ以上の他の説明された局面に関連して実現され得るということが理解されるべきである。
説明されたシステムおよび方法の局面は、特徴および/または方法に特有の文言で説明されてきたが、添付された請求項の主題は、説明された特定の特徴および/または方法に必ずしも限定されない。むしろ、特定の特徴および方法は、説明された手法の例示的な実現化例として開示されており、他の同等の特徴および方法は、添付された請求項の範囲内に該当するよう意図される。また、さまざまな異なる局面が説明されており、説明された各局面は独立してまたは1つ以上の他の説明された局面に関連して実現され得るということが理解されるべきである。
Claims (20)
- 方法であって、
プロセッサによる実行のための命令を受信するステップと、
復号器が、前記命令における複数の固定長の接頭辞を識別するステップと、
前記復号器が、前記命令における複数の可変長の接尾辞を識別するステップとを含み、前記複数の固定長の接頭辞の各々は、前記可変長の接尾辞のうちの1つに関連付けられ、前記方法はさらに、
前記複数の可変長の接尾辞に基づいて前記命令を実行するステップを含む、方法。 - 前記複数の固定長の接頭辞の各々は、関連付けられた前記可変長の接尾辞の長さを識別するデータを含む、請求項1に記載の方法。
- 前記複数の固定長の接頭辞の各々は、関連付けられた前記可変長の接尾辞の命令識別子を識別するデータを含む、請求項1または2に記載の方法。
- 前記複数の固定長の接頭辞の各々は、実行される場合に前記可変長の接尾辞によって使用されるデータを含む、請求項1~3のいずれか1項に記載の方法。
- 前記複数の固定長の接頭辞の各々に関連付けられたオフセット値を、各接頭辞の固定長に基づいて決定するステップをさらに含む、先行する請求項のいずれか1項に記載の方法。
- 前記複数の可変長の接尾辞の各々に関連付けられたオフセット値を、複数の加算器回路によって生成された結果に基づいて決定するステップをさらに含む、先行する請求項のいずれか1項に記載の方法。
- 前記複数の加算器回路は、前記複数の可変長の接尾辞に関連付けられたオフセット値を計算するために、前記複数の固定長の接頭辞からの接尾辞長さデータを処理する、請求項6に記載の方法。
- 前記複数の固定長の接頭辞の一部と前記可変長の接尾辞の一部とを含むブロックを作成するステップをさらに含む、先行する請求項のいずれか1項に記載の方法。
- 前記複数の固定長の接頭辞の一部と前記可変長の接尾辞の一部とを含む前記ブロックに基づいて前記命令を実行するステップをさらに含む、請求項8に記載の方法。
- 実行を必要としない少なくとも1つの固定長の接頭辞を識別するステップと、
前記固定長の接頭辞に関連付けられた少なくとも1つの可変長の接尾辞を識別するステップとをさらに含み、
前記命令を実行するステップは、前記少なくとも1つの固定長の接頭辞と前記少なくとも1つの可変長の接尾辞とを越えてジャンプするステップを含む、先行する請求項のいずれか1項に記載の方法。 - 装置であって、
プロセッサと、
前記プロセッサによる実行のための命令を受信するように構成された復号器とを含み、前記復号器は、
前記命令における複数の固定長の接頭辞を識別することと、
前記命令における複数の可変長の接尾辞を識別することとを含む動作を行なうように構成され、
前記複数の固定長の接頭辞の各々は、前記可変長の接尾辞のうちの1つに関連付けられ、前記プロセッサは、前記複数の可変長の接尾辞に基づいて前記命令を実行する、装置。 - 前記複数の固定長の接頭辞の各々は、関連付けられた前記可変長の接尾辞の長さを識別するデータを含む、請求項11に記載の装置。
- 前記複数の固定長の接頭辞の各々は、関連付けられた前記可変長の接尾辞の命令識別子を識別するデータを含む、請求項11または12に記載の装置。
- 前記複数の固定長の接頭辞の各々は、実行される場合に前記可変長の接尾辞によって使用されるデータを含む、請求項11~13のいずれか1項に記載の装置。
- 前記復号器はさらに、前記複数の固定長の接頭辞の各々に関連付けられたオフセット値を、各接頭辞の固定長に基づいて決定する動作を行なうように構成される、請求項11~14のいずれか1項に記載の装置。
- 複数の加算器回路をさらに含み、
前記復号器はさらに、前記複数の可変長の接尾辞の各々に関連付けられたオフセット値を、複数の加算器回路によって生成された結果に基づいて決定する動作を行なうように構成される、請求項11~15のいずれか1項に記載の装置。 - 前記複数の加算器回路は、前記複数の可変長の接尾辞に関連付けられたオフセット値を計算するために、前記複数の固定長の接頭辞からの接尾辞長さデータを処理するように構成される、請求項16に記載の装置。
- 前記復号器はさらに、前記複数の固定長の接頭辞の一部と前記可変長の接尾辞の一部とを含むブロックを作成するための動作を行なうように構成される、請求項11~17のいずれか1項に記載の装置。
- 前記復号器はさらに、前記複数の固定長の接頭辞の一部と前記可変長の接尾辞の一部とを含む前記ブロックに基づいて前記命令を実行する動作を行なうように構成される、請求項18に記載の装置。
- 前記復号器はさらに、
実行を必要としない少なくとも1つの固定長の接頭辞を識別し、
前記固定長の接頭辞に関連付けられた少なくとも1つの可変長の接尾辞を識別する動作を行なうように構成され、
前記命令を実行することは、前記少なくとも1つの固定長の接頭辞と前記少なくとも1つの可変長の接尾辞とを越えてジャンプすることを含む、請求項11~19のいずれか1項に記載の装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2022/013934 WO2023146519A1 (en) | 2022-01-26 | 2022-01-26 | Parallel decode instruction set computer architecture with variable-length instructions |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024516926A true JP2024516926A (ja) | 2024-04-18 |
Family
ID=80448859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023553373A Pending JP2024516926A (ja) | 2022-01-26 | 2022-01-26 | 可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャ |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP4278256A1 (ja) |
JP (1) | JP2024516926A (ja) |
KR (1) | KR20230129559A (ja) |
CN (1) | CN116917859A (ja) |
WO (1) | WO2023146519A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11593110B2 (en) * | 2021-01-07 | 2023-02-28 | Texas Instruments Incorporated | Instruction packing scheme for VLIW CPU architecture |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6418527B1 (en) * | 1998-10-13 | 2002-07-09 | Motorola, Inc. | Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods |
JP3627725B2 (ja) * | 2002-06-24 | 2005-03-09 | セイコーエプソン株式会社 | 情報処理装置及び電子機器 |
US8898433B2 (en) * | 2012-04-26 | 2014-11-25 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Efficient extraction of execution sets from fetch sets |
-
2022
- 2022-01-26 EP EP22706144.7A patent/EP4278256A1/en active Pending
- 2022-01-26 WO PCT/US2022/013934 patent/WO2023146519A1/en active Application Filing
- 2022-01-26 KR KR1020237028294A patent/KR20230129559A/ko unknown
- 2022-01-26 JP JP2023553373A patent/JP2024516926A/ja active Pending
- 2022-01-26 CN CN202280017048.6A patent/CN116917859A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN116917859A (zh) | 2023-10-20 |
WO2023146519A1 (en) | 2023-08-03 |
KR20230129559A (ko) | 2023-09-08 |
EP4278256A1 (en) | 2023-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10776114B2 (en) | Variable register and immediate field encoding in an instruction set architecture | |
US7617388B2 (en) | Virtual instruction expansion using parameter selector defining logic operation on parameters for template opcode substitution | |
JP4986431B2 (ja) | プロセッサ | |
US9092215B2 (en) | Mapping between registers used by multiple instruction sets | |
TWI479412B (zh) | 操作具有可重新組構之浮點單元的處理器之方法及系統 | |
JP5456167B2 (ja) | マイクロプロセッサおよびマイクロプロセッサ上での精度が改善された積の和計算のための方法 | |
JP2007533006A (ja) | 複合命令形式および複合オペレーション形式を有するプロセッサ | |
JP2005025718A (ja) | Simd整数乗算上位丸めシフト | |
KR20130056905A (ko) | 승산-승산-누산 명령 수행 | |
JPH1091443A (ja) | 情報処理回路、マイクロコンピュータ及び電子機器 | |
US20120233444A1 (en) | Mixed size data processing operation | |
CN111782270B (zh) | 一种数据处理方法及装置、存储介质 | |
CN111124495B (zh) | 一种数据处理方法、解码电路及处理器 | |
JP2024516926A (ja) | 可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャ | |
US7003651B2 (en) | Program counter (PC) relative addressing mode with fast displacement | |
US20200326940A1 (en) | Data loading and storage instruction processing method and device | |
CN112099851A (zh) | 指令执行方法、装置、处理器及电子设备 | |
CN111814093A (zh) | 一种乘累加指令的处理方法和处理装置 | |
JP2002229779A (ja) | 情報処理装置 | |
JP2001142695A (ja) | 記憶場所への定数のロード方法、宛先記憶場所への定数のロード方法、レジスタへの定数のロード方法、符号ビット数の決定方法、2進数の正規化方法、及びコンピュータシステム内の命令 | |
JP3019818B2 (ja) | データ処理方法 | |
US20130290677A1 (en) | Efficient extraction of execution sets from fetch sets | |
CN117591176A (zh) | 处理装置、处理方法以及计算机可读存储介质 | |
US20130305017A1 (en) | Compiled control code parallelization by hardware treatment of data dependency | |
US20120173854A1 (en) | Processor having increased effective physical file size via register mapping |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231012 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20231012 |