JP5068597B2 - プロセッサ及びプロセッサによるデータ読み出し方法 - Google Patents

プロセッサ及びプロセッサによるデータ読み出し方法 Download PDF

Info

Publication number
JP5068597B2
JP5068597B2 JP2007200606A JP2007200606A JP5068597B2 JP 5068597 B2 JP5068597 B2 JP 5068597B2 JP 2007200606 A JP2007200606 A JP 2007200606A JP 2007200606 A JP2007200606 A JP 2007200606A JP 5068597 B2 JP5068597 B2 JP 5068597B2
Authority
JP
Japan
Prior art keywords
data
registers
instruction
shift
register
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
Application number
JP2007200606A
Other languages
English (en)
Other versions
JP2009037386A (ja
Inventor
英樹 松山
正行 大東
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2007200606A priority Critical patent/JP5068597B2/ja
Priority to US12/216,956 priority patent/US20090037702A1/en
Publication of JP2009037386A publication Critical patent/JP2009037386A/ja
Application granted granted Critical
Publication of JP5068597B2 publication Critical patent/JP5068597B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers

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

本発明は、マイクロプロセッサ、DSP(Digital Signal Processor)等のプロセッサに関し、特に、プロセッサに接続されたデータメモリからプロセッサが有するレジスタファイルに、非整列データ・ブロックを読み出すデータ読み出し技術に関する。
マイクロプロセッサ、DSP(Digital Signal Processor)等のプロセッサは、所定のデータ長を単位としてデータを取り扱うこととしている。現在のプロセッサは、この取り扱い単位を32ビット(4バイト)単位又は64ビット(8バイト)単位としていることが多い。また、この取り扱い単位は「ワード」と呼ばれる。なお、プロセッサのデータ取り扱い単位が64ビット単位とされている場合、歴史的な慣例に従って、32ビット単位を「ワード」、64ビット単位を「ダブルワード」と呼ぶ場合もある。プロセッサ内に設けられるレジスタのレジスタ長は、1ワード又はその整数倍のデータを格納できるサイズとされている。
プロセッサに接続されるデータメモリなどの周辺装置もプロセッサのデータ取り扱い単位に則ってデータ長を統一することにより、高速処理が可能となる。例えば、プロセッサに接続されるキャッシュメモリ(データメモリ)のライン幅は、プロセッサのデータ取り扱い単位にあわせて1ワード又はその整数倍として構成される。これにより、1回のキャッシュアクセスによって、効率よく1ワード又はその整数倍のデータをプロセッサ内のレジスタにロードすることができる。
なお、1ワード未満のデータ及び1ワード単位のデータを連続してデータメモリに格納すると、1ワード単位の境界(ワード境界)あるいはデータメモリのライン境界(キャッシュライン境界)を跨いでデータが格納される場合が生じる。本明細書では、ワード境界を跨いで格納されている1ワードのデータを「非整列データ」と呼ぶ。さらに、本明細書では、プロセッサのレジスタ長の2倍以上、つまり2ワード以上のデータ長を有し、かつ、そのデータ境界がデータメモリのワード境界と一致していない非整列データを、「非整列データ・ブロック」と呼ぶ。
上述した非整列データをプロセッサ内のレジスタに整列化してロードするために、例えば、代表的な命令セットであるMIPS(登録商標)命令セットは、LWL(Load Word Left)命令、LWR(Load Word Right)命令、LDL(Load Double-word Left)命令、LDR(Load Double-word Right)命令を備えている。これらの命令を組み合わせて実行することによって、非整列データのロードが2回のメモリアクセスで実行可能である(非特許文献1を参照)。
一例として、LDL命令及びLDR命令を用いた非整列データのロード処理について、図9を用いて説明する。図9に示すデータメモリ51は、ライン幅が64ビットとされており、各々が16ビット長であるデータX0〜X15が2つのラインに格納されている。以下では、1ワードが64ビットである64ビット・プロセッサが、4つのデータX1〜X4を図9のデータメモリ51から読み出して、レジスタR8に格納する場合を考える。図9に示すように、これらの4つのデータX1〜4の境界は、データメモリ51のライン境界と一致していない。なお、図9の例では、データメモリ51のライン幅は、プロセッサのワード単位と同じ64ビットであるから、ライン境界はワード境界に等しい。
MIPS(登録商標)命令セットを利用するプロセッサは、LDR命令によって、0000h番地のラインからX3、X2、X1を読み出し、これらをレジスタR8に右詰めで格納することができる。また、LDL命令によって、0004h番地のラインからX4を読み出し、これをレジスタR8に左詰めで格納することができる。
MIPS64(R) Architecture For Programmers Volume II: The MIPS64(R) Instruction Set、[online]、2005年7月1日、205〜209及び222〜228頁、MIPS Technologies Inc.、[2007年7月20日検索]、インターネット<URL: http://www.mips.com/content/Documentation/MIPSDocumentation/ProcessorArchitecture/doclibrary>
上述したように、LDL命令及びLDR命令のような非整列データの読み出し命令(以下では、非整列ロード命令と呼ぶ)を用いる場合、データ長がワード単位に等しい1つの非整列データ(X1〜X4等)をプロセッサにロードするために、合計2命令を実行する必要がある。したがって、例えば、図10に示すように、データメモリ51に格納されているデータ長が4ワードである非整列データ・ブロックX1〜X16をレジスタファイル内のレジスタR0〜R3にロードするためには、少なくとも合計8命令、具体的には4つのLDL命令及び4つのLDR命令を実行する必要がある。一般化すると、データ長がNワードである非整列データ・ブロックをプロセッサのレジスタファイルにロードするためには、非整列データの読み出し命令を2N回実行する必要がある。
このように、非整列データ・ブロックをプロセッサ内のレジスタファイルにロードするためには、多くの命令を実行する必要があるという問題がある。この問題は、非整列データ・ブロックを用いた演算処理が多く含まれるデジタルフィルタ処理等をプロセッサで実行する場合に、実行時間の増大を招く原因となる。
本発明の第1の態様にかかるプロセッサは、命令をデコードする命令デコード部と、前記命令デコード部によりデコードされた命令に対応する処理を実行する命令実行部と、データメモリからのロードデータを格納可能であり、前記命令実行部に対して入力データを供給するレジスタファイルとを有する。さらに、前記レジスタファイルは、各々が複数ビットのデータを保持可能な複数のレジスタを有し、前記複数のレジスタの保持データを前記複数のレジスタの間でシフトさせることで前記複数のレジスタの保持データを更新可能である。
上述したように、本発明の第1の態様にかかるプロセッサは、前記命令実行部に対して入力データを供給する前記レジスタファイル内の複数のレジスタに保持されたデータを、前記複数のレジスタの間でシフトさせることができる。このように構成された前記プロセッサによれば、以下に示すような簡潔な手順によって、データメモリに格納された非整列データ・ブロックを前記レジスタファイルにロードすることができる。
具体的には、まず、データメモリのワード境界にしたがって整列されたデータ(以下では、整列データと呼ぶ)をロードするための命令(以下では、整列ロード命令と呼ぶ)を繰り返し実行することで、前記非整列データ・ブロックを含む範囲の複数の整列データを前記データメモリから前記レジスタファイルに転送する。そして、前記レジスタファイルのデータシフト動作の実行を指示するシフト命令を実行することで、前記複数の整列データを保持しているレジスタの間で保持データをシフトさせ、前記非整列データ・ブロックを前記複数のレジスタに整列化された状態で格納すればよい。
上述の手順によれば、N+1回の整列ロード命令と1回のシフト命令の実行によって、Nワード長の非整列データ・ブロックをレジスタファイルにロードすることができる。つまり、前記本発明の第1の態様にかかるプロセッサは、非整列データの読み出し命令を2N回実行する必要がある背景技術に示した手順に比べて、より少ない命令数で非整列データ・ブロックの整列ロード処理を実行することができる。
本発明により、非整列データ・ブロックをプロセッサ内のレジスタファイルにロードする際に要する命令数を削減することが可能なプロセッサ及びプロセッサによるデータ読み出し方法を提供できる。
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
本発明の実施の形態にかかるプロセッサ1を図1に示す。図1は、プロセッサ1の全体構成を示すブロック図である。図1において、命令バッファ10は、命令メモリ50からフェッチされた命令を格納する一時記憶領域である。命令デコード部11は、命令バッファ10に格納された命令を読み出し、当該命令の命令種別を判定し、命令オペランドを取得する。制御部12は、命令デコードによって得られた命令種別と命令オペランドに応じて、後述するレジスタファイル13及び命令実行部14に対してデータ若しくは制御信号又はこれら両方を出力する。
レジスタファイル13は、複数のレジスタの集合である。本実施の形態では、レジスタファイル13が32本のレジスタR0〜R31を有するものとして説明する。また、レジスタR0〜R31のレジスタ長は、それぞれ64ビットとする。なお、ここでのレジスタファイル13が有するレジスタ数及びこれらのレジスタ長が一例にすぎないことはもちろんである。レジスタR0〜R31は、命令実行部14の入力データ及び出力データを格納するアキュムレータ、あるいはデータメモリ51へアクセスする時のアドレス指定を行うためのアドレスレジスタなど、様々な用途に使用可能なレジスタである。また、レジスタR0〜R31は、演算処理のためにデータメモリ51からプロセッサ1にロードされるデータの格納先である。
さらに、レジスタファイル13は、レジスタR0〜R31の中から選択された複数のレジスタの間で、保持データをシフトさせることができる。レジスタ間でのデータシフトを可能とするレジスタファイル13の構成例については後述する。
命令実行部14は、命令デコード部11においてデコードされる命令に応じた処理を実行する。具体的には、命令実行部14は、複数の実行ユニットを有し、制御部12の制御に従って、デコードされた命令を各命令に適した実行ユニットにて実行する。例えば、加算命令、積和演算命令等の演算処理の実行を指示する命令がデコードされた場合、命令実行部14は、レジスタファイル13から供給されるデータを用いて指定された演算処理を実行する。また、例えば、ロード命令又はストア命令がデコードされた場合、命令実行部14は、データメモリ51のアクセス先アドレスを生成してデータメモリ51にアクセスする。命令実行部14は、浮動小数点演算ユニット、整数演算ユニット、ロード/ストアユニット等のほか、例えば、デジタルフィルタ処理などの特定の演算処理に特化した専用の実行ユニットを有してもよい。
なお、図1では、論理的な構成単位である命令メモリ50及びデータメモリ51を示しているが、これらはそれぞれ、ROM(Read Only Memory)、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)若しくはフラッシュメモリ、又はこれらの組合せ等により構成される。
続いて以下では、レジスタファイル13の具体的な構成及び動作を、図2〜6を用いて説明する。図2は、レジスタファイル13の全体構成を示している。始めに、図2に示された各端子に供給される信号について説明する。
WR1DATA[63:0]は、命令実行部14からレジスタファイル13に入力される64ビットデータである。WR2DATA[63:0]は、データメモリ51からレジスタファイル13に入力される64ビットデータである。WR1WA[4:0]及びWR2WA[4:0]は、レジスタファイル13の書き込みアドレスである。WR1WBRQ及びWR2WBRQは、レジスタファイル13へのライトバック要求の有無を示す1ビット論理信号である。
RD1[63:0]〜RD3[63:0]は、レジスタR0〜R31から読み出されたデータである。RA1[4:0]〜RA3[4:0]は、レジスタファイル13の読み出しアドレスである。なお、図1及び図2では、レジスタファイル13が、命令実行部14に対して、3つのデータを同時に供給可能であるものとしているが、このような構成は一例である。
SFTRQは、レジスタファイル13に対するシフト動作の実行要求の有無を示す1ビット論理信号である。SFTTRG[31:0]は、レジスタR0〜R31の中でシフト動作の対象となるレジスタを指定する信号である。SFTDIRは、データシフトの方向を指定する1ビット信号である。最後に、SFTVAL[1:0]は、データシフト量を指定する信号である。
書き込みコマンド生成回路130は、レジスタファイル13へのライトバック要求WR1WBRQ又はWR2WBRQと、書き込みアドレスWR1WA[4:0]又はWR2WA[4:0]を入力する。そして、書き込みコマンド生成回路130は、WR1WBRQ=1であるときに、書き込みアドレスWR1WA[4:0]に対応するレジスタにWR1TRG信号を出力する。また、書き込みコマンド生成回路130は、WR2WBRQ=1であるときに、書き込みアドレスWR2WA[4:0]に対応するレジスタにWR2TRG信号を出力する。WR1TRG信号及びWR2TRG信号は、レジスタR0〜R31に対して、WR1DATA[63:0]又はWR2DATA[63:0]の取り込みを指示するトリガ信号である。
読み出しデータ選択回路131は、読み出しアドレスRA1[4:0]を入力し、レジスタR0〜R31の中からRA1[4:0]に対応するレジスタを選択し、選択したレジスタの格納値を読み出しデータRD1[63:0]として出力する。同様に、読み出しデータ選択回路131は、読み出しアドレスRA2[4:0]及びRA3[4:0]を入力し、これらのアドレスに対応するレジスタの格納値を、それぞれRD2[63:0]及びRD3[63:0]として出力する。
AND回路132は、1ビット信号SFTRQと、32ビット信号SFTTRG[31:0]の各ビットとの論理積を演算し、演算結果を32ビットデータとして出力する。図2の構成例では、SFTRQ信号が"1"であることは、シフト動作の実行要求有りを表している。また、SFTTRG[31:0]の各ビットがレジスタR0〜R31の各々と一対一に対応している。つまり、SFTTRG[31:0]のあるビットが"1"であることは、当該ビットに対応するレジスタがシフト動作の対象であることを示している。
レジスタR0〜R31は、各々が64ビット長のデータを保持可能であるほか、隣接するレジスタの間を選択的に連結し、連結されたレジスタ間でデータシフト動作を行えるように構成されている。図2では、このようなデータシフト機能を有するレジスタR0〜R31をレジスタエレメントRE_#0〜RE_#31と表記している。
図2のレジスタエレメントRE_#0〜RE_#31の各端子に入出力される信号を図3に示す。図3において、SFTTRGXは、上述したAND回路132から出力される32ビット信号のうちの1ビット信号を意味する。例えば、レジスタR1に対応するレジスタエレメントRE_#1に入力されるSFTTRGXは、SFTTRG[1]とSFTRQとの論理積である。レジスタエレメントRE_#0〜RE_#31は、入力されるSFTTRGが"1"であるときに、データシフト動作を実行する。
WDO[63:0]出力端子は、レジスタエレメントに保持されている64ビットデータを出力する。LDATA[63:0]には、下位側のレジスタに保持されている64ビットデータが入力される。また、UDATA[63:0]には、上位側のレジスタに保持されている64ビットデータが入力される。例えば、レジスタR1(RE_#1)に入力されるLDATA[63:0]は、レジスタR0に保持されている64ビットデータである。一方、レジスタR1(RE_#1)に入力されるUDATA[63:0]は、レジスタR2に保持されている64ビットデータである。
図2の構成では、最下位のレジスタR0(RE_#0)のLDATA[63:0]入力端子及び最上位のレジスタR31(RE_#31)のUDATA[63:0]入力端子には、ゼロが入力される。しかしながら、当該構成は一例であり、例えば、これら2つの入力端子に供給されるビットを全て1としてもよい。また、レジスタR0(RE_#0)のLDATA[63:0]入力端子をレジスタR31(RE_#31)のWDO[63:0]出力端子と接続し、レジスタR31(RE_#31)のUDATA[63:0]入力端子をレジスタR0(RE_#0)のWDO[63:0]出力端子と接続してもよい。
レジスタエレメントRE_#0〜RE_#31の構成の一例を図4に示す。図4は、1つのレジスタエレメントの構成例を示すブロック図である。図4のレジスタ40は、レジスタ長が64ビットであり、64ビットデータを保持可能である。
シフト回路41は、自身のレジスタ40に保持されている64ビットデータ、下位側のレジスタエレメントに保持されている64ビットデータ(LDATA[63:0])、及び上位側のレジスタエレメントに保持されている64ビットデータ(UDATA[63:0])を入力し、これらを連結した192ビットデータのシフト演算を実行する。シフト回路41のシフト演算におけるデータシフト方向及びデータシフト量は、シフト回路41に入力されるSFTDIR信号及びSFTVAL[1:0]に応じて決定される。SFTDIR及びSFTVAL[1:0]の組合せとシフト回路41による演算内容との対応関係の具体例を図5に示す。なお、図5では、データシフト量を8ビット、16ビット、32ビット及び64ビットの4種類としているがこれは一例である。つまり、データシフト量は、データメモリ51のワード長、レジスタR0〜R31のレジスタ長、及び命令実行部14のデータ処理内容等に応じて適宜設計すれば良い。
セレクタ42は、WR1DATA[63:0]及びWR2DATA[63:0]を入力し、書き込みコマンド生成回路130から供給されるWR1TRGが"1"であるときにWR1DATA[63:0]を選択して出力し、WR1TRGが"0"であるときにWR2DATA[63:0]を選択して出力する。
セレクタ43は、シフト回路41の出力データ及びセレクタ42の出力データを入力し、AND回路132から供給されるSFTTRGXが"1"であるときにシフト回路41から供給されるデータを選択して出力し、SFTTRGXが"0"であるときにセレクタ42から供給されるデータを選択して出力する。
セレクタ44は、自身のレジスタ40に保持されているデータ及びセレクタ43の出力データを入力し、OR回路45から供給される1ビット論理信号が"0"であるときにレジスタ40に保持されているデータを選択して出力する。図4に示すように、セレクタ44の出力データはレジスタ40に取り込まれるから、OR回路45から供給される1ビット論理信号が"0"であるときは、レジスタ40の格納値が更新されずに過去の値のまま維持される。一方、OR回路45から供給される1ビット論理信号が"1"であるとき、セレクタ44は、セレクタ43の出力データを選択し、これをレジスタ40に供給する。
OR回路45は、レジスタ40への書き込み実行を指示するトリガ信号であるWR1TRG及びWR2TRG、並びにデータシフト動作の実行を指示するトリガ信号であるSFTTRGXの論理和を演算し、演算結果をセレクタ44の制御端子(不図示)に供給する。
続いて、レジスタファイル13のデータシフト動作の具体例を説明する。図6(a)は、右方向へのデータシフトの実行を指示する右シフト命令(VREGSHR.H命令)に応じたデータシフトを実行する前後におけるレジスタR0〜R4の格納値を示したものである。VREGSHR.H命令が命令デコード部11によりデコードされると、制御部12は、上述したSFTRQ、SFTTRF[31:0]、SFTDIR及びSFTVAL[1:0]の各信号をレジスタファイル13に供給する。そして、これらの信号に応じて、レジスタファイル内のレジスタエレメントRE_#0〜RE_#31の間でデータシフト動作が実行される。
図6(a)のニーモニック"VREGSHR.H R0, R3"で表される右シフト命令は、第1オペランドに指定されたレジスタR0から第2オペランドに指定されたレジスタR3までの4つのレジスタ間における16ビットの右データシフトの実行を指示する命令である。当該命令に応じてレジスタファイル13の右データシフトが行われることにより、レジスタファイル13の格納値は、図6(a)の左側に示すデータシフト前の状態から図6(a)の右側に示すデータシフト後の状態に変化する。当該命令によって、非整列データ・ブロックX1〜X16が、レジスタR0〜R3に整列された状態で格納される。なお、レジスタファイル13のデータシフトは、右シフト命令(VREGSHR.H命令)のオペランドに指定されたレジスタの間で選択的に実行される。このため、図6(a)において、データシフトの対象でないレジスタR4の格納値は変化しない。
一方、図6(b)は、左方向へのデータシフトの実行を指示する左シフト命令(VREGSHL.H命令)に応じたデータシフトの実行前後のレジスタR0〜R4の格納値を示したものである。図6(b)のニーモニック"VREGSHL.H R1, R4"で表される右シフト命令は、第1オペランドに指定されたレジスタR1から第2オペランドに指定されたレジスタR4までの4つのレジスタ間における16ビットの左データシフトの実行を指示する命令である。当該命令に応じてレジスタファイル13の左データシフトが行われることにより、レジスタファイル13の格納値は、図6(b)の左側に示すデータシフト前の状態から図6(b)の右側に示すデータシフト後の状態に変化する。当該命令によって、非整列データ・ブロックX3〜X18が、レジスタR1〜R4に整列された状態で格納される。なお、レジスタファイル13のデータシフトは、左シフト命令(VREGSHL.H命令)のオペランドに指定されたレジスタの間で選択的に実行される。このため、図6(b)において、データシフトの対象でないレジスタR1の格納値は変化しない。
上述したように、本実施の形態にかかるプロセッサ1は、命令実行部14に対するデータ供給元であり、かつ、データメモリ51からロードされるデータの格納先であるレジスタファイル13に含まれるレジスタR0〜R31の間で選択的にデータシフトを行うことができる。このように構成されたプロセッサ1における非整列データ・ブロックのロード処理を効率行う手順を以下に説明する。
図7は、データ長がNワードである非整列データ・ブロックのロード処理の概略手順を示すフローチャートである。まず、ステップS11において、データメモリ51から整列データをロードする整列ロード命令をN+1繰り返し実行することで、Nワードの非整列データ・ブロックを含む範囲のN+1個の整列データをデータメモリ51からレジスタファイル13に転送する。そして、ステップS12において、1つのシフト命令を実行することで、N+1個の整列データを保持しているN+1個のレジスタの間でデータシフトを行う。
理解を容易にするため、非整列データ・ブロックのロード処理の具体例を図8(a)〜(c)を用いて説明する。図8(a)〜(c)は、データ長が4ワードである非整列データ・ブロックX1〜X16が、データメモリ51から読み出されてレジスタR0〜R3に整列化された状態で格納されるまでの過程を示している。
図8(a)は、データメモリ51の0000h番地から0013h番地に保持された5ワード分のデータX0〜X19を示している。ステップS11に示したように、整列データをロードするためのLD命令を5回実行することで、データ長が4ワードである非整列データ・ブロックX1〜X16を含む5ワードの整列データがレジスタR0〜R4に転送される。図8(b)は、ステップS11完了後のレジスタR0〜R4の格納値を示している。図8(b)の状態では、非整列データ・ブロックX1〜X16のデータ境界は、レジスタR0〜R3の境界に一致していない。次に、ステップS12に示したようにレジスタファイル13の16ビット右データシフト実行を指示するシフト命令(VREGSHR.H命令)を1回実行することで、非整列データ・ブロックX1〜X16が、レジスタR0〜R3に整列化された状態で格納される。
図7及び図8を用いて説明した本実施の形態のプロセッサ1におけるデータ読み出し方法によれば、N+1回の整列ロード命令と1回のシフト命令、つまりN+2個の命令によって非整列データ・ブロックの整列ロード処理を実行することができる。つまり、非整列データの読み出し命令を2N回実行する必要がある背景技術に示した手順に比べて、より少ない命令数で非整列データ・ブロックの整列ロード処理を実行することができる。本実施の形態にかかるプロセッサ1は、非整列データ・ブロックのロード処理に要する実行時間の増大を抑制できるため、非整列データ・ブロックを用いた演算処理が多く含まれる、つまり非整列データ・ブロックのロード処理が多発するデジタルフィルタ処理等に好適である。
なお、図1では、プロセッサ1の外部に命令メモリ50及びデータメモリ51が存在する構成を示した。しかしながら、例えば、命令メモリ50若しくはデータメモリ51又はこれら両方を含めて1チップに集積されたマイクロプロセッサなど、命令メモリ50又はデータメモリ51がプロセッサ1の内部に存在する構成としてもよい。つまり、本発明は、図1に示した具体的な実装に限られず、様々な実装形態のプロセッサに適用可能である。
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
実施の形態1にかかるプロセッサのブロック図である。 実施の形態1にかかるレジスタファイルのブロック図である。 実施の形態1にかかるレジスタファイルに含まれるレジスタエレメントの入出力ポートを示す図である。 実施の形態1にかかるレジスタファイルに含まれるレジスタエレメントのブロック図である。 レジスタエレメントのシフト動作に関する動作論理表である。 レジスタシフト命令の一例を示す図である。 実施の形態1における非整列データ・ブロックの読み出し処理を示すフローチャートである。 本発明の実施の形態における非整列データ・ブロックの読み出し処理と従来の処理とを対比するための図である。 従来の非整列データのロード命令を説明するための図である。 従来の非整列データ・ブロックのロード処理を説明するための図である。
符号の説明
1 プロセッサ
10 命令バッファ
11 命令デコード部
12 制御部
13 レジスタファイル
14 命令実行部
40 レジスタ
41 シフト回路
42〜44 セレクタ
45 OR回路
50 命令メモリ
51 データメモリ
130 書き込みコマンド生成回路
131 読み出しデータ選択回路
132 AND回路
RE_#0〜RE_#31 レジスタエレメント

Claims (9)

  1. 命令をデコードする命令デコード部と、
    前記命令デコード部によりデコードされた命令に対応する処理を実行する命令実行部と、
    データメモリからのロードデータを格納可能であり、前記命令実行部に対して入力データを供給するレジスタファイルとを備え、
    前記レジスタファイルは、各々が複数ビットのデータを保持可能な複数のレジスタを有し、前記レジスタファイルは前記複数のレジスタから選択された少なくとも3つの隣接したレジスタ間が直接的かつ電気的に接続できるように構成され、前記少なくとも3つの隣接したレジスタの保持データを前記少なくとも3つの隣接したレジスタの間でシフトさせることで前記少なくとも3つの隣接したレジスタの保持データを更新可能である、プロセッサ。
  2. 前記レジスタファイルは、前記複数のレジスタのうちでデータシフトの対象となる1つ以上の対象レジスタとこれらに隣接するレジスタとの間で選択的にデータシフト動作を行うことにより、前記対象レジスタの保持データを選択的に更新する請求項1に記載のプロセッサ。
  3. 前記レジスタファイルのデータシフト動作の実行を指示するシフト命令が前記命令デコード部によってデコードされた場合に、前記レジスタファイルに対してデータシフト動作の実行を指示する制御信号を出力する制御部をさらに備える請求項1又は2に記載のプロセッサ。
  4. 前記制御信号は、前記複数のレジスタのうちでデータシフトの対象となる1つ以上のレジスタの指定、データシフト方向の指定、及びデータシフト量の指定を含む請求項3に記載のプロセッサ。
  5. 前記シフト命令のオペランド部には、前記複数のレジスタのうちでデータシフトの対象となるレジスタの指定が含まれる請求項3又は4に記載のプロセッサ。
  6. 前記複数のレジスタの各々は、隣接する2つのレジスタのうち少なくとも一方の保持データと自身の保持データとを結合した結合データに対してシフト処理を行うシフト回路を有し、シフト処理後の結合データを用いて自身の保持データを更新可能である請求項1乃至のいずれか1項に記載のプロセッサ。
  7. 請求項1に記載のプロセッサに接続されたデータメモリから、前記複数のレジスタの各々のレジスタ長の2倍以上のデータ長であって、かつ、データ境界が前記データメモリのワード境界と一致していない非整列データ・ブロックを前記レジスタファイルへ読み出すデータ読み出し方法であって、
    整列データの読み出しを指示する整列ロード命令を繰り返し実行することで、前記非整列データ・ブロックを含む範囲の複数の整列データを前記データメモリから前記レジスタファイルに転送し、
    前記レジスタファイルのデータシフト動作の実行を指示するシフト命令を実行することで、前記複数の整列データを保持しているレジスタの間で保持データをシフトさせ、前記非整列データ・ブロックを前記複数のレジスタに整列化された状態で格納する、データ読み出し方法。
  8. 前記レジスタファイルのデータシフトは、前記複数のレジスタのうちで前記非整列データ・ブロックを保持しているレジスタの間で選択的に行われる、請求項7に記載のデータ読み出し方法。
  9. 前記シフト命令のオペランド部には、前記複数のレジスタのうちでデータシフトの対象となる両端の2つレジスタの指定が含まれ、前記レジスタファイルのデータシフトは、前記オペランド部に指定された2つのレジスタに挟まれているレジスタを選択的に連結して行われる、請求項7又は8に記載のデータ読み出し方法。
JP2007200606A 2007-08-01 2007-08-01 プロセッサ及びプロセッサによるデータ読み出し方法 Expired - Fee Related JP5068597B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007200606A JP5068597B2 (ja) 2007-08-01 2007-08-01 プロセッサ及びプロセッサによるデータ読み出し方法
US12/216,956 US20090037702A1 (en) 2007-08-01 2008-07-14 Processor and data load method using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007200606A JP5068597B2 (ja) 2007-08-01 2007-08-01 プロセッサ及びプロセッサによるデータ読み出し方法

Publications (2)

Publication Number Publication Date
JP2009037386A JP2009037386A (ja) 2009-02-19
JP5068597B2 true JP5068597B2 (ja) 2012-11-07

Family

ID=40339259

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007200606A Expired - Fee Related JP5068597B2 (ja) 2007-08-01 2007-08-01 プロセッサ及びプロセッサによるデータ読み出し方法

Country Status (2)

Country Link
US (1) US20090037702A1 (ja)
JP (1) JP5068597B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4837305B2 (ja) * 2005-05-10 2011-12-14 ルネサスエレクトロニクス株式会社 マイクロプロセッサ及びマイクロプロセッサの制御方法
JP5569730B2 (ja) * 2010-06-16 2014-08-13 横河電機株式会社 フィールド通信システム
US20130086366A1 (en) * 2011-09-30 2013-04-04 Qualcomm Incorporated Register File with Embedded Shift and Parallel Write Capability

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
US5987561A (en) * 1995-08-31 1999-11-16 Advanced Micro Devices, Inc. Superscalar microprocessor employing a data cache capable of performing store accesses in a single clock cycle
US7085795B2 (en) * 2001-10-29 2006-08-01 Intel Corporation Apparatus and method for efficient filtering and convolution of content data
US6334176B1 (en) * 1998-04-17 2001-12-25 Motorola, Inc. Method and apparatus for generating an alignment control vector
JP3776732B2 (ja) * 2001-02-02 2006-05-17 株式会社東芝 プロセッサ装置
FI20010924A (fi) * 2001-05-03 2002-11-04 Nokia Corp Mikroprosessorin muistinkäsittely
US7370184B2 (en) * 2001-08-20 2008-05-06 The United States Of America As Represented By The Secretary Of The Navy Shifter for alignment with bit formatter gating bits from shifted operand, shifted carry operand and most significant bit
US7272622B2 (en) * 2001-10-29 2007-09-18 Intel Corporation Method and apparatus for parallel shift right merge of data
EP1508853A1 (en) * 2003-08-19 2005-02-23 STMicroelectronics Limited Computer system and method for loading non-aligned words
US7483420B1 (en) * 2004-03-08 2009-01-27 Altera Corporation DSP circuitry for supporting multi-channel applications by selectively shifting data through registers
JP2005267209A (ja) * 2004-03-18 2005-09-29 Sunplus Technology Co Ltd プロセッサ中で未アライメントデータを読み取る装置及び方法
US7434040B2 (en) * 2005-07-25 2008-10-07 Hewlett-Packard Development Company, L.P. Copying of unaligned data in a pipelined operation
US20070083737A1 (en) * 2005-08-16 2007-04-12 Ibm Corporation Processor with efficient shift/rotate instruction execution
US20070106883A1 (en) * 2005-11-07 2007-05-10 Choquette Jack H Efficient Streaming of Un-Aligned Load/Store Instructions that Save Unused Non-Aligned Data in a Scratch Register for the Next Instruction

Also Published As

Publication number Publication date
US20090037702A1 (en) 2009-02-05
JP2009037386A (ja) 2009-02-19

Similar Documents

Publication Publication Date Title
US4814976A (en) RISC computer with unaligned reference handling and method for the same
US7941648B2 (en) Methods and apparatus for dynamic instruction controlled reconfigurable register file
JP2816248B2 (ja) データプロセッサ
JP2001256105A (ja) 非整列循環アドレス指定を用いるマイクロプロセッサ
US8145804B2 (en) Systems and methods for transferring data to maintain preferred slot positions in a bi-endian processor
US20230359462A1 (en) Look-up table initialize
US20230325189A1 (en) Forming Constant Extensions in the Same Execute Packet in a VLIW Processor
CN108139911B (zh) 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格
US20150355906A1 (en) Vector memory access instructions for big-endian element ordered and little-endian element ordered computer code and data
JP2009536774A (ja) マイクロプロセッサ内において複数のレジスタユニットからの対応する半語ユニットを結合するための方法及びシステム
JP5068597B2 (ja) プロセッサ及びプロセッサによるデータ読み出し方法
US20200249955A1 (en) Pair merge execution units for microinstructions
US6041387A (en) Apparatus for read/write-access to registers having register file architecture in a central processing unit
US10437598B2 (en) Method and apparatus for selecting among a plurality of instruction sets to a microprocessor
US7925862B2 (en) Coprocessor forwarding load and store instructions with displacement to main processor for cache coherent execution when program counter value falls within predetermined ranges
KR20200028965A (ko) 데이터 처리장치에서의 벡터 인터리빙
US8452945B2 (en) Indirect indexing instructions
JP5327432B2 (ja) 信号処理プロセッサ及び半導体装置
JP5145659B2 (ja) ベクトルリネーミング方式およびベクトル型計算機
JP4444305B2 (ja) 半導体装置
JP5380102B2 (ja) マイクロプロセッサ
US8572147B2 (en) Method for implementing a bit-reversed increment in a data processing system
JP6344022B2 (ja) 演算処理装置および演算処理装置の制御方法
JP2861560B2 (ja) データ処理装置
US11960897B2 (en) Apparatus and methods employing a shared read post register file

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100512

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120412

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: 20120807

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120815

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150824

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5068597

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees