JP2010191511A - マイクロプロセッサ - Google Patents

マイクロプロセッサ Download PDF

Info

Publication number
JP2010191511A
JP2010191511A JP2009032534A JP2009032534A JP2010191511A JP 2010191511 A JP2010191511 A JP 2010191511A JP 2009032534 A JP2009032534 A JP 2009032534A JP 2009032534 A JP2009032534 A JP 2009032534A JP 2010191511 A JP2010191511 A JP 2010191511A
Authority
JP
Japan
Prior art keywords
data
memory
instruction
bank
load
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.)
Granted
Application number
JP2009032534A
Other languages
English (en)
Other versions
JP5380102B2 (ja
Inventor
Masato Sumiyoshi
正人 住吉
Takashi Miyamori
高 宮森
Shunichi Ishiwatari
俊一 石渡
Katsuyuki Kimura
克行 木村
Takahisa Wada
卓久 和田
Keiri Nakanishi
圭里 中西
Yasutaka Tanabe
靖貴 田邉
Ryuji Haneda
隆二 羽田
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2009032534A priority Critical patent/JP5380102B2/ja
Priority to US12/648,769 priority patent/US20100211758A1/en
Publication of JP2010191511A publication Critical patent/JP2010191511A/ja
Application granted granted Critical
Publication of JP5380102B2 publication Critical patent/JP5380102B2/ja
Active 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)

Abstract

【課題】面積オーバヘッドや消費電力を低く抑えたマイクロプロセッサを提供する。
【解決手段】本発明は、データ配列単位での順次処理が可能なマイクロプロセッサであって、フェッチされた命令がデータのロード命令である場合に、指定されたデータを含んだデータ列をメモリ幅単位でデータメモリ16からロードし、また、命令の解析結果に基づいて、ロードしたデータ列のうち、次回のロード命令で指定される予定のデータを特定するロードストアユニット14と、ロードストアユニット14により特定されたデータを記憶するデータ一時記憶部17と、を備える。
【選択図】図4

Description

本発明は、マイクロプロセッサに関する。
マイクロプロセッサは、命令が格納されたメモリ(命令メモリ)、命令メモリから実行する命令をフェッチする(読み出す)命令フェッチユニット、命令フェッチユニットにより読み出された命令に従い、データが格納されたメモリへのアクセスや演算を行うプロセッシングユニット、データメモリ、などを備え、1回の命令で複数のデータに対する処理を同時に行うことが可能である。
ここで、プロセッシングユニットが実行する命令には、命令が示す処理で使用するデータ(データメモリからロードするデータ)の幅(ビット数)とデータメモリのメモリ幅とがアラインされていないものも含まれる。そのため、従来のマイクロプロセッサでは、このような命令を実行する際のレイテンシ増加やスループット低下を防止するために、メモリインスタンスを分割してバンク数を増加させた構成を採用し、命令により指定されたデータが存在しているすべてのバンクに同時アクセスする手法が使用されていた。
しかしながら、上記のような手法では、バンク数の増加に伴って面積オーバヘッドも増大してしまう、という問題がある。また、同時アクセスするバンク数の増加に伴い消費電力も増加する。
なお、下記特許文献1には、従来のマイクロプロセッサの一例として、パフォーマンスの低下を抑えた画像処理装置が記載されている。また、下記特許文献2には、従来のマイクロプロセッサの他の例として、SIMD(Single Instruction Multiple Data)演算を効率良く行う半導体集積回路が記載されている。しかしながら、これらの特許文献1および2に記載の技術においては、データメモリのバンク数については考慮されていない。
特開2004−38544号公報 特開2002−358288号公報
本発明は、面積オーバヘッドや消費電力を従来よりも低く抑えたマイクロプロセッサを提供することを目的とする。
本願発明の一態様によれば、データ配列単位での順次処理が可能なマイクロプロセッサであって、フェッチした命令がデータのロード命令である場合に、指定されたデータを含んだデータ列をメモリ幅単位でデータメモリからロードし、また、前記命令の解析結果に基づいて、前記ロードしたデータ列のうち、次回のロード命令で指定される予定のデータを特定するロードストアユニットと、前記ロードストアユニットにより特定されたデータである使用予定データを記憶するデータ一時記憶部と、を備えるマイクロプロセッサが提供される。
本発明によれば、参照データとメモリ幅がアラインされていない命令を実行する際の同時に参照するデータメモリのバンク数を削減できる。この結果、面積オーバヘッドや消費電力を従来よりも低く抑えたプロセッサが実現できる、という効果を奏する。
図1は、命令実行時に使用するデータ(処理対象データ)とデータメモリのメモリ幅がアラインされている場合の動作例を示した図。 図2は、命令実行時に使用するデータ(処理対象データ)とデータメモリのメモリ幅がアラインされていない場合の動作例を示した図。 図3は、3×3画素の画像データを示した図。 図4は、第1の実施の形態にかかるマイクロプロセッサの構成例を示す図。 図5は、データ幅がメモリ幅にアラインされていない場合のメモリアクセス動作の概念を示した図。 図6は、データ一時記憶部の内部構成例を示す図。 図7は、マイクロプロセッサの全体動作を示した図。 図8は、メモリの各バンクに対する動作の関係を例示した図。 図9は、第2の実施の形態にかかるマイクロプロセッサが備えるアドレス生成部の構成例を示す図。
以下に添付図面を参照して、本発明の実施の形態にかかるマイクロプロセッサ(以下、単に「プロセッサ」と記載する)を詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
ここでまず、各実施の形態にかかるプロセッサが実行する命令の種類と、同じ命令を従来のプロセッサが実行した場合の動作例について説明する。
図1は、命令実行時に使用するデータ(処理対象データ)とデータメモリのメモリ幅がアラインされている場合におけるプロセッサの動作例を示した図である。図1は、dmem_widthの幅を持つデータメモリに対し、処理対象の画像データがラスタスキャン順(D0(0),D1(0),D2(0),…)に配置されている場合の動作例を示している。より詳細には、プロセッサ(pu)が、dmem_width幅のデータの各要素(D0(k),D1(k),D2(k),…,D7(k)、ただし、k=0,1,2,…,n-1,n,n+1,…)に対して、複数の演算器エレメント(p#0,p#1,…,p#7)を割り当てて並列に命令を実行することにより、dmem_width単位でSD(0),SD(1),…,SD(n)の順に処理を進めるSIMD型演算の動作例を示している。なお、命令inst-lのSD(n)に対する実行をinst-l(n)と表現している。
また、図1は、SD(n)のデータ(D0(n),D1(n),D2(n),…,D7(n))に対する演算において、命令inst-l(n)によるメモリ参照がメモリ幅dmem_widthにアラインされている場合の例を示している。このようなケースでは、各演算レメント(p#0〜p#7)に供給するデータ(D0(n),D1(n),D2(n),…,D7(n))を1回のメモリアクセスでロード可能である。
また、図2は、図1の例とは異なり、命令実行時に使用するデータとデータメモリのメモリ幅がアラインされていない場合におけるプロセッサの動作例を示した図である。これは、たとえば、図3に示したような3×3画素の画像データに対するフィルタ処理などで、各演算エレメントが、ある画素データ(ある画素位置のデータ)およびこれの1つ前および1つ後ろの画素データの2つのデータ(たとえば、b0とb2の位置にある2つの画素データ、b3とb5の位置にある2つの画素データ、など)を同時に読み出すことで演算を高速化できる場合に有効な動作である。
図示したように、図2の動作においては、演算エレメントp0は、D7(n-1)とD1(n)を参照し、演算エレメントp1は、D0(n)とD2(n)を参照する。同様に、演算エレメントpiは、Di-1(n)とDi+1(n)を参照する(i=2,3,4,5,6)。また、演算エレメントp7は、D6(n)とD0(n+1)を参照する。すなわち、演算エレメントp0およびp7はメモリ幅dmem_widthの境界を跨いだ領域から2つのデータをロードする必要がある。このような動作を処理速度の低下を回避しつつ実現する場合、従来のプロセッサでは、3つのバンク(bank)を同時に参照できるような構成を採用して実現していた。しかしながら、このような複数(この例では3つ)のバンクを同時に参照可能な構成とした場合、すでに述べたように、面積オーバヘッドや消費電力の増大を招くことになる。したがって、同時に参照するバンク数は必要最小限に抑えた方が、面積オーバヘッドや消費電力の面で有利であり、結果として、コスト削減や性能向上を実現できる。
(第1の実施の形態)
つづいて、第1の実施の形態にかかるプロセッサについて説明する。なお、本実施の形態および第2の実施の形態では、プロセッサがSIMD型プロセッサの場合の例について説明するが、演算器の構成がSIMDではない場合にも適用可能である。図4は、本発明の第1の実施の形態にかかるプロセッサの構成例を示す図である。図示したように、本実施の形態にかかるプロセッサは、命令メモリ(imem)1と、命令フェッチユニット(ifu)2と、プロセッシングユニット(pu)4と、データメモリ(dmem)16と、データ一時記憶部(prevldbuf)17とを備える。
命令メモリ1は、プロセッシングユニット5を制御するための命令を保持するメモリである。命令フェッチユニット2は、実行する命令の番号を示す値を出力するプログラムカウンタ(pc)3を備えており、このプログラムカウンタ3の出力値に従い、実行する命令を命令メモリ1から取り出す。
プロセッシングユニット4は、命令デコーダ(dec)5、複数の演算エレメント(p)6〜13およびロードストアユニット(lsu)14を備え、命令フェッチユニット2が命令メモリ1から取り出した命令に従い、各種処理を実行する。具体的には、命令フェッチユニット2で取り出された命令を受け取り、それを命令デコーダ5がデコードし、デコード後の命令に従い、ロードストアユニット14がデータメモリ16との間のデータのやりとり行とともに、演算エレメント6〜13が各種演算を実行する。なお、ロードストアユニット14は、データメモリ16との間のデータの読み出し(ロード)や書き込み(ストア)をメモリ幅単位で行う。また、ロードストアユニット14は、ロードしたデータの中に、次回のロード命令でも指定される予定のデータが含まれている場合、そのデータをデータ一時記憶部17に格納する。加えて、演算エレメントが次に実行する処理で使用するデータ(使用予定データ)がデータ一時記憶部17に格納されている場合、その使用予定データを取得する。
ここで、本実施の形態にかかるプロセッサの制御で使用する各種命令のフォーマットについては特に規定しないが、命令フェッチユニット2から受け取ったロード命令には、データメモリ16からロードしたデータが次回のロード命令でも指定される予定であるかどうかの情報を含むものとする。
データメモリ16は、2つのバンク領域(バンク#0,バンク#1)からなり、これら2つのバンクをプロセッシングユニット4から同時に参照できるようになっている。
データ一時記憶部17は、制御回路(ctrl)18と、アドレス生成部(addr)19と、2バンク(バンクA,バンクB)構成のメモリ(SRAM:Static Random Access Memory)20と、を備え、プロセッシングユニット4から、将来使用する予定のデータ(D1)を受け取った場合それを保持し、保持しているデータの読み出し要求を受けた場合、要求が示すデータ(D2)を出力する。
制御回路(制御部)18は、ロードストアユニット14から入力された制御信号S2およびS3に従い、メモリ20との間で、データ読み出しおよびデータ書き込みを行う。アドレス生成部19は、プログラムカウンタの出力値(S1)に基づいて、メモリ20にアクセスするためのアドレスを生成する。メモリ20は、プロセッシングユニット4から受け取ったデータを、いずれかのバンク領域で保持する。
以上のような構成をとる本実施の形態にかかるプロセッサは、データ配列単位(図1や図2に示したSD(0),SD(1),…,SD(n)に相当)で処理をラスタスキャン順に進める機能を有する。ここで、上記データ配列単位で処理をラスタスキャン順に進める場合、inst-m(n)(ある命令mのn回目の実行)で処理するデータは、inst-m(n-1)で処理するデータ配列と隣接しており、ロード命令が指定するデータ幅とデータメモリのメモリ幅がアラインされていれば、inst-m(n)がSD(n)に対するロード要求を出した場合、inst-m(n-1)はSD(n-1)を、inst-m(n+1)はSD(n+1)を参照することになる。
そこで、本実施の形態のプロセッサでは、inst-m(n)により読み出したデータの中に、inst-m(n+1)でも参照するデータが存在する場合、すなわち、ロード命令が指定するデータ幅とデータメモリのメモリ幅がアラインされていない場合、inst-m(n+1)でも参照するデータをデータ一時記憶部17で保持しておく。たとえば、図2に示した例の場合、inst-m(n)でロードしたデータのうち、inst-m(n+1)でも共通して参照され、かつinst-m(n+1)にとってメモリアラインからずれたデータD7(n)をデータ一時記憶部17に格納する。そして、inst-m(n+1)では、データメモリ16からD0(n+1)〜D7(n+1),D0(n+2)を読み出すと共に、inst-m(n)のロード命令実行時に格納しておいたD7(n)をデータ一時記憶部17から取り出し、データメモリ16から読み出したデータ(D0(n+1)〜D7(n+1),D0(n+2))と結合して、演算処理で使用する最終的なデータ(処理対象データ)を得る。なお、この動作(メモリ幅にアラインされていないアクセス動作)の概念を図5に示している。このような動作を実行することにより、メモリ幅にアラインされていないアクセスにおける、同時に参照するデータメモリのバンク数を必要最小限に抑えられる。
図6は、上述したメモリ幅にアラインされていないアクセス動作で利用されるデータ一時記憶部17の内部構成例を示す図である。なお、図6において、図4で示したものと同じ構成要素には同一の符号を付している。また、図6においては、アドレス生成部19およびメモリ20を除いた残りの部分が制御回路18に相当する。
このデータ一時記憶部17で保持するデータ数の上限は、プロセッサが許容するメモリアラインからのずれ幅に依存する。すなわち、データ一時記憶部17がもつメモリ(SRAM)20の各バンクは、上記ずれ幅に相当する数のデータを格納できるだけのビット幅に制限することが可能である。たとえば、図2に示したアクセスのみに対応したプロセッサの場合、メモリアラインからのはみだし幅は1なので、メモリ20の各バンクのデータ幅は、1データ相当の幅であればよい。具体例を示すと、1データが16bitであれば、各バンクのデータ幅は16bitでよい。このようにすることで、メモリ容量を抑えることができる。なお、図6では、データ幅を64bitとした場合の例を示している。
また、メモリ20の各バンク(バンクA,B)のワード数は、SD(n-1)のデータを参照可能な命令数に制限することで小さくすることが可能である。たとえば、ロード命令で指定可能なメモリアラインからの最大のずれ幅を16bit(16bitデータ×1個)、メモリアラインからずれたロード命令の発行可能数上限を32命令とすると、バンクA,Bは16bit×16ワード構成(バンクAとBの合計ワード数が32)であればよい。これにより、メモリ容量を抑えることができる。
上記構成のデータ一時記憶部17は、命令フェッチユニット2のプログラムカウンタ3からの出力信号(プログラムカウンタ値)であるPC(S1)と、プロセッシンユニット4のロードストアユニット14からの出力信号であるMemLdReq(S2)およびLeftAccess(S3)と、に従い、ロードストアユニット14からwdata(D1)経由で受け取ったデータをメモリ20に格納するとともに、メモリ20で保持しておいたデータをrdata(D2)経由でロードストアユニット14へ出力する。ここで、MemLdReq信号(S2)は、データ一時記憶部17で保持しているデータの出力(ロード)を要求する信号であり、LeftAccess信号(S3)は、メモリアラインからずれたアクセスであることを示す信号である。なお、詳細については後述するが、データ一時記憶部17では、メモリ20の一方のバンクに対してデータを書き込む動作と他方のバンクからデータを読み出す動作とを同時に行うことにより、プロセッサ全体としての処理速度の低下を防止している。
次に、データ一時記憶部17の詳細動作について、プロセッサ内の関連する他の部分の動作説明を交えながら説明する。
命令フェッチユニット2により命令メモリ1から取り出された命令がデータのロード命令であり、かつメモリアラインからずれたメモリアクセスを示す場合、ロードストアユニット14は、データ一時記憶部17に対するMemLdReq信号S2およびLeftAccess信号S3をアサート(活性化)する。
データ一時記憶部17では、MemLdReq信号S2がアサートされたことを検出すると、メモリ20の読み出し動作を行う。以降、このサイクルをL0と呼ぶ。
具体的には、まず、制御回路18において、MemLdReq信号S2およびLeftAccess信号S3のANDをとることで、メモリ20の読み出し動作を示す信号(PBuffReadReq)を生成する。また、読み出し動作に連続して後述の書き込み動作を行うために、PBuffReadReqをrPBuffReqとしてレジスタに書き込む。
また、アドレス生成部19では、入力されたプログラムカウンタ値(以下「PC値」と記載する)に基づいて、メモリ20のアクセス先を示すアドレス信号(ReadAddress)およびバンク選択信号(ReadBankSel)を生成する。より詳細には、PC値の最下位ビットをバンク選択信号とし、残りのビットをアドレス信号として出力する。このようにした場合、PC値が連続するロード命令により使用するバンクが逆になり、後述する更新動作を連続して行うことが可能となる。また、ReadBankSelとReadAddressは次のサイクル(L1)で参照するため、rBankSelおよびrAddressとしてレジスタに書きこむ。
また、制御回路18では、上記PBuffReadReqがアサートされている場合、ReadBankSelに従いバンクを選択する。具体的には、ReadBankSelが0であればバンクA読み出し要求信号(ReadBankA)を有効に、一方、ReadBankSelが1であればバンクB読み出し要求信号(ReadBankB)を有効にする。
さらに、制御回路18では、BankA制御回路に対して読み出し要求(ReadBankA)と読み出しアドレス(ReadAddress)が入力され、BankA制御回路は、入力された読み出し要求(ReadBankA)と後述する書き込み要求とが衝突しなければ、バンクAのアクセス要求(Req(A))を有効にする。同様に、BankB制御回路に対して読み出し要求(ReadBankB)と読み出しアドレス(ReadAddress)が入力され、BankB制御回路は、入力された読み出し要求(ReadBankB)と後述する書き込み要求とが衝突しなければ、バンクBのアクセス要求(Req(B))を有効にする。
そして、制御回路18は、メモリ20のバンクAおよびバンクBから出力されたデータのどちらか一方をrBankSelに従い選択し、データ一時記憶部17の読み出しデータrdata(D2)としてロードストアユニット14に向けて出力する。
データ一時記憶部17から出力されたデータを受け取ったロードストアユニット14は、図7の上段に示したように、データ一時記憶部17から出力されたrdata(D2)と、データメモリ16から読み出したデータを結合して、各演算エレメントにおける演算処理単位(長さ)のデータを生成する。生成されたデータは所定の演算エレメントに渡され、データを受け取った演算エレメントは、命令デコーダ5でデコードされた命令に従った演算を実行する。
ここで、図7は、プロセッサの全体動作を示した図であり、上段には、サイクルL0で実行するデータメモリ16およびメモリ20(SRAM)からのデータ読み出し動作を示している。また、下段には、その次のサイクルL1で実行する動作を示している。すなわち、サイクルL0の次のサイクルL1におけるデータ一時記憶部17の動作では、サイクルL0の動作でアクセス(参照)したメモリ20内の領域に格納されたデータを更新する。
更新動作を具体的に示すと、更新する領域を示すバンクとアドレスは、読み出し時のものと同じであるため、制御回路18は、サイクルL0で使用した値を保持しているレジスタrBankSelおよびrAddressを読み出して、更新用のバンク選択信号WriteBankSelおよびアドレスWriteAddressとする。
また、制御回路18は、サイクルL0で読み出し動作を行ったことを表す前述のrPBuffReqを保持しているレジスタから値を読み出し、それを書き込み要求信号PBuffWriteReqとする。そして、このPBuffWriteReqがアサートされている場合、上記WriteBankSelに従いバンクを選択する。すなわち、WriteBankSelが0であればバンクA書き込み要求信号(WriteBankA)を有効に、一方、WriteBankSelが1であればバンクB書き込み要求信号(WriteBankB)を有効にする。
さらに、制御回路18では、BankA制御回路に対して書き込み要求(WriteBankA)と書き込みアドレス(WriteAddress)が入力され、BankA制御回路は、入力された書き込み要求(WriteBankA)と上述した読み出し要求(ReadBankA)とが衝突しなければ、バンクAのアクセス要求(Req(A))を有効にする。同様に、BankB制御回路に対して書き込み要求(WriteBankB)と書き込みアドレス(WriteAddress)が入力され、BankB制御回路は、入力された書き込み要求(WriteBankB)と上述した読み出し要求(ReadBankB)とが衝突しなければ、バンクBのアクセス要求(Req(B))を有効にする。
そして、制御回路18は、上記アクセス要求(Req(A)またはReq(B))と、ロードストアユニット14から受け取った書き込みデータwdata(D2)をメモリ20に与えてデータを更新する。ここで、wdata(D2)は、ロードストアユニット14がデータメモリ16から読み出したD(n)のデータのうち、次の命令(inst-m(n+1))実行時にも参照する部分(図7に示した動作例では右端部分D7(n)に相当)のデータが選択されたものである。
なお、図6で例示したデータ一時記憶部17において、バンク制御回路(BankA制御回路,BankB制御回路)は、入力された書き込み要求(WriteBankA,WriteBankB)と読み出し要求(ReadBankA,ReadBankB)が衝突した場合にはアクセス要求(Req(A),Req(B))が有効とならないように、ExOR回路を備えた構成としたが、これをOR回路とし、ロードストアユニット14からデータ一時記憶部17への入力信号を制御することによって、上記書き込み要求と読み出し要求が衝突しないような動作を実現してもよい。
また、上記説明では、メモリ20の一方のバンクに対するデータ読み出し動作およびデータ書き込み動作について示したが、プロセッサでは、他方のバンクに対して逆の動作(一方が読み出し動作を行っていれば、他方は書き込み動作を行う)を並行して行うことにより、全体としての処理速度の低下を防止している(図8参照)。図8は、メモリ20の各バンクに対する動作の関係を例示した図である。なお、“update”と記載されたサイクルでデータ書き込み動作を行う。
このように、本実施の形態のプロセッサでは、参照データ(処理対象データ)とデータメモリのメモリ幅がアラインされていないロード命令を実行する際、ロードするデータ列の中に、次回実行するロード命令で参照されるデータ(次回実行するロード命令で指定される予定のデータ)が含まれていれば、そのデータをデータ一時記憶部に保持しておき、次のロード命令の実行時には、保持しておいたデータをデータ一時記憶部から読み出すとともに、データ一時記憶部から読み出したデータ以外の残りの処理対象データ(ロード命令で指定されたデータのうち、一時記憶部で保持されていないデータ)をデータメモリから読み出すこととした。また、メモリ内の一方のバンクからデータを読み出す処理と、他方のバンクへデータを書き込む処理を並列に実行することとした。これにより、参照データとメモリ幅がアラインされていない命令を実行する際のレイテンシ増加やスループット低下を防止するために設けるデータメモリ内のバンク数を、従来よりも少なくできる。この結果、処理性能を維持しつつ面積オーバヘッドや消費電力を低く抑えたプロセッサが実現できる。
なお、上記特許文献1に記載の技術では、入力ラインバッファからSIMDプロセッサへのデータ転送時間が増大するケースがある。すなわち、データ転送速度がAビット/サイクル,SIMD処理で使用するデータのビット幅(ビット数)がBビットの場合、転送時間はB/Aサイクルとなるが、たとえば、A=16,B=128とした場合、転送時間は8サイクルとなり、入力ラインバッファにデータが格納されてからSIMD演算を開始するまでの待ち時間が発生する。また、上記特許文献2に記載の技術では、デュアルポートのデータバッファの利用を前提としている。しかしながら、本実施の形態のSIMDプロセッサでは、上記のような演算開始までの待ち時間(2サイクル以上の待ち時間)が発生するケースはなく、また、デュアルポートのデータバッファ利用を前提とすることもない。
(第2の実施の形態)
上述した第1の実施の形態のプロセッサでは、データ一時記憶部17のアドレス生成部19がプログラムカウンタ値(PC値)の最下位ビットをバンクセレクト信号として使用し、残りのビットをアドレス信号として使用する構成を採用していた(図6参照)。これに対して、本実施の形態では、PC値とLUT(ルックアップテーブル)に基づいてバンクセレクト信号とアドレス信号を生成する構成のプロセッサについて示す。なお、プロセッサの全体構成は、第1の実施の形態のプロセッサと同一である(図4参照)。
図9は、第2の実施の形態にかかるプロセッサが備えるデータ一時記憶部のアドレス生成部の構成例を示す図である。なお、データ一時記憶部の構成は、アドレス生成部19aを除いて、実施の形態1のデータ一時記憶部17と同一である(図6参照)。
図9に示したように、アドレス生成部19aは、LUT21、複数の比較器22および信号選択部23を備える。LUT21は、複数(図9ではn個)のレコード領域を含み、各レコードは、タグ(tag)、アドレス(address)およびバンク識別情報(bankID)のフィールドからなる。比較器22は、LUT21内のレコード数と同じ数だけ存在し、対応付けられたレコード内のタグと入力されたPC値との比較結果を出力する。各比較結果は信号選択部23へ入力される。信号選択部23は、入力された各比較結果に基づいていずれか一つのレコードを選択し、そこに登録されているアドレスおよびバンク識別情報を出力する。また、この動作を実現するための構成要素として、LUT21の各レコードに格納されたアドレスのうちの一つを各比較器22における比較結果に基づいて選択する第1のマルチプレクサ(mux#1)と、LUT21の各レコードに格納されたバンク識別情報のうちの一つを各比較器22における比較結果に基づいて選択する第2のマルチプレクサ(mux#2)とを備える。
上記のようなアドレス生成部19aを採用した場合にも、第1の実施の形態で示したプロセッサと同様の効果が得られるプロセッサが実現できる。
3 プログラムカウンタ、14 ロードストアユニット、16 データメモリ、17 データ一時記憶部、18 制御回路、19,19a アドレス生成部、20 メモリ。

Claims (5)

  1. データ配列単位での順次処理が可能なマイクロプロセッサであって、
    フェッチされた命令がデータのロード命令である場合に、指定されたデータを含んだデータ列をメモリ幅単位でデータメモリからロードし、また、前記命令の解析結果に基づいて、前記ロードしたデータ列のうち、次回のロード命令で指定される予定のデータを特定するロードストアユニットと、
    前記ロードストアユニットにより特定されたデータである使用予定データを記憶するデータ一時記憶部と、
    を備えることを特徴とするマイクロプロセッサ。
  2. 前記ロードストアユニットは、さらに、データをロードした場合、前回のロード命令実行時に使用予定データとして特定したデータが前記データ一時記憶部で記憶されていれば、当該記憶されている使用予定データを取得し、前記ロードしたデータのうちの、今回のロード命令で指定されたデータと結合して、今回のロード命令に対応する最終的な処理対象データを生成することを特徴とする請求項1に記載のマイクロプロセッサ。
  3. 前記データ一時記憶部は、
    前記使用予定データを格納するメモリと、
    プログラムカウンタの値に基づいて、前記メモリ内のアクセス対象領域を決定するアドレス生成部と、
    前記アドレス生成部により決定されたアクセス対象領域にアクセスし、前記ロードストアユニットからの指示に従って、当該ロードストアユニットから受け取った使用予定データの書き込み処理、または、書き込み済みの使用予定データを読み出して当該ロードストアユニットへ出力する処理、を行う制御部と、
    を備えることを特徴とする請求項1または2に記載のマイクロプロセッサ。
  4. 前記メモリを2バンク構成のメモリとし、
    前記アドレス生成部は、プログラムカウンタの値に基づいて、前記メモリ内の一方のバンクを指定するバンクセレクト信号および指定したバンク内のアクセス対象領域を示すアドレス信号を生成し、
    前記制御部は、前記アドレス生成部により生成されたバンクセレクト信号およびアドレス信号に従い、使用予定データを前記メモリの一方のバンクに書き込む処理、および前記メモリの他方のバンクから使用予定データを読み出す処理、を並行して実行する
    ことを特徴とする請求項3に記載のマイクロプロセッサ。
  5. 前記アドレス生成部は、ルックアップテーブルを利用し、当該ルックアップテーブルの各レコード内の情報とプログラムカウンタ値との比較結果に基づいて前記アクセス対象領域を決定することを特徴とする請求項3または4に記載のマイクロプロセッサ。
JP2009032534A 2009-02-16 2009-02-16 マイクロプロセッサ Active JP5380102B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009032534A JP5380102B2 (ja) 2009-02-16 2009-02-16 マイクロプロセッサ
US12/648,769 US20100211758A1 (en) 2009-02-16 2009-12-29 Microprocessor and memory-access control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009032534A JP5380102B2 (ja) 2009-02-16 2009-02-16 マイクロプロセッサ

Publications (2)

Publication Number Publication Date
JP2010191511A true JP2010191511A (ja) 2010-09-02
JP5380102B2 JP5380102B2 (ja) 2014-01-08

Family

ID=42560886

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009032534A Active JP5380102B2 (ja) 2009-02-16 2009-02-16 マイクロプロセッサ

Country Status (2)

Country Link
US (1) US20100211758A1 (ja)
JP (1) JP5380102B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012137944A (ja) * 2010-12-27 2012-07-19 Mitsubishi Electric Corp メモリアクセス装置
WO2014068789A1 (ja) * 2012-11-05 2014-05-08 三菱電機株式会社 メモリ制御装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5998261A (ja) * 1982-11-27 1984-06-06 Toshiba Corp 情報処理装置
JPH04148253A (ja) * 1990-10-08 1992-05-21 Nec Corp メモリ読出書込制御方式
JPH06332793A (ja) * 1993-05-20 1994-12-02 Nec Eng Ltd データアライメント回路
JPH11272464A (ja) * 1998-02-10 1999-10-08 Internatl Business Mach Corp <Ibm> 投機的境界不整列ロ―ド操作方法及び装置
JP2002229777A (ja) * 2001-02-02 2002-08-16 Toshiba Corp プロセッサ装置
JP2005267209A (ja) * 2004-03-18 2005-09-29 Sunplus Technology Co Ltd プロセッサ中で未アライメントデータを読み取る装置及び方法
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

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453380B1 (en) * 1999-01-23 2002-09-17 International Business Machines Corporation Address mapping for configurable memory system
EP1050806A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Memory access address comparison
JP2010015438A (ja) * 2008-07-04 2010-01-21 Toshiba Corp メモリコントローラ
JP4970378B2 (ja) * 2008-07-31 2012-07-04 株式会社東芝 メモリコントローラおよび画像処理装置
JP5100611B2 (ja) * 2008-10-28 2012-12-19 株式会社東芝 画像処理装置
JP5121671B2 (ja) * 2008-10-30 2013-01-16 株式会社東芝 画像処理プロセッサ
JP4901891B2 (ja) * 2008-11-05 2012-03-21 株式会社東芝 画像処理プロセッサ

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5998261A (ja) * 1982-11-27 1984-06-06 Toshiba Corp 情報処理装置
JPH04148253A (ja) * 1990-10-08 1992-05-21 Nec Corp メモリ読出書込制御方式
JPH06332793A (ja) * 1993-05-20 1994-12-02 Nec Eng Ltd データアライメント回路
JPH11272464A (ja) * 1998-02-10 1999-10-08 Internatl Business Mach Corp <Ibm> 投機的境界不整列ロ―ド操作方法及び装置
JP2002229777A (ja) * 2001-02-02 2002-08-16 Toshiba Corp プロセッサ装置
JP2005267209A (ja) * 2004-03-18 2005-09-29 Sunplus Technology Co Ltd プロセッサ中で未アライメントデータを読み取る装置及び方法
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

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012137944A (ja) * 2010-12-27 2012-07-19 Mitsubishi Electric Corp メモリアクセス装置
WO2014068789A1 (ja) * 2012-11-05 2014-05-08 三菱電機株式会社 メモリ制御装置
JP5797342B2 (ja) * 2012-11-05 2015-10-21 三菱電機株式会社 メモリ制御装置
US9715427B2 (en) 2012-11-05 2017-07-25 Mitsubishi Electric Corporation Memory control apparatus

Also Published As

Publication number Publication date
US20100211758A1 (en) 2010-08-19
JP5380102B2 (ja) 2014-01-08

Similar Documents

Publication Publication Date Title
US10860326B2 (en) Multi-threaded instruction buffer design
US6842848B2 (en) Method and apparatus for token triggered multithreading
JP6143872B2 (ja) 装置、方法、およびシステム
US6925643B2 (en) Method and apparatus for thread-based memory access in a multithreaded processor
US10026458B2 (en) Memories and methods for performing vector atomic memory operations with mask control and variable data length and data unit size
JP5431003B2 (ja) リコンフィギュラブル回路及びリコンフィギュラブル回路システム
JP2006318051A (ja) マイクロプロセッサ及びマイクロプロセッサの制御方法
JPH04343151A (ja) メモリアクセス装置
US7805590B2 (en) Coprocessor receiving target address to process a function and to send data transfer instructions to main processor for execution to preserve cache coherence
US20100318766A1 (en) Processor and information processing system
US20100325631A1 (en) Method and apparatus for increasing load bandwidth
JP5380102B2 (ja) マイクロプロセッサ
CN106610817B (zh) 用于采取vliw处理器中的相同执行数据包中的常数扩展槽指定或扩展常数位数的方法
US6670895B2 (en) Method and apparatus for swapping the contents of address registers
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
US20100225656A1 (en) Data processing systems and methods of operating the same in which memory blocks are selectively activated in fetching program instructions
JP5902208B2 (ja) データ処理装置
JP2011204208A (ja) マルチコアプロセッサ
US11960897B2 (en) Apparatus and methods employing a shared read post register file
US8255672B2 (en) Single instruction decode circuit for decoding instruction from memory and instructions from an instruction generation circuit
EP1251431A2 (en) Reduction of bank switching instructions in main memory of data processing apparatus having main memory and plural memory banks
JP2005535045A (ja) Vliw命令を処理するためのプロセッサおよび方法
JP3517139B2 (ja) 情報処理装置
JP4151497B2 (ja) パイプライン処理装置
JPH07200289A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121023

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130618

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130814

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130930

R151 Written notification of patent or utility model registration

Ref document number: 5380102

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151