JP3676411B2 - レジスタファイル装置及びレジスタファイルアクセス方法 - Google Patents
レジスタファイル装置及びレジスタファイルアクセス方法 Download PDFInfo
- Publication number
- JP3676411B2 JP3676411B2 JP02582195A JP2582195A JP3676411B2 JP 3676411 B2 JP3676411 B2 JP 3676411B2 JP 02582195 A JP02582195 A JP 02582195A JP 2582195 A JP2582195 A JP 2582195A JP 3676411 B2 JP3676411 B2 JP 3676411B2
- Authority
- JP
- Japan
- Prior art keywords
- register
- window
- registers
- write
- logical
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
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)
Description
【産業上の利用分野】
本発明はコンピュータシステムに関し、特に、マイクロプロセッサにおいてレジスタファイルをアクセスするための論理演算装置に関わる装置及び方法に関する。
【0002】
【従来の技術】
マイクロプロセッサチップは論理演算装置(ALU)と、1つのレジスタファイルとして編成される複数のレジスタとを含む。演算命令、論理命令又はロード/ストア命令などのいくつかの命令によって、ALUはレジスタファイル中の1つ又は複数のレジスタからデータを読取り、その命令により定義されている演算を実行し、次にその結果をレジスタファイル中の1つ又は複数の指定のレジスタにライトバックする。このシーケンスは実質的には命令ごとに起こるので、システムの総合的なデータ処理速度を考える上でレジスタファイルのアクセス時間は最も重要な問題である。
【0003】
図1を参照すると、従来の技術によるレジスタアクセス回路のブロック線図が示されている。レジスタアクセスブロック線図300はALU310と、レジスタメモリアレイ330と、仮想/物理アドレス変換器320と、読取りデータ経路340と、書込みデータ経路350とを含む。読取りデータ経路340と書込みデータ経路350はALU310と、レジスタメモリアレイ330とにそれぞれ結合している。
【0004】
従来の技術の1例によれば、レジスタメモリアレイ330は本発明の譲受人であるSun Microsystems,Inc.が開発したSPARCマイクロプロセッサのシリーズの中で使用されているようなウィンドウ形レジスタアレイである。SPARCシリーズの様々なマイクロプロセッサには、40個から520個までのレジスタがある。全てのSPARCマイクロプロセッサは共通のレジスタファイル編成を共用している。全レジスタのうち8つは大域レジスタとして専用のレジスタである。残るレジスタは各16個よりなるレジスタセットにグループ分けされている。各セットに含まれる16個のレジスタのうち8つはLOCALレジスタとして指定され、8つはOUTレジスタとして指定されている。レジスタセットはさらに複数のウィンドウに編成されている。各ウィンドウは8つの大域レジスタと、8つのINレジスタと、8つのLOCALレジスタと、8つのOUTレジスタとを含む。ウィンドウは、1つのウィンドウのOUTレジスタが隣接ウィンドウのINレジスタと物理的に同一のレジスタであるように配列されている。2つの隣接ウィンドウが共用する共通レジスタは異なる仮想アドレスを有するが、実際にはレジスタメモリアレイ中の物理アドレスは共通である。さらに、どのウィンドウも同じ組の大域レジスタを共用する。従って、物理レジスタの数は仮想レジスタの数より少なくなる。この件に関する詳細については、カリフォルニア州メンロパークのSPARC Internationalより入手可能であるSPARC Architecture Monualを参照。
【0005】
レジスタメモリアレイ330を特に参照すると、個々のレジスタ20(1) から20(m) はマイクロプロセッサチップにトップダウン方式でSRAM配列されるのが典型的である。各レジスタ20(1) から20(m) は(n)ビット幅であり、(n)個のメモリセルを含む。ビット線22(1)〜22(n)はメモリアレイの高さに沿って伸びている。各レジスタ20(1) から20(m) からの1つのセルは特定のビット線に結合しており、その特定のビット線を同様の位置にあるメモリセルと互いに共用し合う。すなわち、たとえば、各レジスタ20(1) から20(m) からの第5のメモリセルはビット線22(5) に結合しているのである。
【0006】
簡潔を期するため、レジスタメモリアレイ330は図1には1つの読取りポートと、1つの書込みポートのみを有するものとして示されている。ところが、典型的には、LAU310は命令ごとに2つ(以上)のデータ語をレジスタメモリアレイ330から読取る。ALU310がスーパスカラプロセッサである場合、ALUは一度に2つ以上の命令を実行することが可能であるので、この能力を支援するために、レジスタメモリアレイ330は典型的にはいくつかの読取りポートと、いくつかの書込みポートとを有する。さらに、ALU310がパイプライン化されている場合、すなわち、同時にいくつかの命令の異なる部分について動作する場合には、いずれかの任意の時点で、ALU310が読取っているレジスタのウィンドウはALU310が書込んでいるレジスタの同じウィンドウではないということにもなるであろう。従って、パイプライン化プロセッサにおけるいずれかの任意の時点で、レジスタメモリアレイ330からの実行パイプラインの開始時に1つの命令に関わる入力を読取るための現在ウィンドウポインタは、メモリアレイ330への実行パイプラインの終了時に命令の結果を書込むための現在ウィンドウとは異なる値を有することもありうるだろう。
【0007】
一つの実施例では、ウィンドウ0からウィンドウ15とアドレス指定された16個のウィンドウがある。各々のウィンドウは、32個のレジスタをアドレス指定できる。レジスタはプログラマにより、現在ウィンドウとは無関係である仮想レジスタ番号を使用してアドレス指定される。この実施例においては、8つの大域レジスタをレジスタ0からレジスタ7としてアドレス指定する。同様に、8つのOUTレジスタをレジスタ8からレジスタ15としてアドレス指定し、8つのLOCALレジスタをレジスタ16からレジスタ23としてアドレス指定し、8つのINレジスタはレジスタ24からレジスタ31としてアドレス指定する。この実施例のウィンドウは16個であり、また、各々のウィンドウは32個のレジスタをアドレス指定することができるので、メモリアレイ330が512個のレジスタを有していなければならないことは明白であろう。しかしながら、レジスタは重複使用されるため、メモリアレイ330にある物理レジスタの数は512個より少ない。この例では、8つの大域レジスタに加えて、ウィンドウ16個分のレジスタ(ウィンドウごとに8つのLOCALレジスタと、8つのIN/OUTレジスタがある)があるので、メモリアレイ330の中の物理レジスタの総数は実際には264である。
【0008】
仮想/物理変換器320は、プログラマが指定した仮想レジスタ番号からメモリアレイ330中の物理レジスタ番号への変換を実行する。現在ウィンドウ番号(すなわち、ウィンドウ0から15)と、そのウィンドウの中における仮想レジスタ番号(すなわち、仮想レジスタ0から31)とを与えられると、変換器論理320は対応する物理レジスタ番号(すなわち、物理レジスタ0から264)を与える。尚、16個のウィンドウがあるので、1つのウィンドウを4ビット数によって指定できる(24 =16)ことに注意する。さらに、1つのウィンドウの中には32個のレジスタがあるので、ウィンドウ内の特定の1つのレジスタを5ビット仮想レジスタ番号によって指定できる(25 =32)。また、メモリアレイ330には264個の物理レジスタがあるので、1つの物理レジスタを9ビットの物理レジスタ番号によって指定できる(29 =512,512>264)。
【0009】
一実施例では、仮想/物理変換器320は変換を実行するためにステアリング論理と、加算器とを使用する。この実施例においては、メモリアレイ330は初めの8つのレジスタが大域レジスタであるような構造をもつ。そこで、メモリアレイ330の次の256個のレジスタは特定ウィンドウ所属レジスタとなる。それらの特定ウィンドウ所属レジスタはメモリアレイ330の中で昇順ウィンドウ番号によってグループ化されると共に、各ウィンドウの中では昇順仮想レジスタ番号によってさらにグループ化される。この構成では、変換すべき仮想レジスタ番号が大域レジスタの仮想レジスタ番号(すなわち、0から7)であるならば、変換論理320が与える物理レジスタ番号は仮想レジスタ番号と同じになる。これに対し、変換すべき仮想レジスタ番号が特定ウィンドウ所属レジスタの仮想レジスタ番号である場合には、変換器320が実行する仮想/物理レジスタ変換計算はより複雑になる。まず、変換器320は現在ウィンドウポインタを左へ場所4つだけシフトし、次に、シフト後の現在ウィンドウポインタを変換すべき仮想レジスタ番号に加算する。最後に、変換器320はその結果の和を取り上げ、モジュロ256演算を実行して、変換すべき仮想レジスタ番号に対応する物理レジスタ番号を得る。尚、256はウィンドウの数(16)に各ウィンドウ中の実際の物理レジスタの数(16)を乗算した数である。ウィンドウの数又は1つのウィンドウの中のレジスタの数が異なる実施例においては、モジュロ演算の基底を相応して調整することになるであろう。
【0010】
レジスタメモリアレイ330から1つのレジスタを読取るために、ALU310は読取るべきレジスタのウィンドウと、読取るべきレジスタの仮想レジスタ番号とを現在ウィンドウポインタ(読取り)バス365及び仮想レジスタ番号(読取り)バス360を各々使用して、変換器論理320に指定する。次に、変換器論理320は読取るべきレジスタのウィンドウと、読取るべきレジスタの仮想レジスタ番号とを物理レジスタ番号に変換し、この物理レジスタ番号を物理レジスタ番号(読取り)バス370を使用してメモリアレイ330に指定する。読取るべき物理レジスタ番号を受けると、アクセスすべきレジスタの個々のメモリセルのデータ内容が各々のビット線22(1)から22(n)に置かれ、読取りデータ経路340によってALU310へ転送される。
【0011】
同様に、メモリアレイ330の1つのレジスタに書込むときには、ALUである機能ユニット310は現在ウィンドウポインタ(書込み)バス385及び仮想レジスタ番号(書込み)バス380を使用して、書込むべきウィンドウと、書込むべきレジスタの仮想レジスタ番号とを変換器論理320にそれぞれ指定する。次に、変換器論理320は書込むべきウィンドウとレジスタの仮想レジスタ番号を物理レジスタ番号に変換し、このレジスタを物理レジスタ番号(書込み)バス390を使用してメモリアレイ330に指定する。書込むべきレジスタの物理レジスタ番号を受けると、メモリアレイ330は機能ユニット310から書込みデータ経路350を介してデータの語を受ける。書込むべきこのデータの語をビット線22(1)から22(n)に置いて、次に、指定のレジスタのメモリセルに記憶させる。
【0012】
従来の技術のレジスタファイルアクセス構成に関連して、いくつかの問題がある。仮想/物理変換の時間とレジスタメモリアレイ330のアクセス時間は非常に長い。これら2つの要因はコンピュータシステムのプロセッサ処理能力を著しくそこなわせる。
【0013】
レジスタを読取るとき又はレジスタに書込むとき、変換器論理320が現在ウィンドウポインタと仮想レジスタ番号を物理レジスタ番号に変換している間に必ず遅延が起こる。典型的な命令は読取るべき2つのレジスタと、書込むべき1つのレジスタとを指定するので、典型的には命令ごとに3回の変換が要求され、各々の変換はそれ独自の遅延を導入する。
【0014】
レジスタメモリアレイのビット線22(1)から22(n)は非常に長く、各ビット線に結合するセルの数の関係上、その容量性負荷は大きい。ビット線の容量性負荷が大きいほど、特定のレジスタから読取るのに要する時間又は特定のレジスタに書込むのに要する時間は長くなる。さらに、ビット線の容量性負荷が大きいほど、書込み動作中にレジスタへデータを駆動するために要求されるドライバは大きくなり、また、読取り動作中にレジスタからのデータ出力を感知するために要求されるセンス増幅器は大きくなる。
【0015】
【発明が解決しようとする課題】
アクセス時間の短い新規なレジスタウィンドウファイル方法とその装置を提供するのが本発明の課題である。
【0016】
【課題を解決するための手段】
レジスタファイルは複数のレジスタから形成されている。それらのレジスタは複数の論理ウィンドウにグループ化されている。ウィンドウ選択論理は論理ウィンドウの中から選択し、それにより、任意の時点における選択された論理ウィンドウへのアクセスを制限する。
【0017】
アクセスを一度に1つのウィンドウにのみ限定するので、個々のレジスタの仮想レジスタ番号を指定することにより、そのレジスタを選択できる。従って、レジスタをアクセスするときに仮想レジスタ番号から物理レジスタ番号に変換する必要はない。すなわち、従来の技術の仮想レジスタ番号/物理レジスタ番号変換論理は不要になるのである。従って、以前は変換論理が占めていた集積回路チップ上の領域は必要ではなくなる。さらに、変換論理により命令ごとに導入される変換遅延も排除される。
【0018】
その上、各レジスタはそのウィンドウのその他のレジスタと読取り線及び書込み線を共用するだけである。従って、レジスタファイルの各ビット線と関連する容量性負荷は、各々のレジスタがレジスタファイルの1つおきのレジスタとビット線を共用していた従来の技術の容量性負荷より著しく小さい。単一のウィンドウのレジスタの中からのみ選択を実行するので、レジスタファイルにデータを書込むとき及びレジスタファイルからデータを読取るときにそれぞれ必要とされるドライバとセンス増幅器はより小型で、それほど強力でないもので良い。
本発明の方法及び装置の目的、特徴及び利点は以下の本発明の詳細な説明から明白になるであろう。
【0019】
【実施例】
任意の時点で唯一つのウィンドウのレジスタのみを読取り可能とし且つ任意の時点で唯一つのウィンドウのレジスタのみに書込み可能にするという利点をもつウィンドウ形レジスタファイルを実現する方法及び装置を開示する。このようにすると、仮想索引番号を使用してレジスタを直接にアドレス指定することができ、各メモリセルは相対的に短い読取り線と書込み線を有する。従って、レジスタファイルのレジスタに対するアクセスは従来の技術の類似のサイズのレジスタファイルの場合より速い。
【0020】
以下の説明中、本発明を完全に理解させるために、説明の便宜上、特定の数、材料及び構成を挙げる。しかしながら、それらの特定の詳細がなくとも本発明を実施できることは当業者には明白であろう。別の場合には、本発明を無用にわかりにくくしないために、周知のシステムを概略図又はブロック線図の形態で示す。
【0021】
図2は、レジスタのアレイから一度に唯一つのウィンドウのレジスタだけをアクセスするためのセレクタの使用を示している。図2では、大域レジスタ405と、非大域レジスタ(420,425,430,435,480,485,490,495など)とは一体となってウィンドウ形レジスタファイルを形成する。簡潔を期するため、図2に示す実施例においては、ウィンドウ形レジスタファイルは1つの読取りポートと、1つの書込みポートのみを有する。
【0022】
ウィンドウ形レジスタファイルのレジスタは、物理的には、大域レジスタ405がまとまって位置し且つ非大域レジスタもまとまって位置しているようにグループ化されている。さらに、非大域レジスタは物理的にはウィンドウによってグループ化されており、各々のウィンドウの中では、1つのウィンドウのLOCALレジスタがまとまって位置し且つそのウィンドウのOUTレジスタもまとまって位置しているようにグループ化されている。さらに、ウィンドウ0を除いて、ウィンドウのLOCALレジスタは物理的にはそのウィンドウのOUTレジスタと、論理的に先行するウィンドウのOUTレジスタとの間に「はさまって」いる。
【0023】
先に述べた通り、1つのウィンドウのINレジスタは物理的には論理的に先行するウィンドウのOUTレジスタと同じである。従って、図2の構成では、各ウィンドウのINレジスタと、LOCALレジスタと、OUTレジスタとは、ウィンドウ0を除いて、物理的にはまとまってグループ化されている。たとえば、ウィンドウ0のOUTレジスタ425はウィンドウ1のINレジスタである。そこで、この図にはINレジスタは示されていない。従って、ウィンドウ1の非大域レジスタはウィンドウ0のOUTレジスタ425(すなわち、ウィンドウ1のINレジスタ)と、ウィンドウ1のLOCALレジスタ430と、ウィンドウ1のOUTレジスタ435とにより形成されることになる。
【0024】
ウィンドウ0が例外になる原因は、ウィンドウが論理的には円形の構成を成して配列されているが、物理的には矩形アレイとして表現されることである。従って、ウィンドウ0は論理的にはウィンドウ15に隣接しているのであるが、それらのウィンドウの間には物理的不連続が存在している。そのため、ウィンドウ15のOUTレジスタ495は実際にはウィンドウ0のINレジスタであるが、ウィンドウ15のOUTレジスタ495を物理的にウィンドウ0のLOCALレジスタ420と、ウィンドウ15のLOCALレジスタ490の双方に隣接して配置することはできない。
【0025】
図2は、ウィンドウ16個分のレジスタがあり且つ各ウィンドウのレジスタは8つの大域レジスタと、8つのLOCALレジスタと、8つのINレジスタと、8つのOUTレジスタとにより形成されているような実施例を提示している。別の実施例においては、ウィンドウの数と、1つのウィンドウの中の各々の型のレジスタの数は図2に提示した数とは異なる。実際、代替実施例の1つでは、大域レジスタは存在せず、別の実施例にはLOCALレジスタがなく、さらに別の実施例にはIN/OUTレジスタがない。さらに、交代する大域レジスタの組があり、非大域レジスタのウィンドウの中から選択するために使用される方式に類似する方式で特定の1組の大域レジスタを選択するような実施例がある。また、その時点で選択されていない全てのウィンドウのレジスタセットをエネルギー節約用パワーダウンモードに置く実施例もある。しかしながら、それら全ての実施例を統合する概念がある。この概念は、任意の時点でアクセスできるレジスタの数を利用可能なレジスタの総数のうちの1サブセットに制限することにより個々のレジスタに対するアクセスをスピードアップする能力である。
【0026】
図2のようなレジスタファイルはいくつかのレジスタのウィンドウを含んでいるが、任意の時点で読取られるレジスタのウィンドウは唯一つ(すなわち、現在読取りウィンドウ)であり、任意の時点で書込まれるレジスタのウィンドウも唯一つ(すなわち、現在書込みウィンドウ)である。任意の時点でアクセスできるレジスタの数は少なくなっており、また、任意の時点でアクセスできるレジスタの大部分は物理的にまとまってグループ化されているので、レジスタをアクセスするために使用される線路を短縮することができ、従って、従来の構成で見られたより容量性負荷を少なくすることができる。そのため、本発明のレジスタファイルのレジスタは同じ数のレジスタを有する従来の技術のレジスタファイルのレジスタと比較してより高速でアクセス可能である。
【0027】
さらに、本発明では、読取り中であるレジスタは現在読取りウィンドウに属し、書込み中であるレジスタは現在書込みウィンドウに属している。従って、現在読取りウィンドウと現在書込みウィンドウをウィンドウ選択論理に対して暗示することにより、1回のアクセスで指定される物理レジスタ番号をそのアクセスを発生させる命令において指定される仮想レジスタ番号と同一にすることができる。その結果、ウィンドウ及び仮想レジスタの番号を物理レジスタ番号に変換する過程が省略されるので、レジスタへのアクセスは従来の技術と比べて速くなる。
【0028】
図2においては、ウィンドウ形レジスタファイルに書込むべきデータ語はDATA WORD IN510としてバス515を介して書込みレジスタマルチプレクサ(mux)525に提示される。ウィンドウレジスタmux525の各々の入力端子と出力端子は、1語幅である。書込みレジスタmux525は、1つの入力端子と、1つのウィンドウの中に存在している論理レジスタの数と同じ数の出力端子とを有するマルチプレクサである。制御バスにアサートされた信号−仮想レジスタ番号(書込み)520は書込みレジスタmux525の出力を選択する。各ウィンドウが32個の論理レジスタを有する実施例では、仮想レジスタ番号(書込み)520は書込むべきレジスタの5ビット仮想レジスタ番号を書込みレジスタmux525に提供する5ビット(25 =32)制御線である。この実施例において、大域レジスタが8つある場合、仮想レジスタ番号(書込み)制御線520にアサートされる0から7の値はDATA WORD IN510を出力バス529を介して大域レジスタ405のうちの適切なレジスタに提示させる。ところが、仮想レジスタ番号(書込み)制御線520に8から31の値がアサートされた場合には、DATA WORD IN510は24個の入力端子のうちの適切な1つの入力端子を介して書込みウィンドウmux535に提示される。
【0029】
書込みウィンドウmux535は1つのウィンドウの非大域レジスタごとに1つずつの入力端子を有する。概念の上では、書込みウィンドウmux535の入力端子ごとに、ウィンドウの数と同じ数の出力端子が存在する。すなわち、ウィンドウが16個あり且つ各々のウィンドウがいずれも24個の非大域レジスタを有するような実施例では、書込みウィンドウmux535は24個の入力端子と、概念上は384個(ウィンドウの数16×ウィンドウごとの非大域レジスタの数24=384)の出力端子とを有することになる。しかしながら、実際には、1つのウィンドウのINレジスタの数は物理的には論理的に先行しているウィンドウのOUTレジスタの数と同じであるので、それらの出力端子を組合わせることができる。従って、1つのウィンドウの中に24個の非大域レジスタがあり且つそれらのレジスタが8つのINレジスタと、8つのLOCALレジスタと、8つのOUTレジスタとに分割されているような実施例においては、書込みウィンドウmux535は実際には256個(ウィンドウの数16×ウィンドウごとの(LOCALレジスタの数8+IN/OUTレジスタの数8)=256)の出力端子しかもたない。
【0030】
制御信号、すなわち現在ウィンドウポインタ(書込み)530は、書込みウィンドウmux535に対する各々の入力が現在書込みウィンドウについて適切な出力端子へチャネリングされるように書込みウィンドウmux535を制御する。すなわち、16個のウィンドウがある先の実施例では、現在ウィンドウポインタ(書込み)530はそれら16個のウィンドウの中から選択するために使用される4ビット信号となる。たとえば、現在書込みウィンドウがウィンドウ3である場合、書込みウィンドウmux535はその入力のうち8つをウィンドウ3の8つのOUTレジスタへチャネリングし、入力のうち8つをウィンドウ3の8つのLOCALレジスタへチャネリングすると共に、入力のうち8つを論理的に先行しているウィンドウ(すなわち、ウィンドウ2)のOUTレジスタへチャネリングする。次に、論理的に先行するウィンドウの8つのOUTレジスタを現在書込みウィンドウの8つのINレジスタとしてアドレス指定する。現在書込みウィンドウがSAVE指令の実行によって論理的に次に続くウィンドウ(すなわち、ウィンドウ4)に変更されるか、あるいは、RESTORE指令の実行によって論理的に先行するウィンドウ(すなわち、ウィンドウ2)に変更されるまで、書込みウィンドウmux535はウィンドウ3にセットされたままである。
【0031】
読取り時のウィンドウ形レジスタファイルのレジスタからの選択は書込み時の選択に類似しているが、書込み時に対しては鏡像関係となっている。制御信号、すなわち現在ウィンドウポインタ(読取り)560は、読取りウィンドウmux565に対して、制御信号、すなわち現在ウィンドウポインタ(書込み)530が書込みウィンドウmux535に対して示すのと同様の制御機能を有する。読取りウィンドウmux565は書込みウィンドウmux535の出力端子540と同じ数の入力端子550を有する。さらに、読取りウィンドウmux565は書込みウィンドウmux535の入力端子528と同じ数の出力端子567を有する。すなわち、書込みウィンドウmux535は入力を現在書込みウィンドウに基づいて非大域レジスタ410のいくつかのレジスタの中の1つへファンアウトするために使用され、読取りウィンドウmux565は現在読取りウィンドウに基づいて非大域レジスタ410のいくつかのレジスタの中の1つから出力を選択するために使用されるのである。
【0032】
制御信号、すなわち仮想レジスタ番号(読取り)570は読取りレジスタmux575に対して、制御信号、すなわち仮想レジスタ番号(書込み)520が書込みレジスタmux525に対して示すのと同様の制御機能を有する。読取りレジスタmux575は書込みレジスタmux525の出力端子(529及び528)と同じ数の入力端子(567及び555)を有する。さらに、読取りレジスタmux575は単一の出力端子580を有し、書込みレジスタmux525は単一の入力端子515を有する。すなわち、書込みレジスタmux525は単一の入力を仮想レジスタ番号(書込み)520に基づいて1つのウィンドウのいくつかのレジスタの中の1つへファンアウトするために使用され、読取りレジスタmux575は仮想レジスタ番号(読取り)570に基づいてウィンドウのいくつかのレジスタの中の1つから単一の出力を選択するために使用されるのである。
【0033】
図2は、非大域レジスタが物理的にウィンドウによってグループ化されるような実施例を示しているが、異なる方式でレジスタをグループ化することは可能である。別の実施例では、どのウィンドウの類似のレジスタも全て物理的にまとまってグループ化されるように非大域レジスタを配列する。すなわち、たとえば、各ウィンドウの第1のLOCALレジスタの組の後には各ウィンドウの次のLOCALレジスタの組が必ず続き、この配列は各ウィンドウの最後のOUTレジスタの組から構成されるレジスタ群に至るまで続いて行くであろう。このようなレジスタの交互編成によって、どのウィンドウの類似のレジスタの間でも読取り線と書込み線を共用できると共に、共用される線ごとに最小限の長さの線路を使用することができる。
【0034】
図3は、異なるウィンドウのレジスタによる読取り線と書込み線の共用を示す。図3は、共用読取り線に対して複数の読取りポートが設けられていることと、共用書込み線に対して複数の書込みポートが設けられていることをさらに示している。図3は、図2を大幅に簡略化した構成であり、ウィンドウが3つしかなく各々のウィンドウは単一の1ビットレジスタから構成されている。図3では、バッファ・インバータ対610及び615は一体となって、ウィンドウ0に関わる1ビットレジスタである1ビットセルを形成している。同様に、バッファ・インバータ対620及び625はウィンドウ1に関わる1ビットレジスタである1ビットセルを形成し、バッファ・インバータ対630及び635は一体となって、ウィンドウ2に関わる1ビットレジスタである1ビットセルを形成している。
【0035】
バッファ及びインバータ690はセンス増幅器として動作し、共用読取り線695により各々の1ビットセルに結合されている。詳細にいえば、ウィンドウ0に関わる(バッファ及びインバータ610及び615により形成される)1ビットセルは、トランジスタ640により共用読取り線695に結合されている。現在読取りウィンドウがウィンドウ0であるとき、信号READ W0_ENがアサートされて、トランジスタ640をターンオンするので、ウィンドウ0に関わる1ビットセルに記憶されているビット値を共用読取り線695を介してセンス増幅器690に供給することができる。さらに、ウィンドウ1に関わる(バッファ及びインバータ620及び625により形成されている)1ビットセルは、トランジスタ650により共用読取り線695に結合されている。現在読取りウィンドウがウィンドウ1であるとき、信号READ W1_ENがアサートされ、トランジスタ650をターンオンするので、ウィンドウ1に関わる1ビットセルに記憶されているビット値を共用読取り線695を介してセンス増幅器690に供給することができる。最後に、ウィンドウ2に関わる(バッファ及びインバータ630及び635により形成されている)1ビットセルは、トランジスタ660により共用読取り線695に結合されている。現在読取りウィンドウがウィンドウ2であるとき、信号READ W2_ENがアサートされて、トランジスタ660をターンオンするので、ウィンドウ2に関わる1ビットセルに記憶されているビット値を共用読取り線695を介してセンス増幅器690に供給することができる。従って、特定の時点で唯一つのウィンドウが読取られるという事実を利用することにより、いくつかのメモリセルの間で単一の読取り線695を共用することができるのである。尚、センス増幅器690もいくつかのビットセルにより共用され、それにより、メモリセルごとに別個のセンス増幅器を設ける必要をなくしていることに注意する。別の実施例では、RAM編成にビットインタリービングを追加することにより、共用ワイヤ長さをさらに短縮できる。
【0036】
ANDゲート642,652及び662は一体となって現在読取りウィンドウに関わるデコーダ論理を形成し、所定の時点でトランジスタ640,650及び660のうち多くとも1つのトランジスタがイネーブルされるように保証する。従って、所定の時点で共用読取り線695により読取られるのは唯一つのビットセル、すなわち、選択された読取りウィンドウのビットセルのみである。図3においては可能な読取りウィンドウは3つだけであるので、現在読取りウィンドウを2ビット信号(22 =4)として符号化することができる。信号CRW(2:2)と信号CRW(1:1)は、それぞれ、現在読取りウィンドウの最上位ビットと、最下位ビットである。そのため、現在読取りウィンドウが0(2進値で00)である場合には、(ANDゲート642から出力される)信号READ W0_ENがアサートされ、トランジスタ640がターンオンされることがわかる。さらに、現在読取りウィンドウが1(2進値で01)である場合には、(ANDゲート652から出力される)信号READ W1_ENがアサートされ、トランジスタ650がターンオンされる。最後に、現在読取りウィンドウが2(2進値で10)である場合には、(ANDゲート662から出力される)信号READ W2_ENがアサートされ、トランジスタ660がターンオンされる。
【0037】
図3において、センス増幅器690は2つの読取りポートに結合している。詳細にいえば、センス増幅器690はトランジスタ680によりREAD PORT0に結合され、センス増幅器690はトランジスタ685によりREAD PORT1に結合されている。すなわち、信号RP0_ENをアサートして、トランジスタ680をターンオンすることにより、READ PORT0を介してセンス増幅器690の出力を読取ることができるのである。他方、信号RP1_ENをアサートして、トランジスタ685をターンオンすることにより、READPORT1を介してセンス増幅器690の出力を読取れる。センス増幅器690にトランジスタ680及び685と並列に追加のトランジスタを結合することにより、図3に追加の読取りポートを追加できる。現在ウィンドウレジスタは頻繁には変わらないので、センス増幅器690の出力端子でレジスタの値、この場合には単一のビットを利用することが可能であり、その値を読取るための時間はさらに短縮される。
【0038】
図3において、書込みは、センス増幅器690などのセンス増幅器の使用を要求しないという点を除いて、読取りと同様の方式で実行される。詳細にいえば、ウィンドウ0に関わる(バッファ及びインバータ610及び615により形成されている)1ビットセルは、トランジスタ645により共用書込み線605に結合されている。現在書込みウィンドウがウィンドウ0であるとき、信号WRITE W0_ENがアサートされると、トランジスタ645がターンオンするので、ウィンドウ0に関わる1ビットセルに共用書込み線605を介して供給される1ビット値を記憶させることができる。さらに、ウィンドウ1に関わる(バッファ及びインバータ620及び625により形成されている)1ビットセルは、トランジスタ655により共用書込み線605に結合されている。現在書込みウィンドウがウィンドウ1であるとき、信号WRITE W1_ENがアサートされると、トランジスタ655がターンオンするので、ウィンドウ1に関わる1ビットセルに共用書込み線605を介して供給される1ビット値を記憶することが可能になる。また、ウィンドウ2に関わる(バッファ及びインバータ630及び635により形成されている)1ビットセルはトランジスタ665により共用書込み線605に結合されている。現在書込みウィンドウがウィンドウ2であるとき、信号WRITE W2_ENがアサートされると、トランジスタ665をターンオンするので、ウィンドウ2に関わる1ビットセルに共用書込み線605を介して供給される1ビット値を記憶することが可能になる。従って、特定の時点で書込まれるウィンドウは唯一つであるという事実を利用することにより、いくつかのメモリセルの間で単一の書込み線605を共用できるのである。
【0039】
ANDゲート647,657及び667は一体となって現在書込みウィンドウに関わるデコーダ論理を形成し、所定の時点でトランジスタ645,655及び665のうち多くとも1つがイネーブルされるように保証する。従って、所定の時点で共用書込み線605を使用して書込まれるのは唯一つのビットセル、すなわち、選択された書込みウィンドウのビットセルだけである。図3において、可能な書込みウィンドウは3つしか存在していないので、現在書込みウィンドウを2ビット信号(22 =4)として符号化することができる。信号CWW(2:2)と信号CWW(1:1)は、それぞれ、現在書込みウィンドウの最上位ビットと、最下位ビットである。そこで、現在書込みウィンドウが0(2進値で00)であるとき、(ANDゲート647から出力される)信号WRITE W0_ENがアサートされ、トランジスタ645がターンオンされることがわかる。さらに、現在書込みウィンドウが1(2進値で01)であるときには、(ANDゲート657から出力される)信号WRITE W1_ENがアサートされ、トランジスタ655がターンオンされる。最後に、現在書込みウィンドウが2(2進値で10であるときには、(ANDゲート667から出力される)信号WRITEW2_ENがアサートされ、トランジスタ665がターンオンされる。
【0040】
図3では、共用書込み線605は2つの書込みポートに結合している。詳細にいえば、共用書込み線605はトランジスタ670によりWRITE PORT0に結合されると共に、トランジスタ675によりWRITE PORT1に結合されている。すなわち、信号WP0_ENをアサートして、トランジスタ670をターンオンすることにより、WRITE PORT0を介する書込みが可能である。他方、信号WP1_ENをアサートして、トランジスタ675をターンオンすることにより、WRITE PORT1を介する書込みが可能である。共用書込み線605にトランジスタ670及び675と並列に追加トランジスタを結合することにより、図3に追加の書込みポートを追加できる。
【0041】
図2と図3を比較すると、図3のビットセルは図2の非大域レジスタに対応していることがわかる。図3のトランジスタ640,650及び660と、ANDゲート642,652及び662は図2の読取りウィンドウmux565に相当する。図3のトランジスタ645,655及び665と、ANDゲート647,657及び667は図2の書込みウィンドウmux535に相当する。この対応付けは、選択された読取りウィンドウに基づいて、一度に1つのビットセルしか読取りできず且つ選択された書込みウィンドウに基づいて、一度に1つのビットセルしか書込みできないために成立するのである。図3には、1つのウィンドウの中の特定の1つのレジスタを選択するために使用され、従って、図2の読取りレジスタmux575又は書込みレジスタmux525に相当する素子はない。これは、図3がウィンドウごとに単一の1ビットレジスタしかないきわめて簡略化された構成であるためである。
【0042】
図4は、レジスタファイル中に2つのウィンドウがあり、各々のウィンドウは2つのレジスタを有し且つ各レジスタは2つのビットを記憶する本発明のさらに複雑な実施例を示す。ウィンドウの選択及び選択されたウィンドウの中におけるレジスタの選択の概念をきわだたせるために、図4からは不要な詳細を省略してある。従って、図4においては、バッファ・インバータ対として1ビットセルを示すのではなく、各々の1ビットセルはブロック線図の形(すなわち、ブロック710,720,730,740,750,760,770及び780として)示されている。さらに、読取りと書込みは対称であるため、書込み選択論理のみを示した。復号と多重ポート選択の論理も図4には示されていない。
【0043】
図4では、各レジスタは2ビットレジスタである。従って、各レジスタは2つの1ビット記憶セルにより形成されており、一方の1ビット記憶セルはレジスタの最下位ビット(すなわち、ビット0)を記憶し、他方の1ビット記憶セルは最上位ビット(すなわち、ビット1)を記憶する。すなわち、ブロック710はウィンドウ0に関わるレジスタ0のビット0を記憶する1ビット記憶セルであり、ブロック730は対応するビット1を記憶する1ビット記憶セルである。ブロック720とブロック740は一体となってウィンドウ1のレジスタ0を形成し、ブロック720はビット0を記憶し、ブロック740はビット1を記憶している。同様に、ブロック750はウィンドウ0に関わるレジスタ1のビット0を記憶する1ビット記憶セルであり、また、ブロック770は対応するビット1を記憶する1ビット記憶セルである。ブロック760とブロック780は一体となってウィンドウ1のレジスタ1を形成し、ブロック760はビット0を記憶し、ブロック780はビット1を記憶している。
【0044】
図2と図4を比較すると、図4のビットセル(すなわち、ブロック710,720,730,740,750,760,770及び780)は図2の非大域レジスタ410に相当することがわかる。図4のトランジスタ715,725,735,745,765,775及び785は図2の書込みウィンドウmux535に相当する。図4のトランジスタ790,792,794及び798は図2の書込みレジスタmux525に相当する。従って、選択された書込みウィンドウと、選択された書込みウィンドウの中の選択されたレジスタとに基づいて、一度に1つのレジスタを書込むことしかできない。このことは例によって最も良く示される。
【0045】
現在書込みウィンドウがウィンドウ0である場合、信号WINDOW0_ENはアサートされるであろうが、信号WINDOW1_ENはアサートされないであろう。そのため、トランジスタ715,755,735及び775はターンオンするであろうが、トランジスタ725,765,745及び785はターンオフするであろう。ウィンドウ0のレジスタ0に書込むべきであれば、信号REGISTER0_ENはアサートされるが、信号REGISTER1_ENはアサートされないであろう。その結果、トランジスタ790及び792はターンオンし、トランジスタ794及び796はターンオフするであろう。従って、共用書込み線791のBIT0値はブロック710に記憶され、共用書込み線793のBIT1値はブロック730に記憶されるであろう。そこで、ウィンドウ0のレジスタ1に書込むことが望まれると、信号REGISTER1_ENはアサートされるが、信号REGISTER0_ENはアサートされないであろう。この結果、トランジスタ794及び796はターンオンし、トランジスタ790及び792はターンオフするであろう。従って、共用書込み線791のBIT0値はブロック750に記憶され、共用書込み線793のBIT1値はブロック770に記憶されるであろう。
【0046】
現在書込みウィンドウがウィンドウ1に変わった場合、信号WINDOW1_ENはアサートされるが、信号WINDOW0_ENはアサートされないであろう。従って、トランジスタ725,765,745及び785はターンオンし、トランジスタ715,755,735及び775はターンオフするであろう。ウィンドウ1のレジスタ0に書込むべきであるならば、信号REGISTER0_ENはアサートされるが、信号REGISTER1_ENはアサートされないであろう。この結果、トランジスタ790及び792はターンオンし、トランジスタ794及び796はターンオフするであろう。従って、共用書込み線791のBIT0値はブロック720に記憶され、共用書込み線793のBIT1値はブロック740に記憶されるであろう。そこで、ウィンドウ1のレジスタ1への書込みが望まれたならば、信号REGISTER1_ENはアサートされるが、信号REGISTER0_ENはアサートされないであろう。この結果、トランジスタ794及び796はターンオンし、トランジスタ790及び792はターンオフするであろう。従って、共用書込み線791のBIT0値はブロック760に記憶され、共用書込み線793のBIT1値はブロック780に記憶されるであろう。
【0047】
図4では、各々のレジスタは単一のウィンドウでのみアクセス可能であるので、レジスタはLOCALレジスタであるかのように機能する。図5は、1つのウィンドウのINレジスタを論理的に先行するウィンドウのOUTレジスタとしてアドレス指定する技法を示す。この図においても、ある1つの時点で活動しているのは1つのウィンドウのレジスタのみであるという意味で、1つのレジスタを1つのウィンドウのINレジスタとして処理すると共に、別のウィンドウのOUTレジスタとして処理する概念をきわ立たせるために、不要な詳細を省略してある。従って、図5では、1ビットセルをバッファ・インバータ対として示すのではなく、各々の1ビットセルをブロック線図の形で(すなわち、ブロック810,820及び830として)示している。さらに、読取りと書込みは対称であるため、書込み選択論理のみを示す。復号と多重ポート選択の論理も図5には示されていない。
【0048】
図5の実施例では、ウィンドウは3つ(すなわち、ウィンドウ0,ウィンドウ1及びウィンドウ2)あり、各々のウィンドウは2つのレジスタ(すなわち、INレジスタ及びOUTレジスタ)を有し、各レジスタは1つのビットのみを記憶する。1つのウィンドウのINレジスタは論理上先行しているウィンドウのOUTレジスタである。図5の実施例のような3つのウィンドウを含む例においては、ウィンドウ2は論理の上でウィンドウ0に先行し、ウィンドウ0は論理の上でウィンドウ1に先行し、ウィンドウ1は論理の上でウィンドウ2に先行している。従って、図5では、ブロック810は現在書込みウィンドウがウィンドウ0であるときはウィンドウ0のINレジスタとして扱われ、現在書込みウィンドウがウィンドウ2であるときにはウィンドウ2のOUTレジスタとして扱われるのである。さらに、ブロック820は現在書込みウィンドウがウィンドウ1であるときはウィンドウ1のINレジスタとして扱われ、現在書込みウィンドウがウィンドウ0であるときにはウィンドウ0のOUTレジスタとして扱われる。最後に、ブロック830は現在書込みウィンドウがウィンドウ2であるときはウィンドウ2のINレジスタとして扱われ、現在書込みウィンドウがウィンドウ1であるときにはウィンドウ1のOUTレジスタとして扱われる。
【0049】
図5の実施例では、現在書込みウィンドウがウィンドウ0であれば、信号WINDOW0_ENはアサートされ、信号WINDOW1_EN及びWINDOW2_ENはアサートされない。従って、現在書込みウィンドウがウィンドウ0であれば、トランジスタ813及び827(WINDOW0_ENにより制御される)はターンオンし、トランジスタ823及び837(WINDOW1_ENにより制御される)と、トランジスタ833及び817(WINDOW2_ENにより制御される)とはターンオフする。したがって現在書込みウィンドウがウィンドウ0であるとき、信号IN_ENをアサートし且つ信号OUT_ENをアサートしないと、ウィンドウ0のINレジスタをアクセスすることになる。すなわち、トランジスタ850(IN_ENにより制御される)はターンオンし、トランジスタ840(OUT_ENにより制御される)はターンオフするので、BIT0がどのような値を有していても、その値はブロック810に記憶される。これに対し、現在書込みウィンドウがウィンドウ0であるときに、信号OUT_ENをアサートし且つ信号IN_ENをアサートしないと、ウィンドウ0のOUTレジスタをアクセスすることになる。すなわち、トランジスタ840(OUT_ENにより制御される)はターンオンし、トランジスタ850(IN_ENにより制御される)はターンオフするので、BIT0がどのような値を有していても、その値はブロック820に記憶される。
【0050】
さらに、現在書込みウィンドウがウィンドウ1であるときには、信号WINDOW1_ENはアサートされるが、信号WINDOW2_EN及びWINDOW0_ENはアサートされない。従って、現在書込みウィンドウがウィンドウ1であるときには、トランジスタ823及び837(WINDOW1_ENにより制御される)はターンオンし、トランジスタ833及び817(WINDOW2_ENにより制御される)と、トランジスタ813及び827(WINDOW0_ENにより制御される)とはターンオフする。現在書込みウィンドウがウィンドウ1であるときに、信号IN_ENをアサートし且つ信号OUT_ENをアサートしないと、ウィンドウ1のINレジスタをアクセスする。トランジスタ850(IN_ENにより制御される)はターンオンし、トランジスタ840(OUT_ENにより制御される)はターンオフする。従って、BIT0がどのような値を有していても、その値はブロック820に記憶される。これに対し、現在書込みウィンドウがウィンドウ1であるときに、信号OUT_ENをアサートし且つ信号IN_ENをアサートしないと、ウィンドウ1のOUTレジスタをアクセスする。すなわち、トランジスタ840(OUT_ENにより制御される)はターンオンし、トランジスタ850(IN_ENにより制御される)はターンオフして、BIT0がどのような値を有していても、その値はブロック830に記憶される。
【0051】
最後に、現在書込みウィンドウがウィンドウ2であるときには、信号WINDOW2_ENはアサートされるが、信号WINDOW0_EN及びWINDOW1_ENはアサートされない。従って、現在書込みウィンドウがウィンドウ2であるとき、トランジスタ833及び817(WINDOW2_ENにより制御される)はターンオンし、トランジスタ813及び827(WINDOW0_ENにより制御される)と、トランジスタ823及び837(WINDOW1_ENにより制御される)とはターンオフする。現在書込みウィンドウがウィンドウ2であるとき、信号IN_ENをアサートし且つ信号OUT_ENをアサートしないと、ウィンドウ2のINレジスタをアクセスする。すなわち、トランジスタ850(IN_ENにより制御される)はターンオンし、トランジスタ(OUT_EN)はターンオフして、BIT0がどのような値を有していても、その値はブロック830に記憶される。これに対し、現在書込みウィンドウがウィンドウ2であるとき、信号OUT_ENをアサートし且つ信号IN_ENをアサートしないと、ウィンドウ2のOUTレジスタをアクセスする。すなわち、トランジスタ840(OUT_ENにより制御される)はターンオンし、トランジスタ850(IN_ENにより制御される)はターンオフしてBIT0がどのような値を有していても、その値はブロック810に記憶される。
【0052】
本発明の方法及び装置をその現時点で好ましい実施例及び代替実施例によって説明したが、本発明を特許請求の範囲の趣旨の範囲内で変形及び変更を伴って実施しうることは当業者には認められるであろう。従って、明細書及び図面は限定的な意味をもつのではなく、例示としてみなされるべきである。
【図面の簡単な説明】
【図1】 SPARCレジスタウィンドウを使用してレジスタから成るメモリアレイからデータを読取り且つメモリアレイにデータを書込む論理演算装置のブロック線図。
【図2】 レジスタのアレイから一度に唯一つのレジスタのウィンドウをアクセスするためのセレクタの使用を示す図。
【図3】 複数の読取りポートを有する読取り線の異なるウィンドウのレジスタによる共用と、複数の書込みポートを有する書込み線の異なるウィンドウのレジスタによる共用とを示す図。
【図4】 レジスタの現在ウィンドウの選択と、現在ウィンドウの中における異なるウィンドウの選択とを示す図。
【図5】 1つのウィンドウのINレジスタの、論理上先行しているウィンドウのOUTレジスタとしてのアクセスを示す図。
【符号の説明】
405…大域レジスタ、410,420,425,430,435,480,485,490,495…非大域レジスタ、515…バス、520…仮想レジスタ番号(書込み)、525…書込みレジスタmux、530…現在ウィンドウポインタ(書込み)、535…書込みウィンドウmux、560…現在ウィンドウポインタ(読取り)、565…読取りウィンドウmux、570…仮想レジスタ番号(読取り)、575…読取りレジスタmux。
Claims (8)
- それぞれ複数のレジスタを備えた複数の論理ウィンドウを備え、少なくとも1つの論理ウィンドウの一部のレジスタが他の論理ウィンドウと共用されているレジスタファイル装置であって、
前記各論理ウィンドウのそれぞれのレジスタを指定するためにそれぞれのレジスタに仮想レジスタ番号が付されているレジスタファイル装置において、
前記複数の論理ウィンドウの中から選択し、それにより、任意の時点でのアクセスを第1の選択された論理ウィンドウに制限する第1のウィンドウ選択手段と、
前記第1の選択された論理ウィンドウのレジスタ群から、所望のレジスタをその仮想レジスタ番号により直接選択する第1のレジスタ選択手段と
を設け、仮想レジスタ番号から、実際のレジスタを示す物理レジスタ番号への変換を行うことなく、レジスタ・ファイルへのアクセスを可能にしたことを特徴とするレジスタファイル装置。 - 前記第1の選択された論理ウィンドウは書込みによりアクセスされ、 さらに、前記装置が、
前記複数の論理ウィンドウの中から選択し、それにより、任意の時点でのアクセスを第2の選択された論理ウィンドウに制限する第2のウィンドウ選択手段と、
前記第2の選択された論理ウィンドウのレジスタ群から、所望のレジスタをその仮想レジスタ番号により直接選択する第2のレジスタ選択手段と
を具備しており、この第2の選択された論理ウィンドウが読取りによりアクセスされることを特徴とする請求項1記載の装置。 - 任意の時点でアクセス可能である少なくとも1つの大域レジスタをさらに具備する請求項1記載の装置。
- それぞれ複数のレジスタを備えた複数の論理ウィンドウを備え、少なくとも1つの論理ウィンドウの一部のレジスタが他の論理ウィンドウと共用されているレジスタファイル装置であって、さらに
前記各論理ウィンドウのそれぞれのレジスタを指定するためにそれぞれのレジスタに仮想レジスタ番号が付されているレジスタファイル装置のレジスタファイルアクセス方法において、
前記複数の論理ウィンドウの中から選択し、任意の時点でのアクセスを第1の選択された論理ウィンドウに制限する過程と、
前記第1の選択された論理ウィンドウのレジスタ群から、所望のレジスタをその仮想レジスタ番号により直接選択する過程と
から成り、仮想レジスタ番号から、実際のレジスタを示す物理レジスタ番号への変換を行うことなく、レジスタ・ファイルへのアクセスを可能にしたことを特徴とするレジスタファイルアクセス方法。 - 前記第1の選択された論理ウィンドウは書込みによりアクセスされるものであり、さらに、前記レジスタファイルアクセス方法は、
前記複数の論理ウィンドウの中から選択し、それにより、任意の時点でのアクセスを第2の選択された論理ウィンドウに制限する過程と、
前記第2の選択された論理ウィンドウのレジスタ群から、所望のレジスタをその仮想レジスタ番号により直接選択する過程と
を含み、この第2の選択された論理ウィンドウが読取りによりアクセスされるものであることを特徴とする請求項4記載の方法。 - 少なくとも1つの大域レジスタを設ける過程と、
大域レジスタを任意の時点で必要に応じてアクセスする過程とをさらに含む請求項4記載の方法。 - それぞれ複数のレジスタを備えた複数の論理ウィンドウを備え、少なくとも1つの論理ウィンドウの一部のレジスタが他の論理ウィンドウと共用されているレジスタファイル装置であって、
前記各論理ウィンドウのそれぞれのレジスタを指定するためにそれぞれのレジスタに仮想レジスタ番号が付されているレジスタファイル装置において、
前記複数の論理ウィンドウの中から選択し、それにより、任意の時点での書き込みアクセスを前記論理ウィンドウの中の1つの選択された書込みウィンドウに制限する書込みウィンドウ選択手段と、
前記選択された書き込みウィンドウのレジスタ群から、所望のレジスタをその仮想レジスタ番号により直接選択する書き込みレジスタ選択手段と、
前記複数の論理ウィンドウの中から選択し、それにより、任意の時点での読取りアクセスを前記論理ウィンドウの中の1つの選択された読取りウィンドウに制限する読取りウィンドウ選択手段と、
前記選択された読取りウィンドウのレジスタ群から、所望のレジスタをその仮想レジスタ番号により直接選択する読取りレジスタ選択手段と、
を設け、仮想レジスタ番号から、実際のレジスタを示す物理レジスタ番号への変換を行うことなく、レジスタ・ファイルへのアクセスを可能にしたことを特徴とするレジスタファイル装置。 - 前記選択された読取りウィンドウ及び選択された書込みウィンドウとは無関係にアクセス可能である少なくとも1つの大域レジスタをさらに具備する請求項7記載の装置。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US18404494A | 1994-01-21 | 1994-01-21 | |
| US184044 | 1994-01-21 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0844565A JPH0844565A (ja) | 1996-02-16 |
| JP3676411B2 true JP3676411B2 (ja) | 2005-07-27 |
Family
ID=22675354
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP02582195A Expired - Fee Related JP3676411B2 (ja) | 1994-01-21 | 1995-01-23 | レジスタファイル装置及びレジスタファイルアクセス方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US5721868A (ja) |
| JP (1) | JP3676411B2 (ja) |
Families Citing this family (25)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5890199A (en) * | 1996-10-21 | 1999-03-30 | Ramtron International Corporation | Data processor incorporating a ferroelectric memory array selectably configurable as read/write and read only memory |
| US6233599B1 (en) * | 1997-07-10 | 2001-05-15 | International Business Machines Corporation | Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers |
| US6105123A (en) * | 1998-03-10 | 2000-08-15 | Hewlett-Packard Company | High speed register file organization for a pipelined computer architecture |
| US6134653A (en) * | 1998-04-22 | 2000-10-17 | Transwitch Corp. | RISC processor architecture with high performance context switching in which one context can be loaded by a co-processor while another context is being accessed by an arithmetic logic unit |
| US6192442B1 (en) * | 1998-04-29 | 2001-02-20 | Intel Corporation | Interrupt controller |
| US6175892B1 (en) * | 1998-06-19 | 2001-01-16 | Hitachi America. Ltd. | Registers and methods for accessing registers for use in a single instruction multiple data system |
| US6343348B1 (en) | 1998-12-03 | 2002-01-29 | Sun Microsystems, Inc. | Apparatus and method for optimizing die utilization and speed performance by register file splitting |
| US6615338B1 (en) | 1998-12-03 | 2003-09-02 | Sun Microsystems, Inc. | Clustered architecture in a VLIW processor |
| US6205543B1 (en) | 1998-12-03 | 2001-03-20 | Sun Microsystems, Inc. | Efficient handling of a large register file for context switching |
| US6279100B1 (en) | 1998-12-03 | 2001-08-21 | Sun Microsystems, Inc. | Local stall control method and structure in a microprocessor |
| US6718457B2 (en) | 1998-12-03 | 2004-04-06 | Sun Microsystems, Inc. | Multiple-thread processor for threaded software applications |
| US7117342B2 (en) * | 1998-12-03 | 2006-10-03 | Sun Microsystems, Inc. | Implicitly derived register specifiers in a processor |
| US7114056B2 (en) | 1998-12-03 | 2006-09-26 | Sun Microsystems, Inc. | Local and global register partitioning in a VLIW processor |
| US6341347B1 (en) | 1999-05-11 | 2002-01-22 | Sun Microsystems, Inc. | Thread switch logic in a multiple-thread processor |
| US6938147B1 (en) | 1999-05-11 | 2005-08-30 | Sun Microsystems, Inc. | Processor with multiple-thread, vertically-threaded pipeline |
| US6542991B1 (en) * | 1999-05-11 | 2003-04-01 | Sun Microsystems, Inc. | Multiple-thread processor with single-thread interface shared among threads |
| US6507862B1 (en) | 1999-05-11 | 2003-01-14 | Sun Microsystems, Inc. | Switching method in a multi-threaded processor |
| US6351808B1 (en) | 1999-05-11 | 2002-02-26 | Sun Microsystems, Inc. | Vertically and horizontally threaded processor with multidimensional storage for storing thread data |
| US6625634B1 (en) | 1999-10-01 | 2003-09-23 | Sun Microsystems, Inc. | Efficient implementation of multiprecision arithmetic |
| US6915356B1 (en) * | 1999-12-07 | 2005-07-05 | Advanced Micro Devices, Inc. | Register addresses optimum access |
| US6665793B1 (en) * | 1999-12-28 | 2003-12-16 | Institute For The Development Of Emerging Architectures, L.L.C. | Method and apparatus for managing access to out-of-frame Registers |
| US6320813B1 (en) | 2000-03-02 | 2001-11-20 | Sun Microsystems, Inc. | Decoding of a register file |
| JP3737755B2 (ja) | 2001-12-28 | 2006-01-25 | 富士通株式会社 | レジスタウィンドウ方式によるレジスタファイル及びその制御方法 |
| US7284092B2 (en) * | 2004-06-24 | 2007-10-16 | International Business Machines Corporation | Digital data processing apparatus having multi-level register file |
| KR101927255B1 (ko) * | 2011-12-27 | 2018-12-12 | 한국전자통신연구원 | 레지스터 윈도우 오버플로우/언더플로우 처리 장치 |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4777589A (en) * | 1985-06-28 | 1988-10-11 | Hewlett-Packard Company | Direct input/output in a virtual memory system |
| US4777588A (en) * | 1985-08-30 | 1988-10-11 | Advanced Micro Devices, Inc. | General-purpose register file optimized for intraprocedural register allocation, procedure calls, and multitasking performance |
| US5159680A (en) * | 1988-07-28 | 1992-10-27 | Sun Microsystems, Inc. | Risc processing unit which selectively isolates register windows by indicating usage of adjacent register windows in status register |
| US5083263A (en) * | 1988-07-28 | 1992-01-21 | Sun Microsystems, Inc. | BISC with interconnected register ring and selectively operating portion of the ring as a conventional computer |
| JPH02187825A (ja) * | 1989-01-13 | 1990-07-24 | Mitsubishi Electric Corp | コンピュータ |
| US5179681A (en) * | 1989-11-16 | 1993-01-12 | Sun Microsystems, Inc. | Method and apparatus for current window cache with switchable address and out cache registers |
| US5179682A (en) * | 1990-05-15 | 1993-01-12 | Sun Microsystems, Inc. | Method and apparatus for improved current window cache with switchable address in, out, and local cache registers |
| US5226142A (en) * | 1990-11-21 | 1993-07-06 | Ross Technology, Inc. | High performance register file with overlapping windows |
| US5437043A (en) * | 1991-11-20 | 1995-07-25 | Hitachi, Ltd. | Information processing apparatus having a register file used interchangeably both as scalar registers of register windows and as vector registers |
| US5438669A (en) * | 1991-11-20 | 1995-08-01 | Hitachi, Ltd. | Data processor with improved loop handling utilizing improved register allocation |
| JP2823767B2 (ja) * | 1992-02-03 | 1998-11-11 | 松下電器産業株式会社 | レジスタファイル |
| US5440714A (en) * | 1992-12-14 | 1995-08-08 | Industrial Technology Research Institute | Method and system configuration for simplifying the decoding system for access to an register file with overlapping windows |
-
1995
- 1995-01-23 JP JP02582195A patent/JP3676411B2/ja not_active Expired - Fee Related
-
1996
- 1996-07-25 US US08/687,293 patent/US5721868A/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| US5721868A (en) | 1998-02-24 |
| JPH0844565A (ja) | 1996-02-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5721868A (en) | Rapid register file access by limiting access to a selectable register subset | |
| JP2823767B2 (ja) | レジスタファイル | |
| US7663963B2 (en) | Apparatus and method for providing multiple reads/writes using a 2Read/2Write register file array | |
| US6430677B2 (en) | Methods and apparatus for dynamic instruction controlled reconfigurable register file with extended precision | |
| US5574880A (en) | Mechanism for performing wrap-around reads during split-wordline reads | |
| US5440714A (en) | Method and system configuration for simplifying the decoding system for access to an register file with overlapping windows | |
| JPH06274528A (ja) | ベクトル演算処理装置 | |
| US6115294A (en) | Method and apparatus for multi-bit register cell | |
| JPH09190378A (ja) | メモリアドレス制御回路 | |
| JPH05197619A (ja) | マルチcpu用メモリ制御回路 | |
| JPH0612608B2 (ja) | 半導体記憶装置 | |
| US20040107330A1 (en) | Read/modify/write registers | |
| JP2950427B2 (ja) | レジスタバンク回路 | |
| JP2860655B2 (ja) | 並列命令実行型プロセッサ | |
| RU2115160C1 (ru) | Устройство динамического изменения адресов памяти | |
| JP2747944B2 (ja) | 半導体記憶装置 | |
| JP3055254U (ja) | メモリアドレス制御回路 | |
| JP2659886B2 (ja) | プロセッサシステム | |
| JP3120930B2 (ja) | データ記憶装置 | |
| JP3031581B2 (ja) | ランダムアクセスメモリおよび情報処理装置 | |
| JPH05334179A (ja) | メモリ集積回路 | |
| JPH06337847A (ja) | マルチプロセッサ装置 | |
| JPH06266647A (ja) | アドレスバス拡張装置 | |
| JPS6224338A (ja) | メモリ・アクセス方式 | |
| JPH0612899A (ja) | メモリ回路 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040818 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040907 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20041207 |
|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20041210 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050302 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050329 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050428 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090513 Year of fee payment: 4 |
|
| LAPS | Cancellation because of no payment of annual fees |