IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特表2024-516926可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャ
<>
  • 特表-可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャ 図1
  • 特表-可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャ 図2
  • 特表-可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャ 図3
  • 特表-可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャ 図4
  • 特表-可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャ 図5
  • 特表-可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャ 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-18
(54)【発明の名称】可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャ
(51)【国際特許分類】
   G06F 9/30 20180101AFI20240411BHJP
【FI】
G06F9/30 350F
G06F9/30 310A
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023553373
(86)(22)【出願日】2022-01-26
(85)【翻訳文提出日】2023-10-05
(86)【国際出願番号】 US2022013934
(87)【国際公開番号】W WO2023146519
(87)【国際公開日】2023-08-03
(81)【指定国・地域】
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ベースホア,デレク・ジェームズ
(72)【発明者】
【氏名】サンダース,ニコラス・ジョーダン
【テーマコード(参考)】
5B033
【Fターム(参考)】
5B033AA07
5B033BA01
5B033BE05
5B033DC08
(57)【要約】
この開示は、可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャをサポートするための装置、方法、および手法を説明する。さまざまな局面では、プロセッサが、実行のための命令を受信する。復号器が、命令における複数の固定長の接頭辞を識別し、命令における複数の可変長の接尾辞を識別する。複数の固定長の接頭辞の各々は、可変長の接尾辞のうちの1つに関連付けられ得る。命令は次に、複数の可変長の接尾辞に基づいて実行される。そうすることにより、説明されるシステムおよび方法は、プログラムサイズを減少させ、シリコンチップ上での必要な面積を減少させる態様で実現され得る。
【特許請求の範囲】
【請求項1】
方法であって、
プロセッサによる実行のための命令を受信するステップと、
復号器が、前記命令における複数の固定長の接頭辞を識別するステップと、
前記復号器が、前記命令における複数の可変長の接尾辞を識別するステップとを含み、前記複数の固定長の接頭辞の各々は、前記可変長の接尾辞のうちの1つに関連付けられ、前記方法はさらに、
前記複数の可変長の接尾辞に基づいて前記命令を実行するステップを含む、方法。
【請求項2】
前記複数の固定長の接頭辞の各々は、関連付けられた前記可変長の接尾辞の長さを識別するデータを含む、請求項1に記載の方法。
【請求項3】
前記複数の固定長の接頭辞の各々は、関連付けられた前記可変長の接尾辞の命令識別子を識別するデータを含む、請求項1または2に記載の方法。
【請求項4】
前記複数の固定長の接頭辞の各々は、実行される場合に前記可変長の接尾辞によって使用されるデータを含む、請求項1~3のいずれか1項に記載の方法。
【請求項5】
前記複数の固定長の接頭辞の各々に関連付けられたオフセット値を、各接頭辞の固定長に基づいて決定するステップをさらに含む、先行する請求項のいずれか1項に記載の方法。
【請求項6】
前記複数の可変長の接尾辞の各々に関連付けられたオフセット値を、複数の加算器回路によって生成された結果に基づいて決定するステップをさらに含む、先行する請求項のいずれか1項に記載の方法。
【請求項7】
前記複数の加算器回路は、前記複数の可変長の接尾辞に関連付けられたオフセット値を計算するために、前記複数の固定長の接頭辞からの接尾辞長さデータを処理する、請求項6に記載の方法。
【請求項8】
前記複数の固定長の接頭辞の一部と前記可変長の接尾辞の一部とを含むブロックを作成するステップをさらに含む、先行する請求項のいずれか1項に記載の方法。
【請求項9】
前記複数の固定長の接頭辞の一部と前記可変長の接尾辞の一部とを含む前記ブロックに基づいて前記命令を実行するステップをさらに含む、請求項8に記載の方法。
【請求項10】
実行を必要としない少なくとも1つの固定長の接頭辞を識別するステップと、
前記固定長の接頭辞に関連付けられた少なくとも1つの可変長の接尾辞を識別するステップとをさらに含み、
前記命令を実行するステップは、前記少なくとも1つの固定長の接頭辞と前記少なくとも1つの可変長の接尾辞とを越えてジャンプするステップを含む、先行する請求項のいずれか1項に記載の方法。
【請求項11】
装置であって、
プロセッサと、
前記プロセッサによる実行のための命令を受信するように構成された復号器とを含み、前記復号器は、
前記命令における複数の固定長の接頭辞を識別することと、
前記命令における複数の可変長の接尾辞を識別することとを含む動作を行なうように構成され、
前記複数の固定長の接頭辞の各々は、前記可変長の接尾辞のうちの1つに関連付けられ、前記プロセッサは、前記複数の可変長の接尾辞に基づいて前記命令を実行する、装置。
【請求項12】
前記複数の固定長の接頭辞の各々は、関連付けられた前記可変長の接尾辞の長さを識別するデータを含む、請求項11に記載の装置。
【請求項13】
前記複数の固定長の接頭辞の各々は、関連付けられた前記可変長の接尾辞の命令識別子を識別するデータを含む、請求項11または12に記載の装置。
【請求項14】
前記複数の固定長の接頭辞の各々は、実行される場合に前記可変長の接尾辞によって使用されるデータを含む、請求項11~13のいずれか1項に記載の装置。
【請求項15】
前記復号器はさらに、前記複数の固定長の接頭辞の各々に関連付けられたオフセット値を、各接頭辞の固定長に基づいて決定する動作を行なうように構成される、請求項11~14のいずれか1項に記載の装置。
【請求項16】
複数の加算器回路をさらに含み、
前記復号器はさらに、前記複数の可変長の接尾辞の各々に関連付けられたオフセット値を、複数の加算器回路によって生成された結果に基づいて決定する動作を行なうように構成される、請求項11~15のいずれか1項に記載の装置。
【請求項17】
前記複数の加算器回路は、前記複数の可変長の接尾辞に関連付けられたオフセット値を計算するために、前記複数の固定長の接頭辞からの接尾辞長さデータを処理するように構成される、請求項16に記載の装置。
【請求項18】
前記復号器はさらに、前記複数の固定長の接頭辞の一部と前記可変長の接尾辞の一部とを含むブロックを作成するための動作を行なうように構成される、請求項11~17のいずれか1項に記載の装置。
【請求項19】
前記復号器はさらに、前記複数の固定長の接頭辞の一部と前記可変長の接尾辞の一部とを含む前記ブロックに基づいて前記命令を実行する動作を行なうように構成される、請求項18に記載の装置。
【請求項20】
前記復号器はさらに、
実行を必要としない少なくとも1つの固定長の接頭辞を識別し、
前記固定長の接頭辞に関連付けられた少なくとも1つの可変長の接尾辞を識別する動作を行なうように構成され、
前記命令を実行することは、前記少なくとも1つの固定長の接頭辞と前記少なくとも1つの可変長の接尾辞とを越えてジャンプすることを含む、請求項11~19のいずれか1項に記載の装置。
【発明の詳細な説明】
【背景技術】
【0001】
背景
命令セット符号化は、並列に実行可能な作業量を最大化することとプログラムサイズを最小化することというトレードオフで、中央処理装置(central processing unit:CPU)の性能に影響を与える場合があり、それは、プログラムを実行するために必要とされるリソースを減少させる。いくつかの既存のシステムは、32ビット長の命令といった固定幅の命令を使用する。これらのシステムは、複数の命令を同時にフェッチして復号するために、スーパースカラーコンピュータアーキテクチャをサポートする。これらの命令は次に、並列に実行され得る。しかしながら、このタイプのシステムは、単純な命令を含むすべての命令が同じ長さを有することを必要とする。たとえば、すべての命令が32ビットである場合、数ビットしか必要としない単純な命令さえ、32ビットという固定長まで増加されるであろう。それは、単純な命令を必要以上により長くすることによってプログラムサイズを増加させる。
【0002】
他の既存のシステムは可変長の命令を使用するが、それらは並列に復号することが困難である場合がある。この困難は、第2の命令がどこで始まるかをシステムが判定し得る前に、システムが命令の長さを見出すために第1の命令を復号する必要があるために生じる。この制限を減少させる手法はあるものの、これらの手法は、異なる長さのさまざまな命令を処理するためのキャッシュを実現するために、著しい追加処理を必要とするかもしれず、または、シリコンチップ上でのより大きい面積を必要とするかもしれない。
【発明の概要】
【0003】
概要
この文書は、可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャに関するシステムおよび方法を開示する。いくつかの局面では、ハイブリッド符号化アプローチが、可変長の命令を用いた並列復号を行なう際のリソース浪費を回避するために使用され、固定長の命令の非効率的な符号化を回避する。たとえば、ハイブリッド符号化アプローチは、各命令についての固定長の接頭辞と可変長の接尾辞とを含む命令フォーマットを使用し得る。
【0004】
さまざまな局面では、プロセッサが、実行のための命令ブロックを受信する。復号器が、命令ブロックにおける複数の固定長の接頭辞を識別し、命令における複数の可変長の接尾辞を識別する。複数の固定長の接頭辞の各々は、可変長の接尾辞のうちの1つに関連付けられ得る。命令ブロックは次に、複数の可変長の接尾辞に基づいて実行される。そうすることにより、説明されるシステムおよび方法は、プログラムサイズを減少させ、シリコンチップ上での必要な面積を減少させる態様で実現され得る。
【0005】
この概要は、可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャを実現するための簡略化された概念を紹介するために提供される。これらの簡略化された概念は、以下の詳細な説明においてさらに説明される。この概要は、請求される主題の本質的特徴を識別するよう意図されてはおらず、請求される主題の範囲を決定する際に使用するよう意図されてもいない。
【0006】
図面の簡単な説明
説明されるシステムおよび方法の1つ以上の局面の詳細を以下に説明する。説明および図面における異なる事例での同じ参照番号の使用は、同様の要素を示す。
【図面の簡単な説明】
【0007】
図1】さまざまな命令を実行可能なCPU(Central Processing Unit:中央処理装置)の例を示す図である。
図2】固定長の接頭辞と可変長の接尾辞とを含む命令ブロックの例を示す図である。
図3】接尾辞オフセットを決定可能な並列加算器の例を示す図である。
図4】固定長の接頭辞と可変長の接尾辞とを有する命令ブロックを復号するためのプロセスの例を示す図である。
図5】即値/レジスタ値Xのための復号および実行アプローチ(decoding and execution approach for an immediate/register value X:DEXV)の例を示す図である。
図6】オフセットに基づいてXをジャンプし、復号し、実行すること(jump, decode, and execute X based on an offset:JDEXO)の例を示す図である。
【発明を実施するための形態】
【0008】
詳細な説明
説明されるシステムおよび方法は、可変長の命令を使用する並列復号命令セットコンピュータを提供する。これらの命令は、接頭辞と接尾辞とを含むハイブリッド命令と呼ばれ得る。いくつかの局面では、システムおよび方法は、各ハイブリッド命令を、接頭辞および接尾辞という2つの部分に分離し得る。接頭辞は、関連付けられたかまたは対応する接尾辞の長さを示すデータを含み得る。本明細書で説明されるように、各接頭辞は、命令の接頭辞部分内の固定位置で固定長(たとえば固定数のビット)を有し得る。各接尾辞は可変長を有し得る。このため、各接頭辞は、関連付けられた接尾辞の(たとえばビット単位での)長さを示す。接頭辞の他のセクションはオプションであり、特定の命令セットがどのように定義されるかに依存し得る。たとえば、接頭辞は、命令に関連付けられた命令識別子およびデータを含み得る。
【0009】
説明されるシステムおよび方法のいくつかの局面では、命令の部分は、可変長の命令も提供しつつ、並列に復号され得る。これらのシステムおよび方法は、プログラムサイズを減少させ、シリコンチップ上での必要な面積を減少させる態様で実現され得る。
【0010】
図1は、さまざまな命令を実行可能な中央処理装置(CPU)100の例を示す。CPU100は、復号器102、算術論理演算ユニット(arithmetic logic unit:ALU)104、浮動小数点演算ユニット(floating-point unit:FPU)106、およびキャッシュ108といった、特定のタスクを行なうさまざまなサブコンポーネントを含み、それらはランダムアクセスメモリ(random-access memory:RAM)110または他のメモリデバイスに結合され得る。特定のサブコンポーネントがCPU100内に示されているが、代替的な実施形態は、CPU100内に追加のサブコンポーネントを含んでいてもよく、または、CPU100内により少ないサブコンポーネントを含んでいてもよい。
【0011】
いくつかの局面では、プログラムコードが復号器102によって受信され、復号器102は、受信されたプログラムコードにおける命令を復号する。ALU104は、特定の命令のために必要とされるような整数計算を行なう。整数計算は、整数を用いた数学的計算を伴う。FPU106は、特定の命令のために必要とされるような浮動小数点計算を行なう。浮動小数点とは、小数位を有する数を2進法形式で表わすための手法である。浮動小数点計算は、整数計算とは異なるように取り扱われる。
【0012】
いくつかの局面では、ALU104は、レジスタ内の値にアクセスし、それらの値に対してさまざまな演算(operations)を行なう。特定の実現化例では、CPU100は、互いから独立して動作可能な複数のALU104を含み得る。同様に、FPU106は、レジスタ内の値にアクセスし、それらの値に対してさまざまな演算を行ない得る。いくつかの局面では、CPU100は、互いから独立して動作可能な複数のFPU106を含み得る。キャッシュ108は、RAM110に書き込まれているかまたはRAM110から読み取られているさまざまなデータを格納することができる。
【0013】
図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に続いて、メモリ内に連続して位置する。
【0014】
本明細書で説明されるように、接頭辞206~220は(図2に示されるように)固定長を有し、接尾辞222~236は可変長を有する。いくつかの局面では、接頭辞206~220は16ビットの長さを有し得る。他の例では、接頭辞206~220は任意の長さを有し得る。接尾辞222~236の変化する長さは、図2に示されている。たとえば、接尾辞222は、接尾辞224および230よりも短い長さを有する。図2には8つの接頭辞206~220と8つの接尾辞222~236とが示されているが、他の実現化例は、任意の数の接頭辞と任意の数の接尾辞とを含んでいてもよい。
【0015】
いくつかの局面では、各接頭辞は、特定の接尾辞に関連付けられている。たとえば、図2に示されるように、接頭辞206は接尾辞222に関連付けられ、接頭辞208は接尾辞224に関連付けられ、接頭辞210は接尾辞226に関連付けられている、などとなっている。命令の2つの部分(接頭辞および接尾辞)間の分裂は、第2の部分(接尾辞)におけるデータが、復号器によって格納または解析されることなく、実行ユニットのためにロードされ得る間に、復号器が第1の部分(接頭辞)におけるデータのみをロードすることを可能にする。このアプローチは、小さい固定数のビットを格納する簡略化された復号器の使用をサポートし、それにより、復号器のサイズを減少させ、復号器の消費電力を減少させ、復号器の性能を向上させる。
【0016】
8つの固定長の接頭辞206~220を有する命令ブロック200の構成は、並列に復号され得る。各接頭辞206~220は同じ長さを有するため、メモリ内の各接頭辞についての開始位置を識別することは単純なプロセスである。たとえば、接頭辞206についてのメモリ内の開始位置は、始点202に基づいて知られている。次の接頭辞(208)についてのメモリ内の開始位置は、(ビット単位での)固定長を接頭辞206に追加することによって容易に決定される。このプロセスは、各接頭辞206~220についてのメモリ内の開始位置、および、第1の接尾辞222についてのメモリ内の開始位置を見出すために続く。
【0017】
いくつかの実現化例では、各接頭辞206~220は、命令識別子、関連付けられた接尾辞の長さ、および、命令によって使用されるデータ(たとえば、実行される場合に可変長の接尾辞によって使用されるデータ)といったデータを含む。他の実現化例では、命令によって使用されるデータは、接頭辞の代わりに(または接頭辞に加えて)接尾辞に格納され得る。
【0018】
図3は、接尾辞オフセットを決定可能な並列加算器300の例を示す。いくつかの局面では、各接尾辞の長さは、関連付けられた接頭辞に格納された情報に基づいて知られている。このため、説明されるシステムおよび方法は、並列加算器300の出力に基づいて、メモリ内の各接尾辞の開始位置を速やかに決定することができる。各接頭辞および各接尾辞についてのメモリ内の開始位置が決定された後で、CPU100は、命令を実行するために必要な情報のすべてを有する。図3の例では、例を簡略化するために、並列加算器300は、4つの接頭辞と4つの接尾辞とを有する命令を管理する。
【0019】
いくつかの局面では、図3の例は、メモリ内の各接尾辞の開始位置を決定するために、接尾辞の累積長さを使用する。並列加算器300では、各接尾辞の開始位置を速やかに決定するために、複数の加算が並列に実行される。いくつかの局面では、並列加算器300は(たとえば、接頭辞から復号された)復号された接尾辞サイズ330を受信し、それらはブロック304、306、308、および310として表わされる。図3に示されるように、4つの復号された接尾辞サイズはそれぞれ2バイト、0バイト、4バイト、および8バイトである。
【0020】
いくつかの局面では、破線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は、接尾辞ブロック内の各接尾辞についてのオフセットを表わす。
【0021】
加算器314は、ブロック308の値(4バイト)とブロック310の値(8バイト)とを加算して12バイトの出力を生成し、それは加算器318に通信される。加算器316は、ブロック308の出力(4バイト)を加算器312の出力(2バイト)に加算して6バイトの出力を生成し、それはブロック326に通信される。加算器318は、加算器312の出力(2バイト)を加算器314の出力(12バイト)に加算して14バイトの出力を生成し、それはブロック328に通信される。図3の例は、任意の数の接頭辞と任意の数の接尾辞とを有する命令に適用され得る。いくつかの局面では、追加の加算器が、メモリ内のすべての接尾辞の開始位置を決定するために使用されてもよい。
【0022】
図4は、固定長の接頭辞と可変長の接尾辞とを有する命令ブロックを復号するためのプロセス400の例を示す。プロセス400は1組のブロックとして図示され、それらは、行なわれる動作を特定するものの、それぞれのブロックによって当該動作を行なうために示された順序または組合せに必ずしも限定されない。また、当該動作のうちの1つ以上のいずれも、幅広い追加のおよび/または代替的な方法を提供するために繰り返され、組合され、再編成され、またはリンクされてもよい。手法は、1つのデバイス上で動作する1つのエンティティまたは複数のエンティティによる実行に限定されない。
【0023】
402で、デバイスまたはシステムは、CPUなどのプロセッサによる実行のための命令ブロックを受信する。いくつかの局面では、命令ブロックは、開始メモリ位置、および、場合によっては終了メモリ位置を用いて識別されたメモリの隣接ブロックに格納される。404で、プロセス400は、受信された命令ブロックにおける複数の固定長の接頭辞を識別する。本明細書で説明されるように、複数の固定長の接頭辞の各々のオフセット値は、すべての接頭辞の同じ固定長に起因して、接頭辞間の既知のオフセットに基づいて決定され得る。
【0024】
406で、プロセス400は、命令ブロックにおける複数の可変長の接尾辞を識別する。本明細書で説明されるように、固定長の接頭辞の各々は、可変長の接尾辞のうちの1つに関連付けられている。408で、可変長の接尾辞の各々の長さが、関連付けられた固定長の接頭辞に含まれるデータに基づいて決定される。可変長の接尾辞の長さは、次の接尾辞の開始までのオフセット値を決定するために使用される。410で、プロセス400は、複数の加算器回路を使用して、可変長の接尾辞の各々についてのオフセット値を決定する。本明細書で説明されるように、複数の加算器回路は並列加算演算を行なって、接頭辞における接尾辞長さデータを処理し、次の接尾辞の開始までのオフセット値を決定する。412で、プロセス400は、複数の可変長の接尾辞に基づいて命令を実行する。
【0025】
いくつかの局面では、本明細書で説明されるシステムおよび方法は、ルーティングを容易にするために、分裂レジスタセットを作成してもよい。たとえば、複数のレジスタセットが作成され、異なるALUに関連付けられ得る。単純な例では、2つのレジスタセットが作成され、レジスタセットAおよびレジスタセットBとラベル付けされる。ALUの第1のグループがレジスタセットAにアクセスしてもよく、ALUの第2のグループがレジスタセットBにアクセスしてもよく、ALUの第3のグループがレジスタセットAおよびレジスタセットBにアクセスしてもよい。特定の実現化例では、任意の数のレジスタセットが作成されてもよい。いくつかの局面では、レジスタセットは、マイクロアーキテクチャに関連付けられた物理レジスタのためのレジスタネーミングと並んで実現されてもよい。これは、追加の複雑性をISA(Instruction Set Architecture:命令セットアーキテクチャ)にさらすことなく、減少したルーティングの利点のすべてを提供し得る。
【0026】
CPUはより大きいサイズ(たとえば、より多数のコア)へスケール変更するため、それらは、増加したルーティングに対する需要を満たすために、増加した数の物理レジスタを必要とし得る。上述の複数のレジスタセットの使用は、より大きいCPUによって引き起こされる潜在的なルーティングの問題を緩和し得る。
【0027】
図5は、即値/レジスタ値Xのための復号および実行アプローチ(DEXV)の例を示す。いくつかの局面では、ある命令は復号を必要としない。たとえば、8つの命令のブロックは、分岐または他の状況に起因して、実際に復号される必要がある命令を8つよりも少なく有し得る。空所を埋めるためにNo-Op(無演算)命令がブロックに追加され得るが、そのアプローチは余分なスペースを不必要に占める。本明細書で説明されるように、いくつかの局面では、未使用のブロックを浪費することを回避するために、より小さいブロックサイズが構築される。特定の実現化例では、命令が、次の命令ブロックのフェッチおよび復号活動を修正してもよい。
【0028】
いくつかの局面では、命令の2つの部分間の分裂は、復号器が接頭辞をロードするだけでいいように行なわれ得る。このため、接尾辞におけるデータは、復号器によって格納または解析されることなく、実行ユニットのためにロードされ得る。このアプローチは、小さい固定数のビットを格納する簡略化された復号器の使用をサポートし、それは、復号器の性能を向上させつつ、復号器のサイズおよび消費電力を減少させる。
【0029】
図5の例は、いくつかの命令が復号を必要としない状況を取り扱うための、Xを復号して実行する命令の追加を示す。Xを復号して実行する命令は、命令の先行ブロックにおけるスタンドアロンの命令として、もしくは、分岐またはジャンプ命令の一部として実行される。スタンドアロンの命令は各々、命令の数を特定する即値(たとえば、この値は命令の一部である)を有し得る。ジャンプおよび分岐命令については、即値が使用されてもよいが、それは、ジャンプ位置がたとえば仮想関数である場合には有用ではない。その状況では、(Xの復号および実行における)Xがレジスタ値の引数であり得ること、または、(Xの復号および実行における)Xが接頭辞ブロックサイズからのオフセットに基づき得ること、という2つのオプションがある。
【0030】
特定の例では、各接頭辞が16ビット(2バイト)で、ブロックに8つの接頭辞があると仮定されたい。ジャンプアドレスが、整列された16バイトプラス8バイトである場合、それは、本明細書で説明されるシステムおよび方法が次のブロックにおける4つの命令を復号して実行することができることを意味する。このため、ジャンプターゲットは、そのブロックにおける命令の数に従って整列されたメモリである必要がある。
【0031】
図5の例では、X=4、ブロックサイズが8、および、接頭辞サイズが2バイト(16ビット)である。図5に示されるように、即値500は、接頭辞と接尾辞との間で分裂され得る命令識別子を示す。ブロック504は接尾辞の長さを識別し、ブロック506は次のブロックの長さ(この例では4)を識別する。レジスタ値502は、接尾辞の長さを識別するブロック508とレジスタアドレスを識別するブロック510とを含む命令識別子を示す。図5の例では、ブロック510でアドレス指定されたレジスタは、ブロック512として示される。
【0032】
X=4、ブロックサイズが8、および、接頭辞サイズが2バイト(16ビット)で、図5に示される命令を実行することは、図5の下部に示される命令ブロックの実行をもたらすであろう。その命令ブロックは、4つの接頭辞514、516、518、および520を含む。(530によって示されるように)4つの命令接頭辞が命令ブロックから外される。命令ブロックはまた、4つの接尾辞522、524、526、および528を含む。4つの接尾辞は、接頭辞520の直後に続く。いくつかの局面では、ジャンプ(JDEXV)を含む状況については、(以下に説明される)図6に示される実施形態などのメモリアドレス指定スキームを使用して、アドレスが命令の終わりに添付される。
【0033】
図6は、オフセットに基づいてXをジャンプし、復号し、実行すること(JDEXO)の例を示す。図6に示されるように、命令識別子600は、接頭辞と接尾辞との間で分裂され得る。命令識別子600は、ゼロであり得る接尾辞の長さを識別するブロック602を含む。ブロック604はジャンプターゲットを識別し、それは、レジスタ値または即値を識別するメモリアドレス指定スキームを使用して定義されたメモリアドレスであり得る。いくつかの局面では、メモリアドレスは、命令識別子600において定義された値、または、全体的に定義された値であってもよい。
【0034】
図6に示されるように、614で、ジャンプターゲットアドレスが識別される。この例では、X=4、ブロックサイズが8、および、接頭辞サイズが2バイト(16ビット)である。614で識別されたジャンプターゲットアドレスは8であり、それは4つの接頭辞のサイズである。このため、図6の例は、4つの接頭辞606、608、610、および612を越えてジャンプする。処理は接頭辞616で始まり、接頭辞618、620、および622へと続き、その後に接尾辞ブロック624が続く。
【0035】
上述のシステムおよび方法は、可変長の命令を用いた並列復号命令セットコンピュータのさまざまな例のコンテキストで説明されているが、説明されたシステム、デバイス、装置、および方法は非限定的であり、他のコンテキスト、電子デバイス、コンピューティング構成、プロセッサ構成、コンピューティング環境などに当てはまり得る。
【0036】
一般に、本明細書で説明されるコンポーネント、モジュール、方法、および動作は、ソフトウェア、ファームウェア、ハードウェア(たとえば固定論理回路)、手動処理、またはそれらの任意の組合せを使用して実現され得る。例示的な方法のいくつかの動作は、コンピュータ処理システムに対してローカルおよび/またはリモートのコンピュータ読取可能記憶メモリ上に格納された実行可能命令の一般的コンテキストで説明されてもよく、実現化例は、ソフトウェアアプリケーション、プログラム、関数などを含み得る。それに代えて、またはそれに加えて、本明細書で説明される機能性のうちのいずれも、FPGA、ASIC、ASSP、SoC、CPLD、コプロセッサ、コンテキストハブ、モーション・コプロセッサ、センサ・コプロセッサなどといった1つ以上のハードウェア論理コンポーネントによって、少なくとも部分的に行なわれ得る。
【0037】
以下では、可変長の命令を用いた並列復号命令セットコンピュータアーキテクチャの1つ以上の局面に従って、追加の例が説明される。
【0038】
プロセッサと関連して実現される方法は、プロセッサによる実行のための命令を受信するステップと、復号器が、命令における複数の固定長の接頭辞を識別するステップと、復号器が、命令における複数の可変長の接尾辞を識別するステップとを含み、複数の固定長の接頭辞の各々は、可変長の接尾辞のうちの1つに関連付けられ、方法はさらに、複数の可変長の接尾辞に基づいて命令を実行するステップを含む。
【0039】
本明細書で説明される方法のうちのいずれかに加えて、複数の固定長の接頭辞の各々は、関連付けられた可変長の接尾辞の長さを識別するデータを含み得る。
【0040】
本明細書で説明される方法のうちのいずれかに加えて、複数の固定長の接頭辞の各々は、関連付けられた可変長の接尾辞の命令識別子を識別するデータを含み得る。
【0041】
本明細書で説明される方法のうちのいずれかに加えて、複数の固定長の接頭辞の各々は、実行される場合に可変長の接尾辞によって使用されるデータを含み得る。
【0042】
本明細書で説明される方法のうちのいずれかは、複数の固定長の接頭辞の各々に関連付けられたオフセット値を、各接頭辞の固定長に基づいて決定するステップをさらに含み得る。
【0043】
本明細書で説明される方法のうちのいずれかは、複数の可変長の接尾辞の各々に関連付けられたオフセット値を、複数の加算器回路によって生成された結果に基づいて決定するステップをさらに含み得る。
【0044】
本明細書で説明される方法のうちのいずれかに加えて、複数の加算器回路は、複数の可変長の接尾辞に関連付けられたオフセット値を計算するために、複数の固定長の接頭辞からの接尾辞長さデータを処理し得る。
【0045】
本明細書で説明される方法のうちのいずれかは、複数の固定長の接頭辞の一部と可変長の接尾辞の一部とを含むブロックを作成するステップをさらに含み得る。
【0046】
本明細書で説明される方法のうちのいずれかは、複数の固定長の接頭辞の一部と可変長の接尾辞の一部とを含むブロックに基づいて命令を実行するステップをさらに含み得る。
【0047】
本明細書で説明される方法のうちのいずれかは、実行を必要としない少なくとも1つの固定長の接頭辞を識別するステップと、固定長の接頭辞に関連付けられた少なくとも1つの可変長の接尾辞を識別するステップとをさらに含み得る。命令を実行するステップは、少なくとも1つの固定長の接頭辞と少なくとも1つの可変長の接尾辞とを越えてジャンプするステップを含む。
【0048】
上述の方法に加えて、装置は、プロセッサと、プロセッサによる実行のための命令を受信するように構成された復号器とを含み、復号器は、命令における複数の固定長の接頭辞を識別することと、命令における複数の可変長の接尾辞を識別することとを含む動作を行ない、複数の固定長の接頭辞の各々は、可変長の接尾辞のうちの1つに関連付けられ、プロセッサは、複数の可変長の接尾辞に基づいて命令を実行する。
【0049】
本明細書で説明される装置のうちのいずれかに加えて、複数の固定長の接頭辞の各々は、関連付けられた可変長の接尾辞の長さを識別するデータを含み得る。
【0050】
本明細書で説明される装置のうちのいずれかに加えて、複数の固定長の接頭辞の各々は、関連付けられた可変長の接尾辞の命令識別子を識別するデータを含み得る。
【0051】
本明細書で説明される装置のうちのいずれかに加えて、複数の固定長の接頭辞の各々は、実行される場合に可変長の接尾辞によって使用されるデータを含み得る。
【0052】
本明細書で説明される装置のうちのいずれかに加えて、復号器はさらに、複数の固定長の接頭辞の各々に関連付けられたオフセット値を、各接頭辞の固定長に基づいて決定する動作を行なうように構成され得る。
【0053】
本明細書で説明される装置のうちのいずれかに加えて、装置は複数の加算器回路をさらに含み得る。復号器はさらに、複数の可変長の接尾辞の各々に関連付けられたオフセット値を、複数の加算器回路によって生成された結果に基づいて決定する動作を行なうように構成される。
【0054】
本明細書で説明される装置のうちのいずれかに加えて、複数の加算器回路は、複数の可変長の接尾辞に関連付けられたオフセット値を計算するために、複数の固定長の接頭辞からの接尾辞長さデータを処理するように構成され得る。
【0055】
本明細書で説明される装置のうちのいずれかに加えて、復号器は、複数の固定長の接頭辞の一部と可変長の接尾辞の一部とを含むブロックを作成するための動作をさらに行なうように構成され得る。
【0056】
本明細書で説明される装置のうちのいずれかに加えて、復号器は、複数の固定長の接頭辞の一部と可変長の接尾辞の一部とを含むブロックに基づいて命令を実行する動作をさらに行なうように構成され得る。
【0057】
本明細書で説明される装置のうちのいずれかに加えて、復号器はさらに、実行を必要としない少なくとも1つの固定長の接頭辞を識別し、固定長の接頭辞に関連付けられた少なくとも1つの可変長の接尾辞を識別する動作を行なうように構成され得る。命令を実行することは、少なくとも1つの固定長の接頭辞と少なくとも1つの可変長の接尾辞とを越えてジャンプすることを含む。
【0058】
結論
説明されたシステムおよび方法の局面は、特徴および/または方法に特有の文言で説明されてきたが、添付された請求項の主題は、説明された特定の特徴および/または方法に必ずしも限定されない。むしろ、特定の特徴および方法は、説明された手法の例示的な実現化例として開示されており、他の同等の特徴および方法は、添付された請求項の範囲内に該当するよう意図される。また、さまざまな異なる局面が説明されており、説明された各局面は独立してまたは1つ以上の他の説明された局面に関連して実現され得るということが理解されるべきである。
図1
図2
図3
図4
図5
図6
【手続補正書】
【提出日】2023-10-12
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
方法であって、
プロセッサによる実行のための命令を受信するステップと、
復号器が、前記命令における複数の固定長の接頭辞を識別するステップと、
前記復号器が、前記命令における複数の可変長の接尾辞を識別するステップとを含み、前記複数の固定長の接頭辞の各々は、前記可変長の接尾辞のうちの1つに関連付けられ、前記方法はさらに、
前記複数の可変長の接尾辞に基づいて前記命令を実行するステップを含む、方法。
【請求項2】
前記複数の固定長の接頭辞の各々は、関連付けられた前記可変長の接尾辞の長さを識別するデータを含む、請求項1に記載の方法。
【請求項3】
前記複数の固定長の接頭辞の各々は、関連付けられた前記可変長の接尾辞の命令識別子を識別するデータを含む、請求項1または2に記載の方法。
【請求項4】
前記複数の固定長の接頭辞の各々は、実行される場合に前記可変長の接尾辞によって使用されるデータを含む、請求項1~3のいずれか1項に記載の方法。
【請求項5】
前記複数の固定長の接頭辞の各々に関連付けられたオフセット値を、各接頭辞の固定長に基づいて決定するステップをさらに含む、請求項1~4のいずれか1項に記載の方法。
【請求項6】
前記複数の可変長の接尾辞の各々に関連付けられたオフセット値を、複数の加算器回路によって生成された結果に基づいて決定するステップをさらに含む、請求項1~5のいずれか1項に記載の方法。
【請求項7】
前記複数の加算器回路は、前記複数の可変長の接尾辞に関連付けられたオフセット値を計算するために、前記複数の固定長の接頭辞からの接尾辞長さデータを処理する、請求項6に記載の方法。
【請求項8】
前記複数の固定長の接頭辞の一部と前記可変長の接尾辞の一部とを含むブロックを作成するステップをさらに含む、請求項1~7のいずれか1項に記載の方法。
【請求項9】
前記複数の固定長の接頭辞の一部と前記可変長の接尾辞の一部とを含む前記ブロックに基づいて前記命令を実行するステップをさらに含む、請求項8に記載の方法。
【請求項10】
実行を必要としない少なくとも1つの固定長の接頭辞を識別するステップと、
前記固定長の接頭辞に関連付けられた少なくとも1つの可変長の接尾辞を識別するステップとをさらに含み、
前記命令を実行するステップは、前記少なくとも1つの固定長の接頭辞と前記少なくとも1つの可変長の接尾辞とを越えてジャンプするステップを含む、請求項1~9のいずれか1項に記載の方法。
【請求項11】
装置であって、
プロセッサと、
前記プロセッサによる実行のための命令を受信するように構成された復号器とを含み、前記復号器は、
前記命令における複数の固定長の接頭辞を識別することと、
前記命令における複数の可変長の接尾辞を識別することとを含む動作を行なうように構成され、
前記複数の固定長の接頭辞の各々は、前記可変長の接尾辞のうちの1つに関連付けられ、前記プロセッサは、前記複数の可変長の接尾辞に基づいて前記命令を実行する、装置。
【請求項12】
前記複数の固定長の接頭辞の各々は、関連付けられた前記可変長の接尾辞の長さを識別するデータを含む、請求項11に記載の装置。
【請求項13】
前記複数の固定長の接頭辞の各々は、関連付けられた前記可変長の接尾辞の命令識別子を識別するデータを含む、請求項11または12に記載の装置。
【請求項14】
前記複数の固定長の接頭辞の各々は、実行される場合に前記可変長の接尾辞によって使用されるデータを含む、請求項11~13のいずれか1項に記載の装置。
【請求項15】
前記復号器はさらに、前記複数の固定長の接頭辞の各々に関連付けられたオフセット値を、各接頭辞の固定長に基づいて決定する動作を行なうように構成される、請求項11~14のいずれか1項に記載の装置。
【請求項16】
複数の加算器回路をさらに含み、
前記復号器はさらに、前記複数の可変長の接尾辞の各々に関連付けられたオフセット値を、前記複数の加算器回路によって生成された結果に基づいて決定する動作を行なうように構成される、請求項11~15のいずれか1項に記載の装置。
【請求項17】
前記複数の加算器回路は、前記複数の可変長の接尾辞に関連付けられたオフセット値を計算するために、前記複数の固定長の接頭辞からの接尾辞長さデータを処理するように構成される、請求項16に記載の装置。
【請求項18】
前記復号器はさらに、前記複数の固定長の接頭辞の一部と前記可変長の接尾辞の一部とを含むブロックを作成するための動作を行なうように構成される、請求項11~17のいずれか1項に記載の装置。
【請求項19】
前記復号器はさらに、前記複数の固定長の接頭辞の一部と前記可変長の接尾辞の一部とを含む前記ブロックに基づいて前記命令を実行する動作を行なうように構成される、請求項18に記載の装置。
【請求項20】
前記復号器はさらに、
実行を必要としない少なくとも1つの固定長の接頭辞を識別し、
前記固定長の接頭辞に関連付けられた少なくとも1つの可変長の接尾辞を識別する動作を行なうように構成され、
前記命令を実行することは、前記少なくとも1つの固定長の接頭辞と前記少なくとも1つの可変長の接尾辞とを越えてジャンプすることを含む、請求項11~19のいずれか1項に記載の装置。
【国際調査報告】