(57)【要約】【課題】本発明は、演算レイテンシを短縮する演算装置を提供する。【解決手段】データ処理装置は、演算器（２１）と、レジスタファイル（２２）とを具備する。所定のワード長の入力データは、ワード長より短いブロック単位のブロックデータに分割されて演算器（２１）に入力される。演算器（２１）は、ブロックデータ毎に複数回のシリアル演算を行って所定のワード長の演算結果を得る。この演算器（２１）は、所定のワード長の入力データの所定のブロックデータから順に演算を行う。レジスタファイル（２２）は、複数のレジスタを備える。その複数のレジスタの各々は、所定のワード長のデータをブロック単位に取り込んで保持する。また、その複数のレジスタの各々は、保持している所定のワード長のデータを所定の順にブロック単位に演算器（２１）に供給する。【選択図】図４
2008059566.tif 000002
【特許請求の範囲】
【請求項１】
所定のワード長の入力データをブロック単位に分割したブロックデータ毎に複数回のシリアル演算を行って前記所定のワード長の演算結果を得る演算器と、
複数のレジスタを備えるレジスタファイルと
を具備し、
前記演算器は、前記所定のワード長の入力データの所定の前記ブロックデータから所定の順に演算を行い、
前記複数のレジスタの各々は、前記所定のワード長のデータを前記ブロック単位に取り込んで保持し、保持する前記所定のワード長のデータを前記所定の順に前記ブロック単位に演算器に供給する
データ処理装置。
【請求項２】
前記所定のブロックデータは、前記所定のワード長の入力データのＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）を含み、前記演算器は、ＬＳＢを含む前記ブロックデータから順に演算する
請求項１に記載のデータ処理装置。
【請求項３】
前記所定のブロックデータは、前記所定のワード長の入力データのＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）を含み、前記演算器は、ＭＳＢを含む前記ブロックデータから順に演算する
請求項１または請求項２に記載のデータ処理装置。
【請求項４】
前記複数のレジスタの各々は、
前記ブロックデータを書き込む位置を計数する書き込みブロック位置カウンタと、
前記書き込みブロック位置カウンタの計数値をデコードして前記書き込む位置を指定する書き込み位置デコーダと、
前記位置デコーダが指定する位置のみデータの書き込みが許可され、保持するデータを常時出力するレジスタ回路と、
前記ブロックデータを読み出す位置を計数する読み出しブロック位置カウンタと、
前記読み出しブロック位置カウンタの計数値をデコードして前記読み出す位置を指定する読み出し位置デコーダと、
前記読み出し位置デコーダが指定する位置の前記レジスタ回路の出力を選択して出力する選択回路と
を備え、
前記ブロックデータの読み出し動作と、前記ブロックデータの書き込み動作とを独立に実行する
請求項１から請求項３のいずれかに記載のデータ処理装置。
【請求項５】
前記複数のレジスタのうちの書き込み動作に指定される書き込みレジスタに前記ブロックデータを書き込む書き込みブロック位置と、前記複数のレジスタのうちの読み出し動作に指定される読み出しレジスタから前記ブロックデータを出力する読み出しブロック位置とは隣接し、前記書き込みブロック位置への書き込み動作と、前記読み出しブロック位置からの読み出し動作とを同時に行う
請求項１から請求項４のいずれかに記載のデータ処理装置。
【請求項６】
前記複数のレジスタのうちの読み出し動作に指定されるレジスタは、同時に書き込み動作に指定され、
読み出し動作により前記ブロックデータを読み出した直後に、新たな前記ブロックデータを読み出した位置に書き込む
請求項１から請求項５のいずれかに記載のデータ処理装置。
【請求項７】
前記複数のレジスタのうちの書き込み動作に指定されるレジスタは、同時に読み出し動作にも指定され、
書き込み動作により書き込まれた前記ブロックデータを書き込み直後に読み出し動作により読み出す
請求項１から請求項６のいずれかに記載のデータ処理装置。
【請求項８】
バスを介して転送される前記所定のワード長のデータを取り込んで前記ブロック単位のブロックデータに変換し、前記変換されたブロックデータを前記レジスタファイルに供給するパラレル・シリアル変換回路と、
前記演算器から出力される前記ブロック単位のブロックデータを取り込んで前記所定のワード長のデータに変換し、前記変換された所定のワード長のデータを前記バスに転送するシリアル・パラレル変換回路と
をさらに具備する
請求項１から請求項７のいずれかに記載のデータ処理装置。
【請求項９】
前記ブロックデータは、４ビットまたは８ビットのデータを含む
請求項１から請求項８のいずれかに記載のデータ処理装置。
【請求項１０】
所定のワード長のデータを格納するレジスタファイルから、前記ワード長より短いブロック単位のブロックデータに分割して読み出す読み出しステップと、前記レジスタファイルは、複数のレジスタを備え、
読み出した前記ブロックデータ毎に複数回のシリアル演算を行って前記ワード長の演算結果を得る演算ステップと、前記シリアル演算は、前記所定のワード長のデータの所定の前記ブロックデータから所定の順に行われ、
前記演算結果を前記ブロック単位に取り込んで前記レジスタファイルに前記所定のワード長のデータとして格納する書き込みステップと
を具備する
データ処理方法。
【請求項１１】
前記所定のブロックデータは、前記所定のワード長のデータのＬＳＢを含む
請求項１０に記載のデータ処理方法。
【請求項１２】
前記所定のブロックデータは、前記所定のワード長のデータのＭＳＢを含む
請求項１０または請求項１１に記載のデータ処理方法。
【請求項１３】
前記読み出しステップは、
前記複数のレジスタの各々から前記ブロックデータを読み出すブロックの位置を設定する読み出しブロック位置設定ステップと、
前記ブロック位置設定ステップにより設定される位置の前記ブロックデータを選択して出力する選択ステップと
を備え、
前記書き込みステップは、
前記複数のレジスタの各々に前記ブロックデータを書き込むブロックの位置を設定する書き込みブロック位置設定ステップと、
前記書き込みブロック位置設定ステップにより設定される位置のみ前記ブロックデータを書き込んで保持するステップと
を備え、
前記読み出しステップと前記格納ステップとは、独立して実行可能である
請求項１０から請求項１２のいずれかに記載のデータ処理方法。
【請求項１４】
前記書き込みステップにより前記ブロックデータが書き込まれる書き込みブロック位置と、前記読み出しステップにより前記ブロックデータが出力される読み出しブロック位置とは隣接し、前記書き込みブロック位置への書き込み動作と、前記読み出しブロック位置からの読み出し動作とを同時に行う
請求項１０から請求項１３のいずれかに記載のデータ処理方法。
【請求項１５】
前記書き込みステップは、前記読み出しステップにより前記ブロックデータを読み出した直後に、新たなブロックデータを読み出した位置に書き込むステップを備える
請求項１０から請求項１４のいずれかに記載のデータ処理方法。
【請求項１６】
前記読み出しステップは、前記書き込みステップにより書き込まれた前記ブロックデータを書き込み直後に読み出すステップを備える
請求項１０から請求項１５のいずれかに記載のデータ処理方法。
【請求項１７】
バスを介して転送される前記所定のワード長のデータを取り込んで前記ブロック単位のブロックデータに変換し、前記ブロックデータを前記レジスタファイルに供給するパラレル・シリアル変換ステップと、
前記演算ステップにより出力される前記ブロック単位のブロックデータを取り込んで前記所定のワード長のデータに変換し、前記所定のワード長のデータを前記バスに転送するシリアル・パラレル変換ステップと
をさらに具備する
請求項１０から請求項１６のいずれかに記載のデータ処理方法。
【請求項１８】
前記ブロックデータは、４ビットまたは８ビットのデータを含む
請求項１０から請求項１７のいずれかに記載のデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、データ処理方法に関し、特に、データを分割してシリアルに処理するデータ処理装置、データ処理方法に関する。
【背景技術】
【０００２】
近年、大量の情報を処理する必要性に応え、情報処理の高速化が進展している。処理速度を向上させるために、データ処理の演算をシリアルに行って処理時間の短縮が図られることがある。すなわち、回路構成を単純化しサイクルタイムを短縮することがある。
【０００３】
そのようなシリアル演算する演算装置は、例えば、特開２００４−３１８６７０号公報に開示されている。この演算装置は、第１のパラレル・シリアル変換回路と、第２のパラレル・シリアル変換回路と、シリアル演算器と、シリアル・パラレル変換回路を含む。第１のパラレル・シリアル変換回路は、第１のパラレルデータを各々が所定のビット数からなる所定数の第１の部分データに分解して、所定数の第１の部分データを１つずつ順次供給する。第２のパラレル・シリアル変換回路は、第２のパラレルデータを各々が所定のビット数からなる所定数の第２の部分データに分解して所定数の第２の部分データを１つずつ順次供給する。シリアル演算器は、順次供給される所定数の第１の部分データと、順次供給される所定数の第２の部分データとに対する演算を部分データ毎に所定数分順次実行する。シリアル・パラレル変換回路は、演算器の演算結果を所定数分順次受け取り、１つに纏めて第３のパラレルデータとして出力する。
【０００４】
【特許文献１】特開２００４−３１８６７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
このような演算装置では、演算ソースデータおよび演算ターゲットデータの読み出しおよび書き込みは、ワード単位で行われる。したがって、データは、演算器の前後でパラレル・シリアル変換、シリアル・パラレル変換されることになる。そのため、演算器による演算が完了するまでシリアル・パラレル変換の動作は開始せず、演算レイテンシが長くなって、処理性能が低下する。本発明は、演算レイテンシを短縮する演算装置を提供する。
【課題を解決するための手段】
【０００６】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【０００７】
本発明の観点では、データ処理装置は、演算器（２１）と、レジスタファイル（２２）とを具備する。所定のワード長の入力データは、ワード長より短いブロック単位のブロックデータに分割されて演算器（２１）に入力される。演算器（２１）は、ブロックデータ毎に複数回のシリアル演算を行って所定のワード長の演算結果を得る。この演算器（２１）は、所定のワード長の入力データの所定のブロックデータから所定の順に演算を行う。レジスタファイル（２２）は、複数のレジスタを備える。その複数のレジスタの各々は、所定のワード長のデータをブロック単位に取り込んで保持する。また、その複数のレジスタの各々は、保持している所定のワード長のデータを所定の順にブロック単位に演算器（２１）に供給する。
【０００８】
本発明の他の観点では、データ処理方法は、読み出しステップと、演算ステップと書き込みステップとを具備する。読み出しステップは、所定のワード長のデータを格納するレジスタファイルから、ワード長より短いブロック単位のブロックデータに分割してデータを読み出す。このレジスタファイルは、複数のレジスタを備える。演算ステップは、読み出したブロックデータ毎に複数回のシリアル演算を行ってワード長の演算結果を得る。そのシリアル演算は、所定のワード長のデータのＬＳＢを含むブロックデータから順に行われる。書き込みステップは、演算結果をブロック単位に取り込んでレジスタファイルに所定のワード長のデータとして格納する。
【発明の効果】
【０００９】
本発明によれば、演算レイテンシを短縮する演算装置を提供することができる。また、本発明によれば、処理性能を向上した演算装置を提供することができる。
【発明を実施するための最良の形態】
【００１０】
図を参照して本発明を実施するための最良の形態を説明する。本実施の形態で説明されるシリアル演算は、１ビット単位の演算とは限らない。データのワード長に対し、１ビット以上でワード長より短いブロック単位での演算を含む。図１に本発明に係るデータ処理装置の概略構成が示される。データ処理装置は、データ処理部１０、主記憶部１２、割り込みコントローラ１５、タイマ１６、シリアルインタフェース１７、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ１８を具備し、システムバス１１を介して接続される。データ処理部１０は、主記憶部１２に格納されるプログラムコードに基づいて、主記憶部１２に格納されるデータやシリアルインタフェース１７から取り込まれるデータを処理し、主記憶部１２あるいはシリアルインタフェース１７に出力する。ＤＭＡコントローラ１８は、データ処理部１０に代わってシリアルインタフェース１７などの入出力部と主記憶部１２との間のデータ転送、あるいは、主記憶部１２内のデータ転送を制御する。タイマ１６は、計時し、割り込みコントローラ１５を介してデータ処理装置１０に経過時間を通知する。割り込みコントローラ１５は、タイマ１６、シリアルインタフェース１７、ＤＭＡコントローラ１８等が発する割り込みを制御し、データ処理装置１０に通知する。
【００１１】
図２は、データ処理部（ＣＰＵ）１０の構成を示すブロック図である。データ処理部１０は、演算器２１、レジスタファイル２２、命令デコーダ２３、命令レジスタ２４、プログラムカウンタ２５、バスインタフェース２７、シリアル・パラレル変換回路２８、パラレル・シリアル変換回路２９を具備する。バスインタフェース２７は、システムバス１１と、内部アドレスバス３２および内部データバス３３とを接続する。内部アドレスバス３２は、プログラムカウンタ２５、および、シリアル・パラレル変換回路２８を介して演算器２１に接続される。プログラムカウンタ２５により示されるプログラムアドレス、あるいは、演算器２１によって計算されたデータアドレスは、内部アドレスバス３２からバスインタフェース２７を介してシステムバス１１に出力される。
【００１２】
システムバス１１からバスインタフェース２７を介して供給される命令コードは、内部データバス３３を経由して命令レジスタ２４に格納される。命令レジスタ２４に格納された命令コードは、命令デコーダ２３によってデコードされ、演算器２１、レジスタファイル２２を制御する信号が生成される。命令レジスタ２４は、命令コードに含まれる例えば飛び先アドレスをプログラムカウンタ２５に出力する。プログラムカウンタ２５は、実行されるプログラムのアドレスを歩進して保持し、あるいは、命令レジスタ２４から供給される飛び先アドレスを保持する。
【００１３】
命令デコーダ２３は、命令レジスタ２４に格納される命令コードに基づいて、演算の種類を指示する演算種別指示信号ＯＰＲを演算器２１に出力し、書き込みレジスタ制御信号ＷＲＣ、演算ターゲットレジスタ制御信号ＴＲＣ、演算ソースレジスタ制御信号ＳＲＣをレジスタファイル２２に出力する。書き込みレジスタ制御信号ＷＲＣは、書き込みレジスタの番号を指定する書き込みレジスタ番号ＷＲＮと、書き込みを指示する書き込み信号ＷＳとを含む。演算ターゲットレジスタ制御信号ＴＲＣは、演算データを供給するターゲットレジスタの番号を指定するターゲットレジスタ番号ＴＲＮと、ターゲットレジスタからのデータ読み出しを指示するターゲットレジスタ読み出し信号ＴＲＲとを含む。演算ソースレジスタ制御信号ＳＲＣは、演算データを供給するソースレジスタの番号を指定するソースレジスタ番号ＳＲＮと、ソースレジスタからのデータ読み出しを指示するソースレジスタ読み出し信号ＳＲＲとを含む。レジスタファイル２２は、演算ターゲットレジスタ制御信号ＴＲＣに基づいて、指示されたレジスタに格納されているデータをターゲットレジスタ読み出しデータＴＲＤとしてシリアルに演算器２１に出力する。また、レジスタファイル２２は、演算ソースレジスタ制御信号ＳＲＣに基づいて、指示されたレジスタに格納されているデータをソースレジスタ読み出しデータＳＲＤとしてシリアルに演算器２１に出力する。さらに、レジスタファイル２２は、書き込みレジスタ制御信号ＷＲＣに基づいて、演算器２１からシリアルに出力される演算結果ＷＤを指示されたレジスタにレジスタ書き込みバス３１を介して格納する。演算器２１は、レジスタファイル２２から入力されるデータに対して演算種別指示信号ＯＰＲにより指示される演算を施す。演算結果は、レジスタ書き込みバス３１およびシリアル・パラレル変換回路２８に出力される。シリアル・パラレル変換回路２８は、演算器２１からシリアルに出力される演算結果をパラレルデータに変換して内部データバス３３および内部アドレスバス３２に出力する。パラレル・シリアル変換回路２９は、内部データバス３３に出力されたパラレルデータを取り込み、シリアルデータに変換してレジスタ書き込みバス３１に出力する。
【００１４】
図３は、レジスタファイル２２の構成を示すブロック図である。レジスタファイル２２は、レジスタ部２６０〜２６ｎと、ターゲットレジスタ番号デコーダ２２１、ソースレジスタ番号デコーダ２２２、書き込みレジスタ番号デコーダ２２３とを備える。ターゲットレジスタ番号デコーダ２２１には、命令デコーダ２３から出力される演算ターゲットレジスタ制御信号ＴＲＣに含まれるターゲットレジスタ読み出し信号ＴＲＲおよびターゲットレジスタ番号ＴＲＮが入力される。ソースレジスタ番号デコーダ２２２には、命令デコーダ２３から出力される演算ソースレジスタ制御信号ＳＲＣに含まれるソースレジスタ読み出し信号ＳＲＲおよびソースレジスタ番号ＳＲＮが入力される。書き込みレジスタ番号デコーダ２２３には、命令デコーダ２３から出力される書き込みレジスタ制御信号ＷＲＣに含まれる書き込み信号ＷＳおよび書き込みレジスタ番号ＷＲＮが入力される。
【００１５】
ターゲットレジスタ番号デコーダ２２１は、入力されるターゲットレジスタ番号ＴＲＮをデコードし、ターゲットレジスタ読み出し許可信号ＴＲＥ０〜ＴＲＥｎをターゲットレジスタ読み出し信号ＴＲＲに同期して出力する。ソースレジスタ番号デコーダ２２２は、入力されるソースレジスタ番号ＳＲＮをデコードし、ソースレジスタ読み出し許可信号ＳＲＥ０〜ＳＲＥｎをソースレジスタ読み出し信号ＳＲＲに同期して出力する。書き込みレジスタ番号デコーダ２２３は、入力される書き込みレジスタ番号ＷＲＮをデコードし、書き込み許可信号ＷＲＥ０〜ＷＲＥｎを書き込み信号ＷＳに同期して出力する。
【００１６】
書き込み許可信号ＷＲＥ０〜ＷＲＥｎにより選択されたレジスタ部２６０〜２６ｎは、レジスタ書き込みバス３１を介してシリアルに転送される書き込みデータＷＤを取り込んで記憶する。ターゲットレジスタ読み出し許可信号ＴＲＥ０〜ＴＲＥｎおよびソースレジスタ読み出し許可信号ＳＲＥ０〜ＳＲＥｎにより選択されたレジスタ部２６０〜２６ｎは、それぞれターゲットレジスタ読み出しデータＴＲＤ、ソースレジスタ読み出しデータＳＲＤをシリアルに演算器２１に出力する。
【００１７】
レジスタ部２６０〜２６ｎの各々は、図４に示されるように、レジスタ２６、ターゲット読み出しビットカウンタ４１、ソース読み出しビットカウンタ４２、書き込みビットカウンタ４３、ターゲット読み出しビットデコーダ５１、ソース読み出しビットデコーダ５２、書き込みビットデコーダ５３、ターゲット読み出しデータ選択回路６１、ソース読み出しデータ選択回路６２を具備する。
【００１８】
ｍビットのデータを格納できるレジスタ２６は、シリアルに転送される書き込みデータＷＤを１ビットずつ指定のビット位置に格納する。レジスタ２６は、格納されたｍビットのデータをパラレルに読み出してデータ選択回路６１、６２に出力する。
【００１９】
書き込みビットカウンタ４３は、書き込み許可信号ＷＲＥをトリガにして、クロック毎にカウントアップするバイナリカウンタである。すなわち、書き込みビットカウンタ４３は、レジスタ２６の書き込みビット位置を０からｍまで計数する。書き込みビットカウンタ４３のカウント値に基づいて、書き込みビットデコーダ５３は、レジスタ２６の書き込みビット位置を指示する信号を出力する。
【００２０】
ターゲット読み出しビットカウンタ４１は、ターゲットレジスタ読み出し許可信号ＴＲＥをトリガにして、クロック毎にカウントアップするバイナリカウンタである。すなわち、ターゲット読み出しビットカウンタ４１は、レジスタ２６から読み出すビット位置を０からｍまで計数する。ターゲット読み出しカウンタ４１のカウント値に基づいて、ターゲット読み出しビットデコーダ５１は、レジスタ２６から読み出すビット位置を指示する信号をターゲット読み出しデータ選択回路６１に出力する。
【００２１】
ソース読み出しビットカウンタ４２は、ソースレジスタ読み出し許可信号ＳＲＥをトリガにして、クロック毎にカウントアップするバイナリカウンタである。すなわち、ソース読み出しビットカウンタ４２は、レジスタ２６から読み出すビット位置を０からｍまで計数する。ソース読み出しカウンタ４２のカウント値に基づいて、ソース読み出しビットデコーダ５２は、レジスタ２６から読み出すビット位置を指示する信号をソース読み出しデータ選択回路６２に出力する。
【００２２】
ターゲット読み出しデータ選択回路６１は、ターゲット読み出しビットデコーダ５１から出力される信号に基づいて、レジスタ２６から出力されているデータを１ビット選択して出力する。ターゲット読み出しビットカウンタ４１がビット位置をカウントアップするため、読み出し位置が１ビットずつずれていく。したがって、ターゲット読み出しデータ選択回路６１は、レジスタ２６に格納されるデータをシリアルにターゲットレジスタ読み出しデータＴＲＤとして出力することになる。
【００２３】
ソース読み出しデータ選択回路６２は、ソース読み出しビットデコーダ５２から出力される信号に基づいて、レジスタ２６から出力されるデータを１ビット選択して出力する。ソース読み出しビットカウンタ４２がビット位置をカウントアップするごとに読み出し位置が１ビットずつずれていく。したがって、ソース読み出し選択回路６２は、レジスタ２６に格納されるデータをシリアルにソースレジスタ読み出しデータＳＲＤとして出力することになる。
【００２４】
このように、カウンタおよびデコーダの組のそれぞれは、独立に動作できるように構成されている。したがって、同じレジスタ２６がターゲットレジスタとソースレジスタとに指定されてもよい。また、書き込み動作と読み出し動作とをそれぞれのタイミングで行うことも可能となる。すなわち、カウンタおよびデコーダの組のそれぞれは、矛盾のない範囲で並行動作可能である。
【００２５】
次に、レジスタファイル２２のデータ書き込み／読み出し動作が説明される。まず、図５を参照して、レジスタファイル２２にデータが書き込まれ、そのデータが読み出される動作を説明する。
【００２６】
図５（ａ）に、データの読み出しおよび書き込みのタイミングを示すクロック信号が、そのクロックサイクルに符号が付されて示される。以下クロックサイクルによりタイミングが説明される。クロックサイクルＴ１１〜Ｔ１４に、レジスタ２６にデータを書き込むタイミングが、クロックサイクルＴ１５〜Ｔ１７に、レジスタ２６からデータを読み出すタイミングが示される。
【００２７】
データをレジスタファイル２２に格納するためには、パラレルデータは、シリアルデータに変換され、レジスタ書き込みバスを介して指定のレジスタに格納される。したがって、クロック信号（図５（ａ））に同期して転送される書き込みデータ（図５（ｅ））は、書き込みビットカウンタ４３の出力（図５（ｄ））に対応するレジスタ２６のビット位置に格納される（図５（ｆ）〜（ｈ））。
【００２８】
書き込み動作が開始されると、書き込み信号ＷＳは、図５（ｂ）に示されるタイミングに書き込みレジスタ番号ＷＲＮ（図５（ｃ））とともに書き込みレジスタ番号デコーダ２２３に入力される。ここでは、書き込みレジスタ番号として“ｎ”が指定される。したがって、書き込みレジスタ番号デコーダ２２３は、レジスタ部２６ｎに対して、図５（ｂ）に示されるタイミングで書き込み許可信号ＷＲＥｎを出力する。
【００２９】
書き込み許可信号ＷＲＥｎをトリガとして、書き込みビットカウンタ４３は、動作を開始する。図５（ｄ）に示されるように、書き込みビットカウンタ４３は、クロックサイクルＴ１１において“０”にリセットされ、クロックサイクルＴ１２に“１”、クロックサイクルＴ１３に“２”と歩進し、クロックサイクルＴ１４には最大値“ｍ”になる。
【００３０】
クロック信号（図５（ａ））に同期して書き込みデータＷＤがレジスタ書き込みバス３１を介してレジスタ部２６ｎに入力される。クロックサイクルＴ１１に最下位ビットのデータ“ａ”、クロックサイクルＴ１２にビット１のデータ“ｂ”、クロックサイクルＴ１３にビット２のデータ“ｃ”、…、クロックサイクルＴ１４に最上位ビット（ビットｍ）のデータ“ｅ”が入力され、それぞれレジスタ２６ｎの指定ビット位置に格納される（図５（ｆ）〜（ｈ））。
【００３１】
読み出し期間であるクロックサイクルＴ１５〜Ｔ１７では、まず、クロックサイクルＴ１５において、データを読み出すレジスタを指定するターゲットレジスタ読み出し信号ＴＲＲ、及び、ソースレジスタ読み出し信号ＳＲＲがレジスタ番号ｎとともにレジスタファイル２２に与えられる（図５（ｉ）（ｊ））。レジスタ番号ｎがデコードされ、ターゲットレジスタ読み出し許可信号ＴＲＥｎ、ソースレジスタ読み出し許可信号ＳＲＥｎが、図５（ｉ）に示されるタイミングでレジスタ部２６ｎに出力され、ターゲット読み出しビットカウンタ４１、ソース読み出しビットカウンタ４２がカウントを開始する（図５（ｋ））。レジスタ部２６ｎのレジスタ２６に保持されるデータは（図５（ｆ）〜（ｈ））、演算器２１に向けて、クロックに同期してビット０からビットｍまで順にシリアルに出力される（図５（ｌ））。
【００３２】
次に、図６を参照して、レジスタ書き込みの直後に読み出す動作を説明する。レジスタ書き込みタイミングは、図５と同じタイミングである。したがって、書き込み信号ＷＳは、図６（ｂ）に示されるタイミングに書き込みレジスタ番号ＷＲＮ（図６（ｃ））とともに書き込みレジスタ番号デコーダ２２３に入力される。ここでは、書き込みレジスタ番号として“ｎ”が指定される。したがって、書き込みレジスタ番号デコーダ２２３は、レジスタ部２６ｎに向けて、図６（ｂ）に示されるタイミングで書き込み許可信号ＷＲＥを出力する。
【００３３】
書き込み許可信号ＷＲＥをトリガとして、書き込みビットカウンタ４３は、動作を開始する。図６（ｄ）に示されるように、書き込みビットカウンタ４３は、クロックサイクルＴ２１において“０”にリセットされ、クロックサイクルＴ２２に“１”、クロックサイクルＴ２３に“２”と歩進し、クロックサイクルＴ２５には最大値“ｍ”になる。
【００３４】
クロック信号（図６（ａ））に同期して書き込みデータＷＤがレジスタ書き込みバス３１を介してレジスタ部２６ｎに入力される。クロックサイクルＴ２１に最下位ビットのデータ“ａ”、クロックサイクルＴ２２にビット１のデータ“ｂ”、クロックサイクルＴ２３にビット２のデータ“ｃ”、…、クロックサイクルＴ２５に最上位ビット（ビットｍ）のデータ“ｅ”が入力され、それぞれレジスタ２６ｎの指定ビット位置に格納される（図６（ｆ）〜（ｈ））。
【００３５】
レジスタからのデータ読み出しは、書き込み動作の開始から１クロックサイクル遅れて開始される。クロックサイクルＴ２２にレジスタ読み出し信号（ＴＲＲ、ＳＲＲ）がレジスタ番号ｎ（ＴＲＮ、ＳＲＮ）とともにレジスタファイル２２に与えられる（図６（ｉ）（ｊ））。レジスタ番号ｎがデコードされ、レジスタ読み出し許可信号（ＴＲＥｎ、ＳＲＥｎ）が、図６（ｉ）に示されるタイミングでレジスタ部２６ｎに出力される。読み出しビットカウンタ（４１、４２）がカウントを開始する（図６（ｋ））。レジスタ部２６ｎのレジスタ２６に保持されるデータは（図６（ｆ）〜（ｈ））、クロックに同期して、ビット０から順にビットｍまで演算器２１へシリアルに出力される。すなわち、レジスタに書き込まれた直後のビット位置のデータが順に読み出されることになる（図６（ｌ））。
【００３６】
ここでは、データ処理部は１つの演算器を備えるように説明されているが、複数の演算器を備えるデータ処理部にも適用可能である。複数の演算器を備えるデータ処理部の場合、第１の演算器から出力される最初のブロックの演算結果がレジスタに書き込まれると、全てのブロックの演算結果の確定を待たずに、そのブロックを読み出して第２の演算器の演算が開始できる。第１の演算器の演算開始から第２の演算器の演算開始までの遅延は、最初のブロックの演算時間だけとなる。このように、レジスタファイル２２において、レジスタ２６への読み出し動作は、データのＬＳＢを基準にして行われ、書き込み動作に重なるように実施される。したがって、シリアル演算処理または分割演算処理を行う場合に発生するレイテンシを見かけ上０にすることが可能になり、処理性能の向上を実現できる。
【００３７】
次に、図７を参照して、読み出し直後の書き込み動作について説明する。クロック信号（図７（ａ））の１周期ごとに符号が付され、この符号を用いてタイミングが説明される。ターゲットレジスタ読み出しとソースレジスタ読み出しとは、同じタイミングで行われるため、ここではターゲットレジスタ読み出しの動作を説明する。
【００３８】
ターゲットレジスタ読み出し信号ＴＲＲは、クロックサイクルＴ３１において、ターゲットレジスタ番号ＴＲＮとともに読み出しレジスタ番号デコーダ２２１に入力される（図７（ｂ）（ｃ））。ここでは、ターゲットレジスタ読み出しレジスタ番号として“ｎ”が指定される。したがって、ターゲットレジスタ読み出し番号レジスタ２２１は、レジスタ部２６ｎに向けて、図７（ｂ）に示されるタイミングでターゲットレジスタ読み出し許可信号ＴＲＥｎを出力する。
【００３９】
ターゲットレジスタ読み出し許可信号ＴＲＥｎをトリガとして、ターゲット読み出しビットカウンタ４１は、動作を開始する。図７（ｄ）に示されるように、ターゲット読み出しビットカウンタ４１は、クロックサイクルＴ３１にリセットされ、クロックサイクルＴ３２に“１”、クロックサイクルＴ３３に“２”と歩進し、クロックサイクルＴ３５には最大値“ｍ”になる。
【００４０】
レジスタ部２６ｎからは、これに同期して、ターゲットレジスタ読み出しデータＴＲＤが出力される。すなわち、クロックサイクルＴ３１にビット０のデータ“ａ”、クロックサイクルＴ３２にビット１のデータ“ｂ”、クロックサイクルＴ３３にビット２のデータ“ｃ”、…、クロックＴ３５にビットｍのデータ“ｅ”が演算器２１に順次供給される（図７（ｅ））。ターゲットレジスタ読み出しデータＴＲＤは、演算器２１において、ビット毎に指定された演算が施され、順次出力される（図７（ｆ））。すなわち、演算器２１に次のビットのデータが供給される前に、演算結果“ｐ”、“ｑ”、…、“ｔ”が出力される。
【００４１】
一方、書き込み信号ＷＳは、図７（ｇ）に示されるタイミングに書き込みレジスタ番号ＷＲＮ（図７（ｈ））とともに書き込みレジスタ番号デコーダ２２３に入力される。ここでは、書き込みレジスタ番号としてターゲットレジスタ番号と同じ“ｎ”が指定されるものとする。書き込みレジスタ番号デコーダ２２３は、レジスタ部２６ｎに対して、図７（ｇ）に示されるタイミングで書き込み許可信号ＷＲＥｎを出力する。
【００４２】
書き込み許可信号ＷＲＥｎをトリガとして、書き込みビットカウンタ４３は、動作を開始する。書き込みビットカウンタ４３は、クロックサイクルＴ３１において“０”にリセットされ、クロックサイクルＴ３２に“１”、クロックサイクルＴ３３に“２”と歩進し、クロックサイクルＴ３５に最大値“ｍ”になる。書き込みビットカウンタ４３の値は、書き込みビットデコーダ５３によりデコードされ、書き込みレジスタの書き込みビット位置を指定する。演算器２１から出力される演算結果（図７（ｆ））は、指定のビット位置に順次格納される（図７（ｊ）〜（ｌ））。ここでは、ターゲットレジスタと、書き込みレジスタとが同じレジスタ部２６ｎであるから、レジスタ部２６ｎのビット０は“ａ”から“ｐ”に、ビット１は“ｂ”から“ｑ”に、…、ビットｍは“ｅ”から“ｔ”に、演算後のデータに置き換わる。
【００４３】
このように、レジスタファイル２２において、レジスタ２６への書き込み動作は、データのＬＳＢを基準にして行われ、読み出し動作に重なるように実施される。したがって、シリアル演算処理または分割演算処理を行う場合に発生するレイテンシを見かけ上０にすることが可能になり、処理性能の向上を実現できる。
【００４４】
上記では、レジスタファイル２２から読み出し、レジスタファイル２２に書き込むデータは、１ビット単位で行うように説明された。例えば、レジスタ２６からデータを読み出す読み出し回路は、図８に示されるように、レジスタ２６から出力されるデータを読み出しデータ選択回路６０により１ビットずつ選択してシリアルに出力する。出力するビット位置は、ビットカウンタ４０によってカウントされる。カウント値は、ビット位置デコーダ５０によりデコードされ、読み出しデータ選択回路６０に出力される。読み出しデータ選択回路６０は、ビット位置デコーダ５０から出力されるビット選択信号に基づいて、バッファ６００〜６０ｍのうちの指定された位置のバッファ６０ｉの出力が有効となり、シリアルデータとして出力される。
【００４５】
レジスタ２６への書き込みも同様に、レジスタ２６の各ビットに対応するフリップフロップに向けて書き込み許可信号が出力される。これにより指定されたビットのフリップフロップのみデータが書き込まれる。したがって、シリアルデータは、レジスタ２６の各フリップフロップに順に書き込まれることになる。
【００４６】
この読み出しおよび書き込み動作は、多ビットを有するブロック毎に行うことも可能である。すなわち、演算器２１が、複数ビットを含むブロック毎に分割されたデータをシリアルに演算する場合、そのブロック毎にレジスタファイル２２から読み出し、レジスタファイル２２に書き込めばよい。例えば、図９に示されるように、データを４ビット毎に分割して読み出す回路は、１ビットの場合と同じように、レジスタ２６の読み出し位置を４ビット単位にカウントするカウンタ４４と、読み出し位置をデコードするデコーダ５４と、４ビット毎にデータを選択する読み出しデータ選択回路６４とを備える。
【００４７】
出力するブロック位置は、カウンタ４４によってカウントされる。カウント値は、デコーダ５４によりデコードされ、読み出しデータ選択回路６４に出力される。読み出しデータ選択回路６４は、デコーダ５４から出力されるブロック選択信号に基づいて、バッファ６４０〜６４ｍのうちの指定された位置の４つのバッファ６４ｉ〜６４（ｉ＋３）の出力が有効となり、シリアルデータＲＤ０〜ＲＤ３として出力される。
【００４８】
レジスタ２６への書き込みも同様に、レジスタ２６の各ブロックに対応するフリップフロップに向けて書き込み許可信号が出力される。これにより指定されたブロックのフリップフロップのみデータが書き込まれる。したがって、ブロック単位に供給されるシリアルデータは、レジスタ２６の各フリップフロップに４ビットずつ順に書き込まれることになる。
【００４９】
このように、レジスタファイル２２からブロック単位にデータが読み出され、ブロック単位に演算が行われ、レジスタファイル２２あるいはシリアル・パラレル変換回路２８にブロック単位にデータが格納される。この演算は、ビット数を増加させることによりブロック単位の演算数が減少し、ブロック単位の演算時間が同じであれば、全体の演算時間が減少することになる。しかし、ブロックのビット数が増加すると、桁上げ等の演算時間が増加するため、むやみに増加することはできない。したがって、ブロックのビット数は、４乃至８ビット程度が好ましい。
【００５０】
上述のように、通常の演算は、ＬＳＢ側から処理することで、ＭＳＢ側のデータに関係なく演算が可能である。そのため、演算に使用されるデータは、全て１ビット以上かつワード長より短いブロック単位で扱われ、その転送および演算は、ＬＳＢまたはＬＳＢを含むブロックが先に行われる。データは、レジスタファイルからＬＳＢまたはＬＳＢを含むブロックが先にリードされ、演算ソースデータおよび演算ターゲットデータとして演算器に供給される。演算器はＬＳＢ側から順に演算処理を行い、演算結果データとしてレジスタファイルに書き戻される。したがって、演算処理を行う場合に発生するレイテンシを見かけ上０にすることが可能になり、処理性能の向上を実現できる。なお、演算器は、一般的な例としては四則演算や論理演算を実行するＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃａｌ  Ｕｎｉｔ）があるが、これに限定されず、例えば浮動小数点演算（ＦＰＵ）やその他のデータ演算処理を行う演算器であってもよい。また、本実施の形態では、ＬＳＢ側から処理する演算器について説明したが、ＭＳＢ側から処理する演算でも同じようにＭＳＢ側から処理可能である。演算の性質に適合した順に演算することにより処理性能の向上を実現できる。
【図面の簡単な説明】
【００５１】
【図１】本発明の実施の形態に係るデータ処理装置の構成を示すブロック図である。
【図２】同データ処理部の構成を示すブロック図である。
【図３】同レジスタファイルの構成を示すブロック図である。
【図４】同レジスタ部の構成を示すブロック図である。
【図５】同レジスタファイルの動作を説明するタイミング図（１）である。
【図６】同レジスタファイルの動作を説明するタイミング図（２）である。
【図７】同レジスタファイルの動作を説明するタイミング図（３）である。
【図８】同レジスタから１ビットのデータを読み出す回路を説明する図である。
【図９】同レジスタから複数ビットのデータを読み出す回路を説明する図である。
【符号の説明】
【００５２】
１０  データ処理部
１１  システムバス
１２  主記憶部
１５  割り込みコントローラ
１６  タイマ
１７  シリアルインタフェース
１８  ＤＭＡコントローラ
２１  演算器
２２  レジスタファイル
２３  命令デコーダ
２４  命令レジスタ
２５  プログラムカウンタ
２６  レジスタ
２７  バスインタフェース
２８  シリアル・パラレル変換回路
２９  パラレル・シリアル変換回路
３１  レジスタ書き込みバス
３２  内部アドレスバス
３３  内部データバス
４０  ビットカウンタ
４１  ターゲット読み出しビットカウンタ
４２  ソース読み出しビットカウンタ
４３  書き込みビットカウンタ
５０  ビット位置デコーダ
５１  ターゲット読み出しビットデコーダ
５２  ソース読み出しビットデコーダ
５３  書き込みビットデコーダ
６０  読み出しデータ選択回路
６１  ターゲット読み出しデータ選択回路
６２  ソース読み出しデータ選択回路
６４  読み出しデータ選択回路
２２１  ターゲットレジスタ番号デコーダ
２２２  ソースレジスタ番号デコーダ
２２３  書き込みレジスタ番号デコーダ
２６０〜２６ｎ  レジスタ部
６００〜６０ｍ、６０ｉ  バッファ
６４０〜６４ｍ、６４ｉ  バッファ
【図１】
2008059566.tif 000003
【図２】
2008059566.tif 000004
【図３】
2008059566.tif 000005
【図４】
2008059566.tif 000006
【図５】
2008059566.tif 000007
【図６】
2008059566.tif 000008
【図７】
2008059566.tif 000009
【図８】
2008059566.tif 000010
【図９】
2008059566.tif 000011