JP2010122741A - データ処理装置 - Google Patents

データ処理装置 Download PDF

Info

Publication number
JP2010122741A
JP2010122741A JP2008293510A JP2008293510A JP2010122741A JP 2010122741 A JP2010122741 A JP 2010122741A JP 2008293510 A JP2008293510 A JP 2008293510A JP 2008293510 A JP2008293510 A JP 2008293510A JP 2010122741 A JP2010122741 A JP 2010122741A
Authority
JP
Japan
Prior art keywords
arithmetic
carry
unit
calculation
computing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008293510A
Other languages
English (en)
Inventor
Toshinori Sueyoshi
敏則 末吉
Masahiro Iida
全広 飯田
Yuta Mizogami
雄太 溝上
Mitsuomi Nakano
光臣 中野
Katsuya Mizumoto
勝也 水本
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 Technology Corp
Kumamoto University NUC
Original Assignee
Renesas Technology Corp
Kumamoto University NUC
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 Technology Corp, Kumamoto University NUC filed Critical Renesas Technology Corp
Priority to JP2008293510A priority Critical patent/JP2010122741A/ja
Publication of JP2010122741A publication Critical patent/JP2010122741A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Advance Control (AREA)

Abstract

【課題】演算粒度を変更可能なデータ処理装置を提供すること
【解決手段】OR回路34、演算粒度に応じて、PE(2n)21−1内の演算回路32から出力される下位ビットの演算によって発生する桁上げと、PE(2n+1)21−2内の演算回路32から出力される上位ビットの演算によって発生する桁上げとのいずれかを選択してPE(2n)21−1内の演算回路32に出力する。また、OR回路37は、演算粒度に応じて、PE(2n+1)21−2内の演算回路32から出力される上位ビットの演算によって発生する桁上げと、PE(2n)21−1内の演算回路32から出力される下位ビットの演算によって発生する桁上げとのいずれかを選択してPE(2n+1)21−2内の演算回路32に出力する。したがって、演算粒度を変更することが可能となる。
【選択図】図9

Description

本発明は、複数の演算器を同時に動作させて演算処理を行なう技術に関し、特に、演算粒度を変更可能なデータ処理装置に関する。
近年、携帯端末機器の普及に伴い、音声や画像のような大量のデータを高速に処理するデジタル信号処理の重要性が高くなってきている。一般に、このようなデジタル信号処理には、専用の半導体装置としてDSP(Digital Signal Processor)が用いられることが多い。しかしながら、処理対象のデータが非常に多い場合には、専用DSPを用いたとしても性能を飛躍的に向上させることは難しい。
たとえば、演算対象のデータが1万組ある場合には、1つ1つのデータに対する積和演算を1マシンサイクルで実行できたとしても、演算のために最低でも1万サイクルが必要になる。すなわち、1つ1つのデータに対する処理は高速であるが、データ処理が直列であるため、オーディオや画像などのようにデータ量が多くなると、それに比例して処理時間が長くなってしまう。
処理対象のデータが多い場合には、並列演算によって処理性能を向上させることが可能である。すなわち、演算器を複数個用意し、それらを同時に動作させることで複数のデータ処理を同時に行なうことが可能である。このとき、複数のデータに対して同じ演算を行なう場合には、SIMD(Single Instruction stream-Multiple Data stream)と呼ばれる方式を採用することにより、高い並列性を保ったまま演算器の面積を削減することが可能である。すなわち、データ処理器を複数用意するが、命令を解釈して処理を制御する制御部を共通にすることで、小さい面積で高い性能を発揮させることができる。これに関連する技術として、下記の特許文献1に開示された発明がある。
特許文献1に開示された発明は、大量のデータを、その演算内容およびデータビット幅にかかわらず高速で演算処理する半導体装置に関する。メモリセルマットを複数のエントリに分割し、各エントリに対応して、演算処理ユニットを配置し、これらのエントリと対応の演算処理ユニットとの間で、ビットシリアルかつエントリパラレル態様で演算処理を実行する。並列演算性が低い場合には、このメモリセルマット下部に設けられた演算器群に対して、エントリシリアルかつビットパラレル態様でデータを転送して演算処理を実行する。
特開2006−127460号公報
上述のようなデータ処理装置においては、プロセッサを単純化してプロセッサ数を増加させ、それらのプロセッサを超並列に動作させることによりピーク性能を向上させている。一般に、プロセッサによる演算の並列度が高ければ、それを搭載したデータ処理装置は高い性能を示す。しかしながら、アプリケーションや処理内容によっては演算の並列度が低下することがある。
たとえば、プロセッサが処理する演算データの数が多い場合には、データ群が複数のエントリにわたって配置される。これらのデータ群内のデータ間で依存関係がある場合には、依存関係のある一方のデータの演算が終了するまで他方のデータの演算が待たされる。
このような逐次処理が発生すると、演算の並列度が低下してデータ処理装置の処理性能が低下する。したがって、アプリケーションや処理内容に依存せずに、高い並列度で動作する処理機構が必要であるが、上記の特許文献1では、このような問題点を解決することができない。
本発明は、上記問題点を解決するためなされたものであり、その目的は、演算粒度を変更可能なデータ処理装置を提供することである。
本発明の一実施例によれば、複数のPEを並列に動作させて演算処理を行なうデータ処理装置が提供される。複数のPEのそれぞれは、データレジスタに記憶される演算データの中の所定ビットの演算を行なう演算回路と、桁上げを記憶して演算回路に出力するキャリーレジスタとを含む。
PE(2n)はさらに、演算粒度に応じて、PE(2n)内の演算回路から出力される下位ビットの演算によって発生する桁上げと、PE(2n+1)内の演算回路から出力される上位ビットの演算によって発生する桁上げとのいずれかを選択してPE(2n)内のキャリーレジスタに出力する回路を含む。
また、PE(2n+1)はさらに、演算粒度に応じて、PE(2n+1)内の演算回路から出力される上位ビットの演算によって発生する桁上げと、PE(2n)内の演算回路から出力される下位ビットの演算によって発生する桁上げとのいずれかを選択してPE(2n+1)内のキャリーレジスタに出力する回路を含む。
この実施例によれば、データ処理装置は、演算粒度に応じて、PE(2n)内の演算回路から出力される下位ビットの演算によって発生する桁上げと、PE(2n+1)内の演算回路から出力される上位ビットの演算によって発生する桁上げとのいずれかを選択してPE(2n)内のキャリーレジスタに出力する回路と、PE(2n+1)内の演算回路から出力される上位ビットの演算によって発生する桁上げと、PE(2n)内の演算回路から出力される下位ビットの演算によって発生する桁上げとのいずれかを選択してPE(2n+1)内のキャリーレジスタに出力する回路とを含むので、演算粒度を変更することが可能となる。
図1は、本発明のデータ処理装置を含んだ半導体装置の概略構成を示すブロック図である。図1(a)は、半導体装置の全体構成を示している。この半導体装置1は、SDRAM(Synchronous Dynamic Random Access Memory)2に接続されており、複数の演算器(以下、PE(Processor Element)と呼ぶ。)を有するデータ処理装置(以下、MX(Matrix Processor)コアとも呼ぶ。)11と、ホストCPU(Central Processing Unit)12と、DMAC(Direct Memory Access Controller)13と、メモリコントローラ14とを含み、これらがバス15を介して接続される。
SDRAM2は、ホストCPU12によって実行されるプログラム、プログラムの実行の際に参照されるデータや、MXコア11によって実行される命令コード、演算データなどを記憶する。メモリコントローラ14は、ホストCPU12およびDMAC13からの要求に応じてSDRAM2に対する命令コードおよびデータの読出し/書込みを行なう。
ホストCPU12は、図示しない内蔵メモリに記憶される命令コードをフェッチして実行したり、メモリコントローラ14を介してSDRAM2から命令コードをフェッチして実行したりすることにより、半導体装置1全体の制御を行なう。
DMAC13は、ホストCPU12からのDMA転送要求に応じて半導体装置1内のDMA転送を制御する。たとえば、DMAC13は、SDRAM2とMXコア11内の命令メモリ25との間のDMA転送を実行する。
図1(b)は、MXコア11の内部構成を示すブロック図である。このMXコア11は、m個のPE21−1〜21−mと、PE21−1〜21−mに対応するmエントリ分のデータレジスタ22−1〜22−mと、I/Oインタフェース23と、コントローラ24とを含む。また、コントローラ24は、命令メモリ25を含む。なお、本発明においては、MXコア11が1024エントリに対応した個数のPEおよびデータレジスタを有する場合について説明するが、PEおよびデータレジスタの個数はこれに限定されるものではない。また、1エントリ分のデータレジスタが左右に512ビット(合計1024ビット)ずつ配置される場合について説明するが、ビット数はこれに限定されるものではない。
データレジスタ22−1〜22−mは、たとえばメディアデータをサンプリングされたデータの配列として記憶する。PE21−1〜21−mのそれぞれは、データレジスタ22−1〜22−mに記憶された配列データの各要素に対して演算を行うことにより並列に処理を行なう。なお、PE21−1〜21−mおよびデータレジスタ22−1〜22−mの動作の詳細は後述の各実施の形態において説明する。
I/Oインタフェース23は、バス15を介してデータの入出力を行なう。I/Oインタフェース23は、バス15を介して演算処理要求を受けると、その演算処理要求をコントローラ24に出力する。また、I/Oインタフェース23は、コントローラ24から演算処理結果を受けると、その演算処理結果をバス15を介して出力する。
コントローラ24は、I/Oインタフェース23から演算処理要求を受けると、命令メモリ25に格納されたマイクロコードに対応する演算を順次PE21−1〜21−mに行なわせ、演算処理要求に対応した演算処理を行なわせる。そして、コントローラ24は、演算処理結果をI/Oインタフェース23に出力する。
図2は、MXコア11による並列演算の一例を示す図である。オペランド(演算データ)aおよびbが左右のデータレジスタに配置されており、コントローラ24によって1024エントリ分のデータが指定されると、PEは左右のデータレジスタからオペランドaおよびbを読み出し(ロード)、演算を行なう。PEは、演算結果cを再度データレジスタに格納する(ストア)。
このロード、演算、およびストアのNbit処理は1サイクルで完了し、オペランドのデータ長分だけ繰り返される。MXコア11は、このSIMD演算を最大1024だけ並列に行なうことにより高い処理性能を実現する。また、MXコア11にはマスキング機能が用意されており、特定のエントリのみで演算を行なうことも可能である。
図3は、MXコア11の問題点を説明するための図である。MXコア11は、時間シリアル処理を空間パラレル処理に変換した処理構造を有している。したがって、空間面積(PE)を有効利用できれば、すなわち、演算時に高い並列度を維持できれば、MXコア11は高い処理性能を実現することができる。しかしながら、アプリケーションや処理内容によっては並列度が低下することがあり、性能低下の原因となっている。以下、この問題を、「並列度低下の問題」と呼ぶ。
図3(a)は、データ群に対してシーケンシャルな処理が必要な場合のPEの稼動状況を示している。このシーケンシャルな処理の一例として、ACO(Ant Colony Optimization)アルゴリズムが挙げられる。ACOアルゴリズムにおいては、Data[k]の演算は、Data[k−1]の演算結果が決定するまで待たされる。したがって、図3(a)に示すように、データ群が2エントリにわたる場合、片方のPEはエントリの演算が行なえないため、MXコア11の並列度が低下する。なお、図3(a)においては、処理の前半のPE稼動状況を示しており、斜線を施した一方のPEが稼動中であり、斜線を施さない他方のPEが非稼動中である。
図3(b)は、1データが複数エントリにわたる場合のPEの稼動状況を示している。このような処理の一例として、RSA(Rivest-Shamir-Adleman method)暗号が挙げられる。図3(b)に示すように、RSA暗号においては、取り扱うデータのサイズが大きいため、1データが2エントリにわたって配置される。PEによる演算は下位ビットから順次行なわれるため、上位ビットの演算は下位ビットの演算終了まで待たされる。そのため、演算の並列度はおおよそ半分になる。
図3(c)は、演算に使用しないエントリが発生する場合のPEの稼動状況を示してる。このような処理の一例として、MP3デコード処理を挙げることができる。図3(c)に示すように、MP3デコーダにおいては、グラニュールと呼ばれる576データが並列処理の対象となる。MXコア11の全てのPE(1024個)のうち、約半分(576個)だけが稼動し、他のPEが稼動しないため、MXコア11の並列度は低下する。
このように、演算データが複数エントリにまたがり、かつ互いのエントリ間の演算データに依存関係がある場合や、演算対象のデータ数が1024未満の場合には、MXコア11の並列度が低下してしまうため、処理性能が低下することになる。
一般に、アプリケーションは幾つかの処理によって構成され、それぞれの処理には適した演算粒度が存在し、そのような適した演算粒度で処理を行うことにより、効率のよい実装と高い性能とを実現できる。しかしながら、アプリケーション毎に処理の割合が異なるため、演算粒度を固定した処理機構では面積的に、および速度的に効率のよい実装を行なうことはできない。以下、この問題を、「演算粒度依存の問題」と呼ぶ。
図4は、図3に示すMXコア11の問題点に対する代替技術を示す図である。図4(a)は、PEの演算粒度をNbitから2Nbitに粗くした場合を示している。この場合、1PEのサイズが大きくなるため、MXコア11としての回路面積も大きくなる。そのため、MXコア11の動作周波数を高くすることができないといった問題が発生する。
また、演算粒度が固定されているため、上述の「演算粒度依存の問題」を解決することはできない。
図4(b)は、データレジスタのサイズを拡張した場合を示している。この場合、MXコア11としての回路面積も大きくなってしまう。また、データレジスタとPEとの間の配線長が長くなってしまい、配線遅延が増大することになる。この配線遅延の増大は、MXコア11の動作周波数の低下を招くことになる。
また、データレジスタを拡張して配線するため、その配線上でデータレジスタとPEとの間の高速データ転送を行なうためには、センスアンプおよびライトドライバにおける消費電力が増大してしまう。また、演算粒度が固定されているため、上述の「演算粒度依存の問題」を解決することはできない。
本発明は、演算器(PE)の演算粒度を変更可能とするものであり、隣接する複数のPEをカスケード接続することによって粒度変更を実現する。図5は、本発明の基本原理を説明するための図である。図5(a)は、演算粒度がNbitの場合のPEを示しており、上述の「並列度低下の問題」が発生していることを示している。
図5(b)は、演算粒度を変更することにより、k個のNbitのPEを1個のk・NbitのPEとした場合を示している。図5(b)に示すように、PEの演算粒度を変更することにより全てのPEを稼動状態とすることができる。
逆に、演算粒度を変更することにより、1個のk・NbitのPEをk個のNbitのPEとすることも可能である。
図6は、本発明による「並列度低下の問題」の解決の一例を説明するための図である。図6(a)は、演算粒度がNbitの場合のPEにおける並列度を示している。図6(a)においては、Data1の上位ビットと下位ビットとが異なるPEで演算されるため、Data1の下位ビットの演算が終了するまで上位ビットの演算が待たされてしまい、並列度が50%となる。
図6(b)は、演算粒度が2Nbitの場合のPEにおける並列度を示している。図6(b)において、Data1の上位ビットと下位ビットとが1つのPEで演算されるため、全てのPEが並列に演算を行なうことができ、並列度が100%となる。
図6(c)は、演算粒度が3Nbitの場合のPEにおける並列度を示している。図6(c)において、Data1の上位ビットおよび下位ビットと、Data2の下位ビットとが1つのPEで演算され、Data2の上位ビットと、Data3の上位ビットおよび下位ビットとが異なるPEで演算されるため、Data2の下位ビットの演算が終了するまで上位ビットの演算が待たされてしまい、並列度が75%となる。
図6(a)〜図6(c)に示すように、演算粒度がNbitであり、1データが2エントリにまたがる場合には並列度が50%となるが、演算粒度を2Nbitとすることにより並列度が100%になり、2.0倍の性能改善となる。また、演算粒度を3Nbitとすることにより並列度が75%となり、1.5倍の性能改善となる。
図7は、本発明による「並列度低下の問題」の解決の他の一例を説明するための図である。図7(a)は、演算粒度がNbitの場合のPEにおける並列度を示している。図7(a)においては、Data1の上位ビットが第1のPEで演算され、Data1の中位ビットが第2のPEで演算され、Data1の下位ビットが第3のPEで演算されるため、第3のPEによる演算が終了するまで第2のPEによる演算が待たされ、第2のPEによる演算が終了するまで第1のPEによる演算が待たされてしまい、並列度が30%となる。
図7(b)は、演算粒度が2Nbitの場合のPEにおける並列度を示している。図7(b)において、Data1の中位ビットと下位ビットとが第1のPEで演算され、Data1の上位ビットとData2の下位ビットとが第2のPEで演算され、Data2の上位ビットと中位ビットとが第3のPEで演算されるため、第1のPEによるData1の中位ビットの演算が終了するまで第2のPEによるData1の上位ビットの演算が待たされ、第2のPEによるData2の下位ビットの演算が終了するまで第3のPEによるData2の中位ビットの演算が待たされてしまい、並列度が50%となる。
図7(c)は、演算粒度が3Nbitの場合のPEにおける並列度を示している。図7(c)において、Data1の上位ビット、中位ビットおよび下位ビットが1つのPEで演算され、Data2の上位ビット、中位ビットおよび下位ビットが異なるPEで演算されるため、全てのPEが並列に演算を行なうことができ、並列度が100%となる。
図7(a)〜図7(c)に示すように、演算粒度がNbitであり、1データが3エントリにまたがる場合には並列度が30%となるが、演算粒度を2Nbitとすることにより並列度が50%になり、1.7倍の性能改善となる。また、演算粒度を3Nbitとすることにより並列度が100%となり、3.0倍の性能改善となる。
このように、PEの演算粒度を適切な演算粒度とすることにより、「並列度低下の問題」を解決することができる。また、処理内容に応じてPEの演算粒度を変更することにより、上述の「演算粒度依存の問題」も解決することができる。
図8は、PEの基本的構成を示すブロック図である。このPE21は、並列に設けられる1ビットのレジスタ(XレジスタおよびXHレジスタ)31と、2ビット演算回路32と、キャリーレジスタ(Cレジスタ)33とを含む。このPE21による演算は、以下のように行われる。
まず、左側のデータレジスタ22から、XレジスタおよびXHレジスタ31に2ビットの演算データが読み出される(Read)。次に、演算回路32は、XレジスタおよびXHレジスタ31の値(IN1)、右側のデータレジスタ22の2ビットの値(IN2)、およびキャリーレジスタ33の1ビットの値(CIN)を演算する(Modify)。
最後に、演算回路32は、演算結果(OUT)を右側のデータレジスタ22に書き込み、桁上げ(COUT)をキャリーレジスタ33に格納する(Write)。これらは1サイクルで実行され、演算データのデータ長分だけ演算が繰り返される。なお、キャリーレジスタ33の初期値は“0”となっている。
(第1の実施の形態)
本発明におけるデータ処理装置においては、複数エントリのPE間で桁上げ伝播をするためにカスケード接続を行なう。しかしながら、k個のPEをカスケード接続すれば、粗粒度化後のPEにおいてk倍の組合わせ遅延が発生することになる。これでは、MXコア11の動作周波数を下げなければならない。
本発明の第1の実施の形態においては、演算粒度の変更をMXコア11の動作周波数を下げずに行なうために、粗粒度化するエントリ間の動作タイミングをずらすことにより、桁上げ遅延が動作周波数に与える影響を回避するものである。
図9は、本発明の第1の実施の形態におけるMXコア11の内部構成の一例を示すブロック図である。本実施の形態におけるMXコア11は、PE間の桁上げ伝播配線の経路を切替えることにより、演算粒度を2ビットから4ビット、または4ビットから2ビットに切替えることを可能にしたものである。以下、粒度変更後の演算として加算命令の場合について説明するが、これは減算および乗算は加算命令から構成されているためであり、加算命令で粒度変更後の演算が可能であれば減算および乗算も実現可能だからである。
PE(2n)21−1は、XレジスタおよびXHレジスタ31と、2ビット演算回路32と、キャリーレジスタ(Cレジスタ)33と、OR回路34と、スイッチ回路35および36とを含む。また、PE(2n+1)21−2は、XレジスタおよびXHレジスタ31と、2ビット演算回路32と、キャリーレジスタ33と、OR回路37と、スイッチ回路38および39とを含む。
演算粒度が2ビットの場合にはselect信号に“0”が出力され、インバータ40は“1”を出力する。このとき、スイッチ回路35が導通状態となり、演算回路32からの桁上げ(COUT)がキャリーレジスタ33に入力される。そして、キャリーレジスタ33の値がOR回路34を介して演算回路32に入力される。一方、スイッチ回路36は非導通状態となる。
また、インバータ41は“1”を出力し、スイッチ回路39が導通状態となり、演算回路32からの桁上げ(COUT)がキャリーレジスタ33に入力される。そして、キャリーレジスタ33の値がOR回路37を介して演算回路32に入力される。一方、スイッチ回路38は非導通状態となる。したがって、PE(2n)21−1およびPE(2n+1)21−2は、それぞれ2ビットPEとして動作することになる。
演算粒度が4ビットの場合にはselect信号に“1”が出力され、インバータ40は“0”を出力する。このとき、スイッチ回路35が非導通状態となり、OR回路34はPE(2n+1)21−2内の演算回路32からの桁上げ(COUT)を演算回路32に出力する。一方、スイッチ回路36は導通状態となり、PE(2n)21−1内の演算回路32からの桁上げ(COUT)がPE(2n+1)21−2内のOR回路37を介して演算回路32に入力される。
また、スイッチ回路38が導通状態となり、PE(2n+1)21−2内の演算回路32からの桁上げ(COUT)がPE(2n)21−1内のOR回路34を介して演算回路32に入力される。一方、インバータ41は“0”を出力し、スイッチ回路39は非導通状態となり、PE(2n)21−1内の演算回路32からの桁上げ(COUT)がOR回路37を介して演算回路32に入力される。したがって、PE(2n)21−1およびPE(2n+1)21−2は、4ビットPEとして動作することになる。なお、演算粒度が4ビットの場合には、PE(2n)21−1のトリガと、PE(2n+1)21−2のトリガとが半サイクルずらされる。
また、図9に示すように、偶数エントリと奇数エントリとの間でデータが2ビット単位で交互に配置されることになる。
図10は、本発明の第1の実施の形態におけるMXコア11の内部構成の他の一例を示すブロック図である。PE(2n)21−1は、XレジスタおよびXHレジスタ31と、2ビット演算回路32と、キャリーレジスタ33と、セレクタ42とを含む。また、PE(2n+1)21−2は、XレジスタおよびXHレジスタ31と、2ビット演算回路32と、キャリーレジスタ33と、セレクタ43とを含む。
図10に示すPE(2n)21−1およびPE(2n+1)21−2の内部構成は、図9に示す内部構成と比較して、OR回路、スイッチ回路およびインバータをセレクタに置換したものであり、基本的な動作は同じである。したがって、その動作の詳細な説明は繰り返さない。
図11は、本発明の第1の実施の形態におけるMXコア11の演算粒度を4ビットとしたときの動作を説明するためのタイミングチャートである。まず、最初のサイクルにおいて、クロック信号の立ち上がりで左側のデータレジスタ22−1から演算データaおよびaが読み出され、右側のデータレジスタ22−1から演算データbおよびbが読み出される(Read)。
次に、PE(2n)21−1は、下位2ビットの加算を行ない(Modify)、キャリーCをPE(2n+1)21−2に出力する。そして、演算結果SおよびSを右側のデータレジスタ22−1に書き込む(Write)。
一方、PE(2n+1)21−2は、半サイクル遅れて動作を開始し、クロック信号の立ち下がりで左側のデータレジスタ22−2から演算データaおよびaが読み出され、右側のデータレジスタ22−2から演算データbおよびbが読み出される(Read)。
次に、PE(2n+1)21−2は、演算データa、a、b、bおよびキャリーCを用いて上位2ビットの加算を行ない(Modify)、キャリーCをPE(2n)21−1に出力する。そして、演算結果SおよびSを右側のデータレジスタ22−2に書き込む(Write)。
2番目のサイクルにおいて、PE(2n)21−1は、PE(2n+1)21−2から出力されるキャリーを用いて下位2ビットの演算を行ない、以降同様の動作を繰り返す。また、PE(2n+1)21−2は、2番目のサイクル以降も同様の動作を繰り返す。この4ビットの加算は、データ長だけ繰り返される。
以上説明したように、本実施の形態におけるデータ処理装置によれば、PE(2n)21−1およびPE(2n+1)21−2は、演算粒度を2ビットにする場合には、演算回路32の桁上げ出力(COUT)を自身の桁上げ入力(CIN)に接続し、演算粒度を4ビットにする場合には、演算回路32の桁上げ出力(COUT)を他方の演算回路32の桁上げ入力(CIN)に接続するようにしたので、演算粒度を変更可能なデータ処理装置を提供することが可能となった。すなわち、「並列度低下の問題」および「演算粒度依存の問題」を解決することが可能となった。
また、演算粒度を4ビットにする場合、PE(2n)21−1のトリガとPE(2n+1)21−2のトリガとを半サイクルずらすようにし、エントリ間で発生する演算開始のずれの時間を桁上げ伝播のための時間として確保するようにしたので、所要サイクル数の増加を抑えつつ、PEの粗粒度化によって発生する桁上げ伝播遅延の問題を解決することが可能となった。また、これにより、後述の第2〜第4の実施の形態におけるデータ処理装置と比較して、追加リソースを抑えることができる。
また、粗粒度化した場合であっても、2Nbitの演算に必要なエントリ数は2エントリであり、後述の第2および第4の実施の形態におけるデータ処理装置と比較して、より少ないエントリ数で粒度変更が行なえ、実装効率を高めることが可能である。
また、図4(a)に示す代替技術のように、1PEのサイズを大きくする必要がないため、同じ並列度(エントリ数)の場合には、代替技術と比較してMXコア11の回路面積を小さく抑えることができ、MXコア11の動作周波数が低下するのを防止することが可能となった。
また、図4(b)に示す代替技術のように、データレジスタを拡張する必要がないため、代替技術と比較してMXコア11の回路面積を小さく抑えることができ、消費電力の増大を防止することが可能となった。
(第2の実施の形態)
本発明の第1の実施の形態におけるMXコア11は、粗粒度化するエントリ間の動作タイミングをずらすことにより桁上げ遅延が動作周波数に与える影響を回避するものであった。本発明の第2の実施の形態におけるMXコア11は、演算データを上位桁と下位桁との2ブロックに分け、それぞれのブロックの演算を並列に行なう。ただし、上位桁のブロックについては、下位桁のブロックからの桁上げがある場合と桁上げがない場合との2種類の演算をしておき、下位桁のブロックからの桁上げが確定した時点で上位桁のブロックを選択するものである。したがって、本実施の形態におけるMXコア11は、PE間の桁上げ伝播遅延の影響を受けることはない。
図12は、本発明の第2の実施の形態におけるMXコア11の演算の流れを模式的に示す図である。図12においては、連続する3つのエントリのPEを、PE(3n)、PE(3n+1)、PE(3n+2)とし、8ビットの加算(a+b=S)の場合についての演算の流れが示されている。なお、n=0,1,2,…とする。
また、PE(3n)、PE(3n+1)およびPE(3n+2)は、図8に示すPEと同等の構成を有している。PE(3n)は、下位桁のブロックの演算を行なう。PE(3n+1)は、下位桁のブロックからの桁上げがない場合における上位桁のブロックの演算を行なうため、図8に示すキャリーレジスタ33の初期値として“0”が設定される。また、PE(3n+2)は、下位桁のブロックからの桁上げがある場合における上位桁のブロックの演算を行なうため、図8に示すキャリーレジスタ33の初期値として“1”が設定される。
図12(a)は、各エントリの初期配置を示している。PE(3n)に対応するエントリ3nには、演算データa[0]〜a[3]およびb[0]〜b[3]が配置される。また、PE(3n+1)に対応するエントリ3n+1には、演算データa[4]〜a[7]およびb[4]〜b[7]が配置される。なお、PE(3n+2)に対応するエントリ3n+2には、演算データは配置されない。
図12(b)に示すように、PE(3n)は、下位桁ブロックのうちa[0]およびa[1]と、b[0]およびb[1]との加算を行ない、加算結果S[0]およびS[1]をエントリ3nに格納する。これと並行して、PE(3n+1)は、下位桁ブロックからの桁上げがない場合を想定し、上位桁ブロックのうちa[4]およびa[5]と、b[4]およびb[5]との加算を行ない、加算結果S[4]およびS[5]をエントリ3n+1に格納する。また、PE(3n+2)は、下位桁ブロックからの桁上げがある場合を想定し、上位桁ブロックのうちa[4]およびa[5]と、b[4]およびb[5]との加算を行ない、加算結果S’[4]およびS’[5]をエントリ3n+2に格納する。
図12(c)に示すように、次に、PE(3n)は、下位桁ブロックのうちa[2]およびa[3]と、b[2]およびb[3]との加算を行ない、加算結果S[2]およびS[3]をエントリ3nに格納する。これと並行して、PE(3n+1)は、上位桁ブロックのうちa[6]およびa[7]と、b[6]およびb[7]との加算を行ない、加算結果S[6]およびS[7]をエントリ3n+1に格納する。また、PE(3n+2)は、上位桁ブロックのうちa[6]およびa[7]と、b[6]およびb[7]との加算を行ない、加算結果S’[6]およびS’[7]をエントリ3n+2に格納する。
図12(d)に示すように、最後に、PE(3n)は、下位桁ブロックの加算によって発生する桁上げC4を、エントリ3nのテンポラリ領域に保存する。
図13は、演算結果Sを次の演算で使用する場合のデータ読み出し方法を説明するための図である。PE(3n+1)による演算結果と、PE(3n+2)による演算結果とのどちらが有効であるかは、下位桁ブロックの演算後に発生する桁上げC4によって決定される。
図13(a)は、下位桁ブロックからの桁上げがない場合のデータ読み出しを示している。PE(3n)は、エントリ3nに格納される演算結果S[0]〜S[3]を読み出し、演算を行なう。また、PE(3n+1)およびPE(3n+2)は、エントリ3n+1に格納される演算結果S[4]〜S[7]を読み出し、演算を行なう。
図13(b)は、下位桁ブロックからの桁上げがある場合のデータ読み出しを示している。PE(3n)は、エントリ3nに格納される演算結果S[0]〜S[3]を読み出し、演算を行なう。また、PE(3n+1)およびPE(3n+2)は、エントリ3n+2に格納される演算結果S’[4]〜S’[7]を読み出し、演算を行なう。
図14は、本発明の第2の実施の形態におけるMXコア11の演算動作を説明するためのタイミングチャートである。まず、最初のサイクルにおいて、クロック信号の立ち上がりでPE(3n)はエントリ3nから前回の演算結果の桁上げC4を読み出し、PE(3n+1)およびPE(3n+2)に転送する。
2番目のサイクルにおいて、PE(3n)は、エントリ3nから演算データaおよびaと、演算データbおよびbとを読み出し(Read)、2ビットの加算を行ない(Modify)、演算結果SおよびSをエントリ3nに書き込む(Write)。これと並行して、PE(3n+1)は、前回の桁上げC4に応じて、エントリ3n+1または3n+2から演算データaおよびaと、演算データbおよびbとを読み出し、2ビットの加算を行ない、演算結果SおよびSをエントリ3n+1に書き込む。また、PE(3n+2)は、前回の桁上げC4に応じて、エントリ3n+1または3n+2から演算データaおよびaと、演算データbおよびbとを読み出し、2ビットの加算を行ない、演算結果S’およびS’をエントリ3n+2に書き込む。
3番目のサイクルにおいて、PE(3n)〜PE(3n+2)は、2番目のサイクルと同様の動作を行ない、演算結果SおよびSがエントリ3nに書き込まれ、演算結果SおよびSがエントリ3n+1に書き込まれ、演算結果S’およびS’がエントリ3n+2に書き込まれる。
最後のサイクルにおいて、PE(3n)は、下位桁ブロックの桁上げCをエントリ3nに保存する。
図15は、本発明の第2の実施の形態におけるMXコア11の内部構成の一例を示す図である。本実施の形態におけるMXコア11は、基本的には、図8に示すMXコアの構成と同様である。図15においては、PEの内部構成のうちXレジスタのみを記載しており、さらにPE間データ通信を行なうために設けられたエントリコミュニケータ(ECM)回路の一部、および新たに追加された追加回路部が記載されている。
図13を用いて説明したように、PE(3n+1)およびPE(3n+2)は下位桁ブロックの桁上げに依存したデータ読み出しが必要となる。そのため、PE間データ通信を行なうために設けられたECM回路のセレクタ51〜54を利用する。
図15において、スイッチ回路55,59および60と、インバータ56〜58、102とが新たに追加された追加回路部である。演算粒度2ビットが選択された場合(select信号が“0”の場合)には、スイッチ回路55がオフとなって非導通状態となり、追加回路部が無効となる。したがって、図8に示すMXコア11と同様の動作を行なう。
演算粒度4ビットが選択された場合(select信号が“1”の場合)には、スイッチ回路55がオンとなって導通状態となり、追加回路部が有効となる。このとき、下位桁ブロックからの桁上げCが“0”であれば、インバータ57が“1”を出力し、インバータ58が“1”を出力する。インバータ102が“1”を出力し、スイッチ回路59が導通状態となり、スイッチ回路60が非導通状態となる。その結果、セレクタ53は、エントリ3n+1に格納される演算データS[4]〜S[7]を選択し、PE(3n+2)内のXレジスタ31−3に出力する。
また、下位桁ブロックからの桁上げCが“1”であれば、インバータ56が“0”を出力する。インバータ102が“0”を出力し、スイッチ回路59が非導通状態となり、スイッチ回路60が導通状態となる。その結果、セレクタ52は、エントリ3n+2に格納される演算データS’[4]〜S’[7]を選択し、PE(3n+1)内のXレジスタ31−2に出力する。
以上説明したように、本実施の形態におけるデータ処理装置によれば、上位桁ブロックの演算を行なう際、下位桁ブロックからの桁上げがある場合と桁上げがない場合との2種類の演算をしておき、下位桁ブロックからの桁上げが確定した時点で上位桁のブロックを選択するようにしたので、演算粒度を変更可能なデータ処理装置を提供することが可能となった。すなわち、「並列度低下の問題」および「演算粒度依存の問題」を解決することが可能となった。
また、第1の実施の形態におけるデータ処理装置のように、演算粒度が4ビットのときに偶数エントリと奇数エントリとの間でデータを2ビット単位で交互に配置する必要がなく、演算データの下位桁ブロックを偶数エントリに配置し、上位桁ブロックを奇数エントリに配置するだけで演算が行なえるため、複雑なデータの並べ替えが不要となった。
また、第1の実施の形態におけるデータ処理装置のように桁上げ伝播遅延の問題を解決するためにエントリ間の動作タイミングをずらす必要がないため、タイミング設計を容易に行なうことが可能となった。
また、上位桁ブロック用の演算ユニットとして新たにPEを割り当てるだけで粗粒度化が行なえるため、拡張性が高いデータ処理装置を提供することが可能となった。
(第3の実施の形態)
本発明の第3の実施の形態におけるデータ処理装置は、加算結果に現れる規則性を利用したユニットをPEに設けることにより、桁上げ伝播を待つことなく複数のPEで並列演算を行なうものである。
図16は、4ビット加算の一例を示す図である。ここで、a〜aの4ビットおよびb〜bの4ビットのうち、下位2ビットを下位桁ブロック、上位2ビットを上位桁ブロックと呼ぶことにする。このとき、下位桁ブロックから上位桁ブロックへ伝播する桁上げCを用いることにより、桁上げなし(C=0)として計算した上位桁ブロックの解(S,S,C)から、桁上げあり(C=1)のときの解(S’,S’,C’)を生成することができる。
図17は、加算結果に現れる規則性を説明するための図である。下位桁ブロックからの桁上げなし(C=0)として計算した上位桁ブロックの解をS,S,Cとすると、下位桁ブロックからの桁上げあり(C=1)の時のS’はSを反転した値となる。また、下位桁ブロックからの桁上げがあり(C=1)、S=1の時のS’はSを反転した値となる。また、下位桁ブロックからの桁上げがあり(C=1)、S=1であり、かつS=1の時のC’はCを反転した値となる。これら以外の条件の時のS’,S’およびC’は、S,SおよびCと同じ値となる。
図18は、図17に示す加算結果に現れる規則性に基づいて上位桁ブロックの演算を行なう回路構成の一例、およびその動作を説明するためのタイミングチャートである。図18(a)に示すように、2ビット加算器61は、下位桁ブロックのaおよびaと、bおよびbとの加算を行ない、桁上げCをユニット63に出力する。
また、2ビット加算器62は、下位桁ブロックからの桁上げがないときの、上位桁ブロックのaおよびaと、bおよびbとの加算を行ない、演算結果SおよびSと、桁上げCとをユニット63に出力する。
ユニット63は、2ビット加算器61から出力される桁上げCに基づいて、下位桁ブロックからの桁上げCを考慮した上位桁ブロックの解を生成して出力すると共に、下位桁ブロックからの桁上げCを考慮した上位桁ブロックの桁上げCをキャリーレジスタ33に書き込む。
図18(b)は、本発明の第3の実施の形態におけるMXコア11の動作を説明するためのタイミングチャートである。まず、最初のサイクルにおいて、PE(2n)は、演算データaおよびaと演算データbおよびbとをデータレジスタから読み出す(Read)。次に、PE(2n)は、下位2ビットの加算を行ない、桁上げCをPE(2n+1)側に出力する(Modify)。そして、PE(2n)は、演算結果SおよびSをデータレジスタに書き込む(Write)。
一方、同じタイミングで、PE(2n+1)は、演算データaおよびaと演算データbおよびbとをデータレジスタから読み出す(Read)。次に、PE(2n+1)は、上位2ビットの加算を行なって桁上げCを考慮しない解SおよびSをユニット63に出力する。このとき、ユニット63は、PE(2n)から出力される桁上げCに基づいて、桁上げCを考慮した解SおよびSを生成すると共に、桁上げCを考慮した桁上げCをPE(2n)側に出力する(Modify)。そして、PE(2n+1)は、演算結果SおよびSをデータレジスタに書き込む(Write)。
2番目のサイクルにおいて、PE(2n)は、ユニット63から出力される桁上げCを用いて下位2ビットの演算を行ない、以降同様の動作を繰り返す。また、PE(2n+1)は、2番目のサイクル以降も同様の動作を繰り返す。この4ビットの加算は、データ長だけ繰り返される。
図19は、本発明の第3の実施の形態におけるMXコア11の内部構成の一例を示すブロック図である。PE(2n)21−1は、XレジスタおよびXHレジスタ31と、2ビット演算回路32と、キャリーレジスタ(Cレジスタ)33と、セレクタ64とを含む。また、PE(2n+1)21−2は、XレジスタおよびXHレジスタ31と、2ビット演算回路32と、キャリーレジスタ33と、スイッチ回路67とを含む。
また、MXコア11はさらに、スイッチ回路65と、インバータ66,69,73および74と、セレクタ68,72および75と、AND回路70および71とを含む。これらの回路が、上述のユニット63に相当する。
演算粒度が2ビットの場合にはselect信号に“0”が出力され、スイッチ回路65が非導通状態となる。このとき、セレクタ64は、PE(2n)21−1内の演算回路32からの桁上げ(COUT)を選択してキャリーレジスタ33に出力する。
また、インバータ66は“1”を出力し、スイッチ回路67が導通状態となり、PE(2n+1)21−2内の演算回路32からの桁上げ(COUT)がキャリーレジスタ33に入力される。また、セレクタ72は、演算回路32の演算結果の上位ビット(OUT2)を選択してデータレジスタ22−2に出力する。また、セレクタ75は、演算回路32の演算結果の下位ビット(OUT1)を選択してデータレジスタ22−2に出力する。したがって、PE(2n)21−1およびPE(2n+1)21−2は、それぞれ2ビットPEとして動作することになる。
演算粒度が4ビットの場合にはselect信号に“1”が出力され、スイッチ回路65が導通状態となる。このとき、セレクタ64は、セレクタ68から出力されるPE(2n)21−1からの桁上げを考慮したPE(2n+1)21−2の桁上げを選択してキャリーレジスタ33に出力する。
また、インバータ66は“0”を出力し、スイッチ回路67が非導通状態となり、キャリーレジスタ33の出力が“0”に固定される。また、セレクタ75は、PE(2n)21−1からの桁上げが“0”のときに演算回路32の演算結果の下位ビット(OUT1)を選択してデータレジスタ22−2に出力し、桁上げが“1”のときにインバータ74から出力される演算結果の下位ビット(OUT1)を反転した値を選択してデータレジスタ22−2に出力する。
また、セレクタ72は、PE(2n)21−1からの桁上げが“1”であり、かつ演算結果の下位ビット(OUT1)が“1”のとき(AND回路70が“1”を出力するとき)に、インバータ73から出力される演算回路32の演算結果の上位ビット(OUT2)を反転した値を選択してデータレジスタ22−2に出力し、それ以外にとき(AND回路70が“0”を出力するとき)に、演算回路32の演算結果の上位ビット(OUT2)をそのままデータレジスタ22−2に出力する。
また、セレクタ68は、PE(2n)21−1からの桁上げが“1”であり、かつ演算結果の下位ビット(OUT1)および上位ビット(OUT2)が共に“1”のとき(AND回路71が“1”を出力するとき)に、インバータ69から出力される演算回路32の桁上げ(COUT)を反転した値を選択してPE(2n)21−1に出力し、それ以外にとき(AND回路71が“0”を出力するとき)に、演算回路32の桁上げ(COUT)をそのままPE(2n+1)21−1に出力する。
図20は、本発明の第3の実施の形態におけるMXコア11の内部構成の他の一例を示すブロック図である。PE(2n)21−1は、XレジスタおよびXHレジスタ31と、2ビット演算回路32と、キャリーレジスタ(Cレジスタ)33と、セレクタ64とを含む。また、PE(2n+1)21−2は、XレジスタおよびXHレジスタ31と、2ビット演算回路32と、キャリーレジスタ33と、スイッチ回路67とを含む。
また、MXコア11はさらに、スイッチ回路65と、インバータ66と、AND回路70および71と、論理和(OR)回路76と、排他的論理和(EX−OR)回路77および78とを含む。これらの回路が、上述のユニット63に相当する。
図20に示すMXコア11の内部構成は、図19に示す内部構成と比較して、インバータおよびセレクタをEX−OR回路またはOR回路に置換したものであり、基本的な動作は同じである。したがって、その動作の詳細な説明は繰り返さない。
以上説明したように、本実施の形態におけるデータ処理装置によれば、演算粒度を2ビットにする場合には、演算回路32の桁上げ出力(COUT)を自身の桁上げ入力(CIN)に接続し、演算粒度を4ビットにする場合には、下位桁ブロックからの桁上げがないときの上位桁ブロックの演算をしておき、ユニット63が下位桁ブロックからの桁上げに応じて桁上げを考慮した上位桁ブロックの解を生成するようにしたので、演算粒度を変更可能なデータ処理装置を提供することが可能となった。すなわち、「並列度低下の問題」および「演算粒度依存の問題」を解決することが可能となった。
また、ユニット63を用いることにより、桁上げ先見加算器と同様の機能を、より少ない回路リソースで実現することが可能となった。
また、所要サイクル数の増加を抑えつつ、PEの粗粒度化によって発生する桁上げ伝播遅延の問題を解決することが可能となった。
また、粗粒度化した場合であっても、2Nbitの演算に必要なエントリ数は2エントリであり、第2および第4の実施の形態におけるデータ処理装置と比較して、より少ないエントリ数で粒度変更が行なえ、実装効率を高めることが可能である。
(第4の実施の形態)
本発明の第2の実施の形態におけるMXコア11は、演算データを上位桁と下位桁との2ブロックに分け、それぞれのブロックの演算を並列に行なうものであった。本発明の第4の実施の形態におけるMXコア11は、演算データを上位桁、中位桁および下位桁の3ブロックに分け、それぞれのブロックの演算を並列に行なう。ただし、中位桁のブロックについては、下位桁のブロックからの桁上げがある場合と桁上げがない場合との2種類の演算をしておき、下位桁のブロックからの桁上げが確定した時点で中位桁のブロックを選択する。同様に、上位桁のブロックについては、中位桁のブロックからの桁上げがある場合と桁上げがない場合との2種類の演算をしておき、中位桁のブロックからの桁上げが確定した時点で上位桁のブロックを選択するものである。したがって、本実施の形態におけるMXコア11は、第2の実施の形態におけるMXコア11と同様に、PE間の桁上げ伝播遅延の影響を受けることはない。
図21は、本発明の第4の実施の形態におけるMXコア11の演算の流れを模式的に示す図である。図21においては、連続する5つのエントリのPEを、PE(5n)、PE(5n+1)、PE(5n+2)、PE(5n+3)およびPE(5n+4)とし、12ビットの加算(a+b=S)の場合についての演算の流れが示されている。なお、n=0,1,2,…とする。
また、PE(5n)、PE(5n+1)、PE(5n+2)、PE(5n+3)およびPE(5n+4)は、図8に示すPEと同等の構成を有している。PE(5n)は、下位桁のブロックの演算を行なう。PE(5n+1)は、下位桁のブロックからの桁上げがない場合における中位桁のブロックの演算を行なうため、図8に示すキャリーレジスタ33の初期値として“0”が設定される。また、PE(5n+2)は、下位桁のブロックからの桁上げがある場合における中位桁のブロックの演算を行なうため、図8に示すキャリーレジスタ33の初期値として“1”が設定される。
同様に、PE(5n+3)は、中位桁のブロックからの桁上げがない場合における上位桁のブロックの演算を行なうため、図8に示すキャリーレジスタ33の初期値として“0”が設定される。また、PE(5n+4)は、中位桁のブロックからの桁上げがある場合における上位桁のブロックの演算を行なうため、図8に示すキャリーレジスタ33の初期値として“1”が設定される。
図21(a)は、各エントリの初期配置を示している。PE(5n)に対応するエントリには、演算データa[0]〜a[3]およびb[0]〜b[3]が配置される。また、PE(5n+1)に対応するエントリには、演算データa[4]〜a[7]およびb[4]〜b[7]が配置される。また、PE(5n+3)に対応するエントリには、演算データa[8]〜a[11]およびb[8]〜b[11]が配置される。なお、PE(5n+2)およびPE(5n+4)に対応するエントリには、演算データは配置されない。
図21(b)に示すように、PE(5n)は、下位桁ブロックのうちa[0]およびa[1]と、b[0]およびb[1]との加算を行ない、加算結果S[0]およびS[1]をエントリ5nに格納する。これと並行して、PE(5n+1)は、下位桁ブロックからの桁上げがない場合を想定し、中位桁ブロックのうちa[4]およびa[5]と、b[4]およびb[5]との加算を行ない、加算結果S[4]およびS[5]をエントリ5n+1に格納する。また、PE(5n+3)は、中位桁ブロックからの桁上げがない場合を想定し、上位桁ブロックのうちa[8]およびa[9]と、b[8]およびb[9]との加算を行ない、加算結果S[8]およびS[9]をエントリ5n+3に格納する。
また、PE(5n+2)は、下位桁ブロックからの桁上げがある場合を想定し、中位桁ブロックのうちa[4]およびa[5]と、b[4]およびb[5]との加算を行ない、加算結果S’[4]およびS’[5]をエントリ5n+2に格納する。また、PE(5n+4)は、中位桁ブロックからの桁上げがある場合を想定し、上位桁ブロックのうちa[8]およびa[9]と、b[8]およびb[9]との加算を行ない、加算結果S’[8]およびS’[9]をエントリ5n+4に格納する。
図21(c)に示すように、次に、PE(5n)は、下位桁ブロックのうちa[2]およびa[3]と、b[2]およびb[3]との加算を行ない、加算結果S[2]およびS[3]をエントリ5nに格納する。これと並行して、PE(3n+1)は、中位桁ブロックのうちa[6]およびa[7]と、b[6]およびb[7]との加算を行ない、加算結果S[6]およびS[7]をエントリ5n+1に格納する。PE(5n+3)は、上位桁ブロックのうちa[10]およびa[11]と、b[10]およびb[11]との加算を行ない、加算結果S[10]およびS[11]をエントリ5n+3に格納する。
また、PE(5n+2)は、中位桁ブロックのうちa[6]およびa[7]と、b[6]およびb[7]との加算を行ない、加算結果S’[6]およびS’[7]をエントリ5n+2に格納する。また、PE(5n+4)は、上位桁ブロックのうちa[10]およびa[11]と、b[10]およびb[11]との加算を行ない、加算結果S’[10]およびS’[11]をエントリ5n+4に格納する。
図21(d)に示すように、最後に、PE(5n)は、下位桁ブロックの加算によって発生する桁上げC(5n,4)を、エントリ5nのテンポラリ領域に保存する。また、PE(5n+1)は、中位桁ブロックの加算(下位桁ブロックからの桁上げがない場合)によって発生する桁上げC(5n+1,4)を、エントリ5n+1のテンポラリ領域に保存する。また、PE(5n+2)は、中位桁ブロックの加算(下位桁ブロックからの桁上げがある場合)によって発生する桁上げC(5n+2,4)を、エントリ5n+2のテンポラリ領域に保存する。
図22は、演算結果Sを次の演算で使用する場合のデータ読み出し方法を説明するための図である。PE(5n+1)による演算結果と、PE(5n+2)による演算結果とのどちらが有効であるかは、下位桁ブロックの演算後に発生する桁上げC(5n,4)によって決定される。また、PE(5n+3)による演算結果と、PE(5n+4)による演算結果とのどちらが有効であるかは、中位桁ブロックの演算後に発生する桁上げC(5n+1,4)またはC(5n+2,4)よって決定される。
図22(a)は、下位桁ブロックからの桁上げがなく(C(5n,4)=0)、中位桁ブロックからの桁上げがある(C(5n+1,4)=1)場合のデータ読み出しを示している。PE(5n)は、エントリ5nに格納される演算結果S[0]〜S[3]を読み出し、演算を行なう。また、PE(5n+1)およびPE(5n+2)は、エントリ5n+1に格納される演算結果S[4]〜S[7]を読み出し、演算を行なう。また、PE(5n+3)およびPE(5n+4)は、エントリ5n+4に格納される演算結果S’[8]〜S’[11]を読み出し、演算を行なう。
図22(b)は、下位桁ブロックからの桁上げがあり(C(5n,4)=1)、中位桁ブロックからの桁上げがない(C(5n+2,4)=0)場合のデータ読み出しを示している。PE(5n)は、エントリ5nに格納される演算結果S[0]〜S[3]を読み出し、演算を行なう。また、PE(5n+1)およびPE(5n+2)は、エントリ5n+2に格納される演算結果S’[4]〜S’[7]を読み出し、演算を行なう。また、PE(5n+3)およびPE(5n+4)は、エントリ5n+3に格納される演算結果S[8]〜S[11]を読み出し、演算を行なう。
図23は、本発明の第4の実施の形態におけるMXコア11の演算動作を説明するためのタイミングチャートである。まず、最初のサイクルにおいて、クロック信号の立ち上がりでPE(5n)はエントリ5nから前回の演算結果の桁上げC(5n,4)を読み出し、PE(5n+1)およびPE(5n+2)に転送する。PE(5n+1)およびPE(5n+2)は、桁上げC(5n,4)によっていずれが選択されたかを判断し、選択されたPE(5n+1)またはPE(5n+2)がエントリ5n+1または5n+2から前回の演算結果の桁上げC(5n+1,4)またはC(5n+2,4)を読み出し、PE(5n+3)およびPE(5n+4)に転送する。
2番目のサイクルにおいて、PE(5n)は、エントリ5nから演算データaおよびaと、演算データbおよびbとを読み出し(Read)、2ビットの加算を行ない(Modify)、演算結果SおよびSをエントリ5nに書き込む(Write)。これと並行して、PE(5n+1)は、前回の桁上げC(5n,4)に応じて、エントリ5n+1または5n+2から演算データaおよびaと、演算データbおよびbとを読み出し、2ビットの加算を行ない、演算結果SおよびSをエントリ5n+1に書き込む。また、PE(5n+2)は、前回の桁上げC(5n,4)に応じて、エントリ5n+1または5n+2から演算データaおよびaと、演算データbおよびbとを読み出し、2ビットの加算を行ない、演算結果S’およびS’をエントリ5n+2に書き込む。
また、PE(5n+3)は、前回の桁上げC(5n+1,4)またはC(5n+2,4)に応じて、エントリ5n+3または5n+4から演算データaおよびaと、演算データbおよびbとを読み出し、2ビットの加算を行ない、演算結果SおよびSをエントリ5n+3に書き込む。また、PE(5n+4)は、前回の桁上げC(5n+1,4)またはC(5n+2,4)に応じて、エントリ5n+3または5n+4から演算データaおよびaと、演算データbおよびbとを読み出し、2ビットの加算を行ない、演算結果S’およびS’をエントリ5n+4に書き込む。
3番目のサイクルにおいて、PE(5n)〜PE(5n+4)は、2番目のサイクルと同様の動作を行ない、演算結果SおよびSがエントリ5nに書き込まれ、演算結果SおよびSがエントリ5n+1に書き込まれ、演算結果S’およびS’がエントリ5n+2に書き込まれ、演算結果S10およびS11がエントリ5n+3に書き込まれ、演算結果S’10およびS’11がエントリ5n+4に書き込まれる。
最後のサイクルにおいて、PE(5n)は、下位桁ブロックの桁上げC(5n,4)をエントリ5nに保存し、PE(5n+1)およびPE(5n+2)は、中位桁ブロックの桁上げC(5n+1,4)およびC(5n+2,4)をエントリ5n+1および5n+2に保存する。
図24は、本発明の第4の実施の形態におけるMXコア11の内部構成の一例を示す図である。本実施の形態におけるMXコア11は、基本的には、図8に示すMXコアの構成と同様である。図24においては、PEの内部構成のうちXレジスタのみを記載しており、さらにPE間データ通信を行なうために設けられたエントリコミュニケータ(ECM)回路の一部、および新たに追加された追加回路部が記載されている。
図22を用いて説明したように、PE(5n+1)およびPE(5n+2)は下位桁ブロックの桁上げに依存したデータ読み出しが必要となる。そのため、PE間データ通信を行なうために設けられたECM回路のセレクタ82〜83を利用する。また、PE(5n+3)およびPE(5n+4)は中位桁ブロックの桁上げに依存したデータ読み出しが必要となる。そのため、PE間データ通信を行なうために設けられたECM回路のセレクタ84〜85を利用する。
図24において、スイッチ回路92〜94および98〜101と、インバータ86〜91、103、104と、AND回路95および96と、OR回路97とが新たに追加された追加回路部である。演算粒度2ビットが選択された場合(select信号が“0”の場合)には、スイッチ回路92〜94がオフとなって非導通状態となり、追加回路部が無効となる。したがって、図8に示すMXコア11と同様の動作を行なう。
演算粒度6ビットが選択された場合(select信号が“1”の場合)には、スイッチ回路92〜94がオンとなって導通状態となり、追加回路部が有効となる。このとき、下位桁ブロックからの桁上げC(5n,4)が“0”であれば、インバータ87が“1”を出力し、インバータ88が“1”を出力する。インバータ103が“1”を出力し、スイッチ回路98が導通状態となり、スイッチ回路99が非導通状態となる。その結果、セレクタ83は、エントリ5n+1に格納される演算データS[4]〜S[7]を選択し、PE(5n+2)内のXレジスタ31−3に出力する。
また、OR回路97は、中位桁ブロックからの桁上げC(5n+1,4)を選択して出力する。このとき、桁上げC(5n+1,4)が“0”であれば、インバータ90が“1”を出力し、インバータ91が“1”を出力する。インバータ104が“1”を出力し、スイッチ回路100が導通状態となり、スイッチ回路101が非導通状態となる。その結果、セレクタ85は、エントリ5n+3に格納される演算データS[8]〜S[11]を選択し、PE(5n+4)内のXレジスタ31−5に出力する。
また、桁上げC(5n+1,4)が“1”であれば、インバータ89が“0”を出力する。インバータ104が“0”を出力し、スイッチ回路100が非導通状態となり、スイッチ回路101が導通状態となる。その結果、セレクタ84は、エントリ5n+4に格納される演算データS’[8]〜S’[11]を選択し、PE(5n+3)内のXレジスタ31−4に出力する。
また、下位桁ブロックからの桁上げC(5n,4)が“1”であれば、インバータ86が“0”を出力する。インバータ102が“0”を出力し、スイッチ回路98が非導通状態となり、スイッチ回路99が導通状態となる。その結果、セレクタ82は、エントリ5n+2に格納される演算データS’[4]〜S’[7]を選択し、PE(5n+1)内のXレジスタ31−2に出力する。
また、OR回路97は、中位桁ブロックからの桁上げC(5n+2,4)を選択して出力する。このとき、桁上げC(5n+2,4)が“0”であれば、インバータ90が“1”を出力し、インバータ91が“1”を出力する。インバータ103が“1”を出力し、スイッチ回路100が導通状態となり、スイッチ回路101が非導通状態となる。その結果、セレクタ85は、エントリ5n+3に格納される演算データS[8]〜S[11]を選択し、PE(5n+4)内のXレジスタ31−5に出力する。
また、桁上げC(5n+1,4)が“1”であれば、インバータ89が“0”を出力する。インバータ103が“0”を出力し、スイッチ回路100が非導通状態となり、スイッチ回路101が導通状態となる。その結果、セレクタ84は、エントリ5n+4に格納される演算データS’[8]〜S’[11]を選択し、PE(5n+3)内のXレジスタ31−4に出力する。
以上説明したように、本実施の形態におけるデータ処理装置によれば、中位桁ブロックおよび上位桁ブロックの演算を行なう際、下位桁ブロックおよび中位桁ブロックからの桁上げがある場合と桁上げがない場合との2種類の演算をしておき、下位桁ブロックからの桁上げが確定した時点で中位桁のブロックを選択し、中位桁ブロックからの桁上げが確定した時点で上位桁のブロックを選択するようにしたので、本発明の第2の実施の形態において説明した効果と同様の効果を奏することが可能なった、
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
本発明のデータ処理装置を含んだ半導体装置の概略構成を示すブロック図である。 MXコア11による並列演算の一例を示す図である。 MXコア11の問題点を説明するための図である。 図3に示すMXコア11の問題点に対する代替技術を示す図である。 本発明の基本原理を説明するための図である。 本発明による「並列度低下の問題」の解決の一例を説明するための図である。 本発明による「並列度低下の問題」の解決の他の一例を説明するための図である。 PEの基本的構成を示すブロック図である。 本発明の第1の実施の形態におけるMXコア11の内部構成の一例を示すブロック図である。 本発明の第1の実施の形態におけるMXコア11の内部構成の他の一例を示すブロック図である。 本発明の第1の実施の形態におけるMXコア11の演算粒度を4ビットとしたときの動作を説明するためのタイミングチャートである。 本発明の第2の実施の形態におけるMXコア11の演算の流れを模式的に示す図である。 演算結果Sを次の演算で使用する場合のデータ読み出し方法を説明するための図である。 本発明の第2の実施の形態におけるMXコア11の演算動作を説明するためのタイミングチャートである。 本発明の第2の実施の形態におけるMXコア11の内部構成の一例を示す図である。 4ビット加算の一例を示す図である。 加算結果に現れる規則性を説明するための図である。 図17に示す加算結果に現れる規則性に基づいて上位桁ブロックの演算を行なう回路構成の一例、およびその動作を説明するためのタイミングチャートである。 本発明の第3の実施の形態におけるMXコア11の内部構成の一例を示すブロック図である。 本発明の第3の実施の形態におけるMXコア11の内部構成の他の一例を示すブロック図である。 本発明の第4の実施の形態におけるMXコア11の演算の流れを模式的に示す図である。 演算結果Sを次の演算で使用する場合のデータ読み出し方法を説明するための図である。 本発明の第4の実施の形態におけるMXコア11の演算動作を説明するためのタイミングチャートである。 本発明の第4の実施の形態におけるMXコア11の内部構成の一例を示す図である。
符号の説明
1 半導体装置、2 SDRAM、11 MXコア、12 ホストCPU、13 DMAC、14 メモリコントローラ、15 バス、21−1〜21−m PE、22−1〜22−m データレジスタ、23 I/Oインタフェース、24 コントローラ、25 命令メモリ、31 XレジスタおよびXHレジスタ、32 2ビット演算回路、33 キャリーレジスタ、34,37,97 OR回路、35,36,38,39,55,59,60,65,67,92〜94,98〜101 スイッチ回路、40,41,56〜58,66,69,73,74,86〜91 インバータ、42,43,51〜54,64,68,72,75,81〜85 セレクタ、61,62 2ビット加算器、63 ユニット、70,71,95,96 AND回路、76〜78 EX−OR回路。

Claims (8)

  1. 複数の演算器を並列に動作させて演算処理を行なうデータ処理装置であって、
    前記複数の演算器のそれぞれは、データレジスタに記憶される演算データの中の所定ビットの演算を行なう演算手段と、
    桁上げを記憶して前記演算手段に出力する桁上げ記憶手段とを含み、
    前記複数の演算器の中の第1の演算器はさらに、演算粒度に応じて、前記第1の演算器内の演算手段から出力される下位ビットの演算によって発生する桁上げと、第2の演算器内の演算手段から出力される上位ビットの演算によって発生する桁上げとのいずれかを選択して前記第1の演算器内の桁上げ記憶手段に出力する第1の選択手段を含み、
    前記複数の演算器の中の前記第2の演算器はさらに、演算粒度に応じて、前記第2の演算器内の演算手段から出力される上位ビットの演算によって発生する桁上げと、前記第1の演算器内の演算手段から出力される下位ビットの演算によって発生する桁上げとのいずれかを選択して前記第2の演算器内の桁上げ記憶手段に出力する第2の選択手段を含む、データ処理装置。
  2. 前記第1の演算器に対応するエントリには演算データの偶数エントリが配置され、前記第2の演算器に対応するエントリには演算データの奇数エントリが配置され、
    前記偶数エントリと前記奇数エントリとの間で演算データが前記所定ビット単位で交互に配置される、請求項1記載のデータ処理装置。
  3. 前記第1の演算器の動作開始のタイミングと、前記第2の演算器の動作開始のタイミングとが所定時間だけずらされる、請求項1または2記載のデータ処理装置。
  4. 複数の演算器を並列に動作させて演算処理を行なうデータ処理装置であって、
    前記複数の演算器のそれぞれは、データレジスタに記憶される演算データの中の所定ビットの演算を行なう演算手段と、
    桁上げを記憶して前記演算手段に出力する桁上げ記憶手段とを含み、
    前記複数の演算器の中の第1の演算器はさらに、演算粒度に応じて、前記第1の演算器内の演算手段から出力される下位ビットの演算によって発生する桁上げと、上位ビットの演算によって発生する桁上げとのいずれかを選択して前記第1の演算器内の桁上げ記憶手段に出力する選択手段を含み、
    前記複数の演算器の中の第2の演算器内の演算手段は、前記第1の演算器内の演算手段によって桁上げが発生しない場合の演算を行ない、
    前記データ処理装置はさらに、前記第1の演算器内の演算手段から出力される下位ビットの演算によって発生する桁上げと、前記第2の演算器内の演算手段から出力される上位ビットの演算結果および桁上げとから、前記第1の演算器内の演算手段によって桁上げが発生した場合の演算結果および桁上げを生成する生成手段を含む、データ処理装置。
  5. 前記生成手段は、前記第1の演算器内の演算手段によって桁上げが発生しない場合に、前記第2の演算器内の演算手段から出力される演算結果の下位ビットをそのまま出力し、前記第1の演算器内の演算手段によって桁上げが発生した場合に、前記第2の演算器内の演算手段から出力される演算結果の下位ビットを反転して出力する第1のセレクタと、
    前記第1の演算器内の演算手段によって桁上げが発生し、前記第2の演算器内の演算手段から出力される演算結果の下位ビットが1の場合に、前記第2の演算器内の演算手段から出力される演算結果の上位ビットを反転して出力し、それ以外の場合に演算結果の上位ビットをそのまま出力する第2のセレクタと、
    前記第1の演算器内の演算手段によって桁上げが発生し、前記第2の演算器内の演算手段から出力される演算結果の下位ビットおよび上位ビットが共に1の場合に、前記第2の演算器内の演算手段から出力される桁上げを反転して出力し、それ以外の場合に桁上げをそのまま出力する第3のセレクタとを含む、請求項4記載のデータ処理装置。
  6. 前記第1の演算器に対応するエントリには演算データの偶数エントリが配置され、前記第2の演算器に対応するエントリには演算データの奇数エントリが配置され、
    前記偶数エントリと前記奇数エントリとの間で演算データが前記所定ビット単位で交互に配置される、請求項4または5記載のデータ処理装置。
  7. 複数の演算器を並列に動作させて演算処理を行なうデータ処理装置であって、
    前記複数の演算器のそれぞれは、データレジスタに記憶される演算データの中の所定ビットの演算を行なう演算手段と、
    桁上げを記憶して前記演算手段に出力する桁上げ記憶手段とを含み、
    前記複数の演算器の中の第1の演算器内の演算手段は、下位ビットの演算によって発生する桁上げを記憶し、
    前記複数の演算器の中の第2の演算器内の演算手段は、前記第1の演算器内の演算手段による下位ビットの演算によって桁上げが発生しない場合の上位ビットの演算を行なって演算結果を記憶し、
    前記複数の演算器の中の第3の演算器内の演算手段は、前記第1の演算器内の演算手段による下位ビットの演算によって桁上げが発生する場合の上位ビットの演算を行なって演算結果を記憶し、
    前記データ処理装置はさらに、前記第1の演算器内の演算手段によって記憶された桁上げに応じて、前記第2の演算器内の演算手段によって記憶された演算結果と、前記第3の演算器内の演算手段によって記憶された演算結果とを選択的に前記第2の演算器に出力する第1の選択手段と、
    前記第1の演算器内の演算手段によって記憶された桁上げに応じて、前記第2の演算器内の演算手段によって記憶された演算結果と、前記第3の演算器内の演算手段によって記憶された演算結果とを選択的に前記第3の演算器に出力する第2の選択手段とを含む、データ処理装置。
  8. 複数の演算器を並列に動作させて演算処理を行なうデータ処理装置であって、
    前記複数の演算器のそれぞれは、データレジスタに記憶される演算データの中の所定ビットの演算を行なう演算手段と、
    桁上げを記憶して前記演算手段に出力する桁上げ記憶手段とを含み、
    前記複数の演算器の中の第1の演算器内の演算手段は、下位ビットの演算によって発生する桁上げを記憶し、
    前記複数の演算器の中の第2の演算器内の演算手段は、前記第1の演算器内の演算手段による下位ビットの演算によって桁上げが発生しない場合の中位ビットの演算を行なって演算結果を記憶し、
    前記複数の演算器の中の第3の演算器内の演算手段は、前記第1の演算器内の演算手段による下位ビットの演算によって桁上げが発生する場合の中位ビットの演算を行なって演算結果を記憶し、
    前記複数の演算器の中の第4の演算器内の演算手段は、前記第2の演算器または前記第3の演算手段内の演算手段による中位ビットの演算によって桁上げが発生しない場合の上位ビットの演算を行なって演算結果を記憶し、
    前記複数の演算器の中の第5の演算器内の演算手段は、前記第2の演算器または前記第3の演算手段内の演算手段による中位ビットの演算によって桁上げが発生する場合の上位ビットの演算を行なって演算結果を記憶し、
    前記データ処理装置はさらに、前記第1の演算器内の演算手段によって記憶された桁上げに応じて、前記第2の演算器内の演算手段によって記憶された演算結果と、前記第3の演算器内の演算手段によって記憶された演算結果とを選択的に前記第2の演算器に出力する第1の選択手段と、
    前記第1の演算器内の演算手段によって記憶された桁上げに応じて、前記第2の演算器内の演算手段によって記憶された演算結果と、前記第3の演算器内の演算手段によって記憶された演算結果とを選択的に前記第3の演算器に出力する第2の選択手段と、
    前記第2の演算器または前記第3の演算器内の演算手段によって記憶された桁上げに応じて、前記第4の演算器内の演算手段によって記憶された演算結果と、前記第5の演算器内の演算手段によって記憶された演算結果とを選択的に前記第4の演算器に出力する第3の選択手段と、
    前記第2の演算器または前記第3の演算器内の演算手段によって記憶された桁上げに応じて、前記第4の演算器内の演算手段によって記憶された演算結果と、前記第5の演算器内の演算手段によって記憶された演算結果とを選択的に前記第5の演算器に出力する第4の選択手段とを含む、データ処理装置。
JP2008293510A 2008-11-17 2008-11-17 データ処理装置 Pending JP2010122741A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008293510A JP2010122741A (ja) 2008-11-17 2008-11-17 データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008293510A JP2010122741A (ja) 2008-11-17 2008-11-17 データ処理装置

Publications (1)

Publication Number Publication Date
JP2010122741A true JP2010122741A (ja) 2010-06-03

Family

ID=42324054

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008293510A Pending JP2010122741A (ja) 2008-11-17 2008-11-17 データ処理装置

Country Status (1)

Country Link
JP (1) JP2010122741A (ja)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54108545A (en) * 1978-02-14 1979-08-25 Nippon Telegr & Teleph Corp <Ntt> Semiconductor device of bit slice type
JPS6211960A (ja) * 1985-07-09 1987-01-20 ナシヨナル リサ−チ デイベロプメント コ−ポレイシヨン プロセツサアレイ
JPH04227533A (ja) * 1990-04-02 1992-08-17 Advanced Micro Devicds Inc 高速加算器
JPH05233224A (ja) * 1992-02-25 1993-09-10 Nec Corp 並列加算回路
JPH06168101A (ja) * 1992-11-30 1994-06-14 Hitachi Ltd 加算装置及び加算方法
JP2003330701A (ja) * 2002-05-14 2003-11-21 Matsushita Electric Ind Co Ltd 半導体プロセッサ装置
JP2008217061A (ja) * 2007-02-28 2008-09-18 Ricoh Co Ltd Simd型マイクロプロセッサ

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54108545A (en) * 1978-02-14 1979-08-25 Nippon Telegr & Teleph Corp <Ntt> Semiconductor device of bit slice type
JPS6211960A (ja) * 1985-07-09 1987-01-20 ナシヨナル リサ−チ デイベロプメント コ−ポレイシヨン プロセツサアレイ
JPH04227533A (ja) * 1990-04-02 1992-08-17 Advanced Micro Devicds Inc 高速加算器
JPH05233224A (ja) * 1992-02-25 1993-09-10 Nec Corp 並列加算回路
JPH06168101A (ja) * 1992-11-30 1994-06-14 Hitachi Ltd 加算装置及び加算方法
JP2003330701A (ja) * 2002-05-14 2003-11-21 Matsushita Electric Ind Co Ltd 半導体プロセッサ装置
JP2008217061A (ja) * 2007-02-28 2008-09-18 Ricoh Co Ltd Simd型マイクロプロセッサ

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CSNB199700296001; 青木 由直 他: マイクロコンピュータ講義 第1版, 19831124, 66頁〜68頁, 株式会社昭晃堂 *
JPN6013026716; Toshio KONDO et al.: '"An LSI Adaptive Array Processor"' IEEE JOURNAL OF SOLID-STATE CIRCUITS VOL. SC-18, NO. 2, 198304, pages:147-156, IEEE *
JPN6013026719; 青木 由直 他: マイクロコンピュータ講義 第1版, 19831124, 66頁〜68頁, 株式会社昭晃堂 *

Similar Documents

Publication Publication Date Title
CN111213125B (zh) 使用simd指令进行高效的直接卷积
US9104633B2 (en) Hardware for performing arithmetic operations
US8194855B2 (en) Method and apparatus for implementing processor instructions for accelerating public-key cryptography
EP3056985A1 (en) Register file system and method for pipelined processing
JP7461945B2 (ja) 部分行列の順序付けを伴う行列乗算器
US9342478B2 (en) Processor with reconfigurable architecture including a token network simulating processing of processing elements
JP2016517570A (ja) マルチモードベクトル処理を提供するためのプログラム可能データ経路構成を有するベクトル処理エンジン、ならびに関連ベクトルプロセッサ、システム、および方法
US20070239970A1 (en) Apparatus For Cooperative Sharing Of Operand Access Port Of A Banked Register File
JP2016514330A (ja) マルチモード基数2のx乗のバタフライベクトル処理回路を提供するためのプログラマブルなデータパス構成を有するベクトル処理エンジン、ならびに関連ベクトルプロセッサ、システム、および方法
JP4469389B2 (ja) リコンフィギュラブルsimdベクトル処理システム
US10489155B2 (en) Mixed-width SIMD operations using even/odd register pairs for wide data elements
JP2011090592A (ja) 情報処理装置とその命令デコーダ
US20180307489A1 (en) Apparatus and method for performing multiply-and-accumulate-products operations
CN109614145B (zh) 一种处理器核心结构及数据访存方法
WO2019023910A1 (zh) 数据处理方法和设备
KR20210084220A (ko) 부분 판독/기입을 갖는 재구성 가능한 시스톨릭 어레이를 위한 시스템 및 방법
KR20080083417A (ko) 저전력형 컨피규레이션 캐시와 이를 포함하는 재구성형프로세싱 시스템
CN116050492A (zh) 一种扩展单元
JP3935678B2 (ja) Simd積和演算方法、積和演算回路、および、半導体集積回路装置
JP2010122741A (ja) データ処理装置
CN112506468B (zh) 支持高吞吐多精度乘法运算的risc-v通用处理器
Del Barrio et al. Exploring the energy efficiency of multispeculative adders
JP2018132901A (ja) 演算処理装置および演算処理装置の制御方法
US9411724B2 (en) Method and apparatus for a partial-address select-signal generator with address shift
JP4873546B2 (ja) データ処理装置、データ処理方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20100609

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111115

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20111115

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130527

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20131015