(57)【要約】【課題】内蔵メモリからの読み出し時にＥＣＣ機能を実現する場合に、高速にメモリからの読み出しが必要な命令コードの処理系での遅延時間の削減を図ったコンピュータ装置を得ること。【解決手段】１６ビット長を持つ一般データおよび高速不要命令コードにはパリティ５ビットを付加し、１２ビット長を持つ高速要命令コードには「４＋パリティ３ビット」×３の形式で都合パリティ９ビットを付加して内蔵メモリ２に格納する。「１６＋パリティ５ビット」のビット列には、一般に用いられている従来型ＥＣＣ回路４を適用し、「４＋パリティ３ビット」×３のビット列には、誤り訂正と訂正後の処理であるデコードとを共用化し経由段数を減らした誤り訂正・デコーダ１４を適用する。これによって、高速要命令コードを遅延時間少なく内蔵メモリから読み出すことができる。【選択図】        図１
2006323695.tif 000002
【特許請求の範囲】
【請求項１】
第１のビット長を持つデータビット列の全体を対象とした第１のパリティビットを付加した第１のビット長＋第１のパリティビットからなる第１のビット列と、前記第１のビット長よりも短い第２のビット長を持つ命令コードに第２のパリティビットを付加した第２のビット列であって、当該第２のビット長を複数個に分割した単位ビット長毎に前記第２のパリティビットを付加した単位ビット長＋第２のパリティビットを一組とする所定数からなる第２のビット列とを格納する内蔵メモリと、
前記内蔵メモリから読み出した前記第１のビット列について誤り訂正を行う誤り訂正回路と、
前記内蔵メモリから読み出した前記第２のビット列について、誤り訂正と訂正後の処理であるデコードとを並行して行う誤り訂正・デコーダと、
を備えたことを特徴とするコンピュータ装置。
【請求項２】
第１のビット長を持つ一般データおよび第１の命令コードに当該第１のビット長の全体を対象とした第１のパリティビットを付加した第１のビット長＋第１のパリティビットからなる第１のビット列と、前記第１のビット長よりも短い第２のビット長を持つ第２の命令コードに第２のパリティビットを付加した第２のビット列であって、当該第２のビット長を複数個に分割した単位ビット長毎に前記第２のパリティビットを付加した単位ビット長＋第２のパリティビットを一組とする所定数からなる第２のビット列とを格納する内蔵メモリと、
前記内蔵メモリから読み出した前記第１のビット列について誤り訂正を行う誤り訂正回路と、
前記誤り訂正回路が誤り訂正した前記第１の命令コードをデコードする命令デコーダと、
前記内蔵メモリから読み出した前記第２のビット列について、誤り訂正と訂正後の処理であるデコードとを並行して行う誤り訂正・デコーダと、
前記命令デコーダが出力する汎用レジスタ選択信号と前記誤り訂正・デコーダが出力する汎用レジスタ選択信号の一方を選択して汎用レジスタに与えるセレクタと、
を備えたことを特徴とするコンピュータ装置。
【請求項３】
前記誤り訂正・デコーダは、
前記第２のビット列における前記一組のそれぞれに対し、前記一組の入力ビットのうちの１つを除いたビットデータについて、または、当該ビットデータの反転ビットデータについてＡＮＤのＯＲを取る回路を備え、
前記ＡＮＤのＯＲを取る回路を用いて、前記一組それぞれのビット長を前記第１のビット長にデコードする回路として構成されている
ことを特徴とする請求項１または２に記載のコンピュータ装置。
【請求項４】
前記誤り訂正・デコーダは、前記第２のビット列における前記一組それぞれへの割り付けに従ってデコードした命令選択信号と汎用レジスタ選択信号とを出力することを特徴とする請求項３に記載のコンピュータ装置。
【請求項５】
前記セレクタは、前記誤り訂正・デコーダが出力する前記命令選択信号の一部を用いて選択動作を行うことを特徴とする請求項４に記載のコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータ装置に関し、特に内蔵メモリからの読み出し時にＥＣＣ（Error Check and Correct：誤り検出訂正）機能を実現するコンピュータ装置に関するものである。
【背景技術】
【０００２】
内蔵メモリからの読み出し時にＥＣＣ機能を実現するには、内蔵メモリにパリティビットを付加して誤り訂正符号化したデータを格納しておくことになるが、例えば、特許文献１では、パリティビットを付加して誤り訂正符号化したデータをメモリセルアレイに書き込む機能と、メモリセルアレイから読み出したデータに誤りがある場合には訂正する機能とを備えたＥＣＣ機能付き半導体記憶装置が開示されている。
【０００３】
【特許文献１】特開２００５−８５３５７公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、コンピュータ装置が使用する内蔵メモリには、一般データの他に命令コードも格納される。そして、その命令コードには、できるだけ早くメモリから読み出す必要のある命令コード（例えば加算命令など処理に時間の掛かる命令コード）がある一方で、命令コードの読み出しに引き続いて実行される一般データや、処理時間の短い命令コード（例えば論理演算命令コード）などは、早く読み出す必要はない。
【０００５】
しかしながら、上記文献に記載の技術では、メモリから読み出した全てのデータは同じＥＣＣ回路（誤り訂正回路）にて誤り訂正処理を受ける構成であるので、上記文献に記載の技術を内蔵メモリからの読み出し時にＥＣＣ機能を実現するコンピュータ装置に適用すると、一般データと命令コードとの区別なく、同じＥＣＣ回路にて誤り訂正処理を受けるので、早く読み出す必要のある命令コードも一般データと同じ遅延時間で出力されることになる。この場合に、ＥＣＣ回路は、上記文献にも示されているように、排他的論理和回路を含む多段の論理回路で構成されるので、遅延時間を短縮することは困難である。
【０００６】
したがって、内蔵メモリからの読み出し時にＥＣＣ機能を実現するコンピュータ装置では、内蔵メモリからの読み出し時に行う誤り訂正処理を、一般データと命令コードとに分けて行い、命令コード側の誤り訂正処理は一般データ側の誤り訂正処理よりも早く行えるようにする必要があるが、遅延時間の短い命令コード側の誤り訂正処理をどのようにして実現するかが問題である。
【０００７】
この発明は、上記に鑑みてなされたものであり、内蔵メモリからの読み出し時にＥＣＣ機能を実現する場合に、高速にメモリからの読み出しが必要な命令コードの処理系での遅延時間の削減を図ったコンピュータ装置を得ることを目的とする。
【課題を解決するための手段】
【０００８】
上述した目的を達成するために、この発明は、第１のビット長を持つデータビット列の全体を対象とした第１のパリティビットを付加した第１のビット長＋第１のパリティビットからなる第１のビット列と、前記第１のビット長よりも短い第２のビット長を持つ第２の命令コードに第２のパリティビットを付加した第２のビット列であって、当該第２のビット長を複数個に分割した単位ビット長毎に前記第２のパリティビットを付加した単位ビット長＋第２のパリティビットを一組とする所定数からなる第２のビット列とを格納する内蔵メモリと、前記内蔵メモリから読み出した前記第１のビット列について誤り訂正を行う誤り訂正回路と、前記内蔵メモリから読み出した前記第２のビット列について、誤り訂正と訂正後の処理であるデコードとを並行して行う誤り訂正・デコーダとを備えたことを特徴とする。
【０００９】
この発明によれば、内蔵メモリには、第１のビット長を持つデータビット列（主に一般データである）と、命令コード（主に高速要命令コードである）とが誤り訂正符号化の形式を異ならせて格納し、データビット列を含む第１のビット列に対しては、一般に用いられている誤り訂正回路を適用し、命令コードを含む第２のビット列に対しては、誤り訂正と訂正後の処理であるデコードとを共用化し経由段数を減らした誤り訂正・デコーダを適用する。これによって、命令コードは、複数段の論理ゲートを経由せずに、経由段数の少ない誤り訂正の過程で得ることができるので、高速読み出しを必要とする命令コードを遅延時間少なく内蔵メモリから読み出すことができる。
【発明の効果】
【００１０】
この発明によれば、内蔵メモリからの読み出し時にＥＣＣ機能を実現する場合に、高速にメモリからの読み出しが必要な命令コードの処理系での遅延時間の削減を図ったコンピュータ装置が得られるという効果を奏する。
【発明を実施するための最良の形態】
【００１１】
以下に図面を参照して、この発明にかかるコンピュータ装置の好適な実施の形態を詳細に説明する。
【００１２】
図１は、この発明の一実施の形態によるコンピュータ装置の構成を示すブロック図である。図１において、コンピュータ装置の主要素であるＣＰＵ１は、汎用レジスタ１１とＡＬＵ（演算装置）１２とを備えている。ＣＰＵ１には、高速読み出しが不要（以降「高速不要」という）の命令コードをデコードする高速不要命令デコーダ１３と、ＥＣＣ・デコーダ１４と、セレクタ１５とが追加されている。
【００１３】
ＣＰＵ１が使用する内蔵メモリ２は、例えば２１ビット単位で書き込みと読み出しとが行えるメモリである。内蔵メモリ２は、ＣＰＵ１のアドレスバス／制御信号ラインが接続されるアドレスバス／制御信号ポート２ａと、２１ビットのデータ入出力を行うデータ入力ポート２ｂおよびデータ出力ポート２ｃとを備えている。
【００１４】
ＣＰＵ１と内蔵メモリ２との間には、パリティ生成回路３と従来型ＥＣＣ回路４とが設けられている。ＣＰＵ１が出力する書き込みデータ列は、内蔵メモリ２のデータ入力ポート２ｂとパリティ生成回路３とに入力される。パリティ生成回路３は、ＣＰＵ１が出力する書き込みデータ列にパリティビットを付加する論理演算を行い、求めた数のパリティビットを内蔵メモリ２のデータ入力ポート２ｂに出力する。
【００１５】
ＣＰＵ１が内蔵メモリ２に出力する書き込みデータ列は、汎用レジスタ１１の内容であるが、この実施の形態では、１６ビット構成のものと、１２ビット構成のものとからなるとしている。１６ビット構成のデータ列は、一般データと高速不要の命令コードとに適用される。１２ビット構成のデータ列は、高速読み出しが必要（以降「高速要」という）である命令コードに適用される。
【００１６】
なお、この実施の形態では、ＣＰＵ１が命令コードも内蔵メモリ２に書き込む場合を示すが、内蔵メモリ２にマスクＲＯＭやＥＥＰＲＯＭを用いるなど内蔵メモリ２の性格などによっては、命令コードは外部から直接書き込まれる場合もある。
【００１７】
パリティ生成回路３は、ＣＰＵ１が出力する書き込みデータ列が１６ビット構成であるときは、１６ビットの全体を対象とするパリティ５ビットを演算し、そのパリティ５ビットを内蔵メモリ２のデータ入力ポート２ｂに出力する。また、ＣＰＵ１が出力する書き込みデータ列が１２ビット構成であるときは、後述する方法で演算したパリティ９ビットを内蔵メモリ２のデータ入力ポート２ｂに出力する。
【００１８】
要するに、内蔵メモリ２には、書き込みデータ列にパリティが付加された２１ビット構成で格納されるが、この実施の形態では、ＣＰＵ１が出力するデータ列が１６ビット構成で、それにパリティ５ビットが付加される高速不要命令コードでは、データビット１６＋パリティ５ビットの形式で格納されるのに対し、データ列が１２ビット構成で、それにパリティ９ビットが付加される高速要命令コードでは、「データ４ビット＋パリティ３ビット」の７ビット×３の形式で格納される。
【００１９】
従来型ＥＣＣ回路４は、一般的に用いられているＥＣＣ回路（誤り訂正回路）であり、例えば特許文献１に示されるＥＣＣ回路も用いることができる。この従来型ＥＣＣ回路４には、内蔵メモリ２のデータ出力ポート２ｂから出力される２１ビットのデータ列のうち、データ１６ビット＋パリティ５ビットのデータ列が入力される（図２（１）参照）。つまり、従来型ＥＣＣ回路４には、一般データと高速不要命令コードとが入力される。従来型ＥＣＣ回路４にて誤り訂正された１６ビットの一般データは汎用レジスタ１１に出力され、誤り訂正された１６ビットの高速不要命令コードは高速不要命令デコーダ１３に入力される。
【００２０】
高速不要命令デコーダ１３は、汎用レジスタ１１とＡＬＵ１２とを選択する２系統のデコード出力を行う。図１では、セレクタ１５に対しては３２ビット（１６ビット＋１６ビット）を出力し、ＡＬＵ１２に対しては２ビットを出力するとしている。
【００２１】
一方、ＥＣＣ・デコーダ１４には、内蔵メモリ２のデータ出力ポート２ｂから出力される２１ビットのデータ列のうち、データ１２ビット＋パリティ９ビット（「データ４ビット＋パリティ３ビット」の７ビット×３）のデータ列（図２（２）参照）が入力される。つまり、ＥＣＣ・デコーダ１４には、高速要命令コードが入力される。
【００２２】
ＥＣＣ・デコーダ１４は、誤り訂正を行う回路部分（高速型ＥＣＣ回路１４ａ）と、訂正後のデータ処理回路の一部であるデコーダ（高速要命令デコーダ１４ｂ）とを一体化構成したものである。図１では、理解を容易にするため、従来型ＥＣＣ回路４に対応する高速型ＥＣＣ回路１４ａと、高速不要命令デコーダ１３に対応する高速要命令デコーダ１４ｂとにブロック分けして示してあるが、実際には区別できない（図３〜図６参照）。
【００２３】
ＥＣＣ・デコーダ１４は、汎用レジスタ１１とＡＬＵ１２とを選択する２系統のデコード出力を行う。図１では、セレクタに対しては３２ビット（１６ビット＋１６ビット）を出力し、ＡＬＵ１２に対しては１５ビットを出力し、セレクタ１５に１ビットを出力するとしている。
【００２４】
セレクタ１５は、ＥＣＣ・デコーダ１４からの１ビットを選択指令とし、ＥＣＣ・デコーダ１４が出力する汎用レジスタ１１への３２ビット（１６ビット＋１６ビット）と、高速不要命令デコーダ１３が出力する汎用レジスタ１１への３２ビット（１６ビット＋１６ビット）との一方を選択して汎用レジスタ１１に与えるようになっている。
【００２５】
次に、図２を参照して、内蔵メモリ２に書き込まれ読み出される高速不要命令コードと高速要命令コードの各ビット構成について説明する。これは、パリティ生成回路３の動作を説明する図でもある。
【００２６】
図２（１）は、高速不要命令デコーダへの入力ビットの構成例を示す図である。パリティ生成回路３は、ＣＰＵ１から高速不要命令コードの出力通知を受け取ると、ＣＰＵ１が出力する１６ビット（Ｄ０〜Ｄ１５）の全データビットに論理演算を施して、５ビットのパリティビットＤ１６〜Ｄ２０を生成する。この場合、ＣＰＵ１が出力する１６ビットの高速不要命令コードでは、ビットＤ４〜Ｄ６，Ｄ１１，Ｄ１２には、パリティ５ビットをゼロにするための論理値が設定されている。つまり、内蔵メモリ２から従来型ＥＣＣ回路４に入力する２１ビットの高速不要命令コードでは、ビットＤ１６〜Ｄ２０が全て“０”になっている。
【００２７】
高速不要命令デコーダ１３では、従来型ＥＣＣ回路４から、誤り訂正を行った図２（１）に示す１６ビット（ビットＤ０〜Ｄ１５）の高速不要命令コードを受け取ると、ビットＤ７〜Ｄ１０の５ビットを汎用レジスタ（ソース１）選択用に用い、ビットＤ０〜Ｄ３の４ビットを汎用レジスタ（ソース２／ディスティネーション）選択用に用い、ビットＤ１３を命令選択用に用いるようになっている。
【００２８】
図２（２）は、ＥＣＣ・デコーダ１４への入力ビットの構成例を示す図である。ＥＣＣ・デコーダ１４は、後述するように７ビット単位で処理動作を行うので、パリティ生成回路３は、ＣＰＵ１から高速要命令コードの出力通知を受け取ると、ＣＰＵ１が出力する１２ビットのデータを、「Ｄ０〜Ｄ３」「Ｄ７〜Ｄ１０」「Ｄ１４〜Ｄ１７」と４ビット単位で分割し、各４ビットのデータビットに論理演算を施して、３ビットのパリティビット「Ｄ４〜Ｄ６」「Ｄ１１〜Ｄ１３」「Ｄ１８〜Ｄ２０」を生成する。その結果、ＥＣＣ・デコーダ１４には、内蔵メモリ２から２１ビットの高速要命令コードが、「Ｄ０〜Ｄ６」「Ｄ７〜Ｄ１３」「Ｄ１４〜Ｄ２０」の組み合わせで入力される。
【００２９】
この場合、パリティ生成回路３は、１２ビット構成の高速要命令コードへの各３ビットのパリティビットを次のようにして求める。すなわち、「＾」を排他的論理和の記号とすれば、「Ｄ４〜Ｄ６」は、Ｄ４＝Ｄ０＾Ｄ１＾Ｄ３、Ｄ５＝Ｄ０＾Ｄ２＾Ｄ３、Ｄ６＝Ｄ１＾Ｄ２＾Ｄ３の演算を行って生成する。また、「Ｄ１１〜Ｄ１３」は、Ｄ１１＝Ｄ７＾Ｄ８＾Ｄ１０、Ｄ１２＝Ｄ７＾Ｄ９＾Ｄ１０、Ｄ６＝Ｄ８＾Ｄ９＾Ｄ１０の演算を行って生成する。また、「Ｄ１８〜Ｄ２０」は、Ｄ１８＝Ｄ１４＾Ｄ１５＾Ｄ１７、Ｄ１９＝Ｄ１４＾Ｄ１６＾Ｄ１７、Ｄ２０＝Ｄ１５＾Ｄ１６＾Ｄ１７の演算を行って生成する。
【００３０】
ＥＣＣ・デコーダ１４では、ビットＤ０〜Ｄ６の７ビットを汎用レジスタ（ソース２／ディスティネーション）選択用として用い、ビットＤ７〜Ｄ１３の７ビットを汎用レジスタ（ソース１）選択用として用い、ビットＤ１４〜Ｄ２１の７ビットを命令選択用として用いる。そして、命令選択用の７ビット（ビットＤ１４〜Ｄ２１）をデコードした１６ビット中の１ビットがセレクタ１５に出力される。ビットＤ１７〜Ｄ１４が全て“０”であるときはビットＤ２０〜Ｄ１８も全て“０”であるので、この場合には、高速不要命令デコーダ１３の出力が選択され汎用レジスタ１１に与えられる。上記以外の場合には、ＥＣＣ・デコーダ１４の出力が選択され汎用レジスタ１１に与えられる。
【００３１】
図３は、図１に示すＥＣＣ・デコーダ１４の機能的な構成を説明する図である。図２（２）に示すビット構成から理解できるように、ＥＣＣ・デコーダ１４は、機能的に、データ４ビット＋パリティ３ビットの７ビットを１６ビットにデコードする７ｔｏ１６デコーダ３１，３２，３３の３デコーダで構成される。
【００３２】
７ｔｏ１６デコーダ３１は、Ａ〜Ｇ入力として、ビットＤ１４〜Ｄ２１がデータビットＤ０〜Ｄ３，パリティビットＰ０〜Ｐ２として入力し、Ｙ００〜Ｙ１５の１６ビットが命令選択信号として出力される。そのうちの１５ビットがＡＬＵ１２に与えられ、１ビットがセレクタ１５に与えられる。
【００３３】
７ｔｏ１６デコーダ３２は、Ａ〜Ｇ入力として、ビットＤ７〜Ｄ１３がデータビットＤ０〜Ｄ３，パリティビットＰ０〜Ｐ２として入力し、Ｙ００〜Ｙ１５の１６ビットが汎用レジスタ選択信号（ソース１）としてセレクタ１５に出力される。
【００３４】
７ｔｏ１６デコーダ３３は、Ａ〜Ｇ入力として、ビットＤ０〜Ｄ６がデータビットＤ０〜Ｄ３，パリティビットＰ０〜Ｐ２として入力し、Ｙ００〜Ｙ１５の１６ビットが汎用レジスタ選択信号（ソース２／ディスティネーション）としてセレクタ１５に出力される。
【００３５】
図４−１は、図３に示す７ｔｏ１６デコーダの入力段を構成する３ｔｏ８デコーダを示す図である。図４−２は、図３に示す７ｔｏ１６デコーダの出力段を構成するＲデコーダを示す図である。
【００３６】
図３に示す３つの７ｔｏ１６デコーダ３１，３２，３３は、一体的に構成され、その入力段は、図４−１に示すように、７個の３ｔｏ８デコーダ４１ａ〜４１ｇで構成され、その出力段は、図４−２に示すように、１６個のＲデコーダ４２00〜４２15で構成されている。
【００３７】
図４−１において、Ａ〜Ｇの７ビット信号のうち、ＥＦＧの３ビットは３ｔｏ８デコーダ４１ａの入力端Ｘ１，Ｘ２，Ｘ３に印加され、出力端Ｙ０〜Ｙ７からデコードしたＥＦＧ０〜ＥＦＧ７の８ビット信号が出力される。ＡＦＧの３ビットは３ｔｏ８デコーダ４１ｂの入力端Ｘ１，Ｘ２，Ｘ３に印加され、出力端Ｙ０〜Ｙ７からデコードしたＡＦＧ０〜ＡＦＧ７の８ビット信号が出力される。ＡＢＧの３ビットは３ｔｏ８デコーダ４１ｃの入力端Ｘ１，Ｘ２，Ｘ３に印加され、出力端Ｙ０〜Ｙ７からデコードしたＡＢＧ０〜ＡＢＧ７の８ビット信号が出力される。ＡＢＣの３ビットは３ｔｏ８デコーダ４１ｄの入力端Ｘ１，Ｘ２，Ｘ３に印加され、出力端Ｙ０〜Ｙ７からデコードしたＡＢＣ０〜ＡＢＣ７の８ビット信号が出力される。ＢＣＤの３ビットは３ｔｏ８デコーダ４１ｅの入力端Ｘ１，Ｘ２，Ｘ３に印加され、出力端Ｙ０〜Ｙ７からデコードしたＢＣＤ０〜ＢＣＤ７の８ビット信号が出力される。ＣＤＥの３ビットは３ｔｏ８デコーダ４１ｆの入力端Ｘ１，Ｘ２，Ｘ３に印加され、出力端Ｙ０〜Ｙ７からデコードしたＣＤＥ０〜ＣＤＥ７の８ビット信号が出力される。ＤＥＦの３ビットは３ｔｏ８デコーダ４１ｇの入力端Ｘ１，Ｘ２，Ｘ３に印加され、出力端Ｙ０〜Ｙ７からデコードしたＤＥＦ０〜ＤＥＦ７の８ビット信号が出力される。
【００３８】
図４−２において、１６個のＲデコーダ４２00〜４２15は、１４個の入力端「Ａ０，Ａ１，Ｂ０，Ｂ１，Ｃ０，Ｃ１，Ｄ０，Ｄ１，Ｅ０，Ｅ１，Ｆ０，Ｆ１，Ｇ０，Ｇ１」を備え、１つ出力端Ｙを備えている。そして、１４個の入力端では、７個の３ｔｏ８デコーダ４１ａ〜４１ｇの出力ビットのうち、Ａビット信号を除いた出力ビットが入力端「Ａ０，Ａ１」に入力され、Ｂビット信号を除いた出力ビットが入力端「Ｂ０，Ｂ１」に入力され、Ｃビット信号を除いた出力ビットが入力端「Ｃ０，Ｃ１」に入力され、Ｄビット信号を除いた出力ビットが入力端「Ｄ０，Ｄ１」に入力され、Ｅビット信号を除いた出力ビットが入力端「Ｅ０，Ｅ１」に入力され、Ｆビット信号を除いた出力ビットが入力端「Ｆ０，Ｆ１」に入力され、Ｇビット信号を除いた出力ビットが入力端「Ｇ０，Ｇ１」に入力される。
【００３９】
次に、図４−１に示す７個の３ｔｏ８デコーダ４１ａ〜４１ｇは、それぞれ例えば図５に示すように構成されている。図５において、入力端Ｘ１に印加されるデータビットは、インバータ回路５２にて反転されてＮＡＮＤ回路５７，５９の一方の入力となり、さらにインバータ回路５５にて反転されてＮＡＮＤ回路５６，５８の一方の入力となる。入力端Ｘ２に印加されるデータビットは、インバータ回路５１にて反転されてＮＡＮＤ回路５８，５９の他方の入力となり、さらにインバータ回路５４にて反転されてＮＡＮＤ回路５６，５７の他方の入力となる。
【００４０】
ＮＡＮＤ回路５９の出力は、ＮＯＲ回路として動作するインバータ付きＡＮＤ回路６３，６７の一方の入力端に印加される。ＮＡＮＤ回路５８の出力は、ＮＯＲ回路として動作するインバータ付きＡＮＤ回路６２，６６の一方の入力端に印加される。ＮＡＮＤ回路５７の出力は、ＮＯＲ回路として動作するインバータ付きＡＮＤ回路６１，６５の一方の入力端に印加される。ＮＡＮＤ回路５６の出力は、ＮＯＲ回路として動作するインバータ付きＡＮＤ回路６０，６４の一方の入力端に印加される。
【００４１】
入力端Ｘ３に印加されるデータビットは、インバータ回路５０にて反転されてインバータ付きＡＮＤ回路６０，６１，６２，６３の他方の入力端に印加され、さらにインバータ回路５３にて反転されてインバータ付きＡＮＤ回路６４，６５，６６，６７の他方の入力端に印加される。これによって、８個のインバータ付きＡＮＤ回路６７〜６０の出力に、３ビット入力のデコード結果（Ｙ０〜Ｙ７）が得られる。
【００４２】
次に、図４−２に示す１６個のＲデコーダ４２00〜４２15は、それぞれ例えば図６に示すように構成されている。図６において、入力端Ａ０，Ａ１に印加される２ビットデータは、ＡＮＤ回路７０を介してＮＯＲ回路７８の一方の入力となり、入力端Ｂ０，Ｂ１に印加される２ビットデータは、ＡＮＤ回路７１を介してＮＯＲ回路７８の他方の入力となる。入力端Ｃ０，Ｃ１に印加される２ビットデータは、ＡＮＤ回路７２を介してＮＯＲ回路７９の一方の入力となり、入力端Ｄ０，Ｄ１に印加される２ビットデータは、ＡＮＤ回路７３を介してＮＯＲ回路７９の他方の入力となる。ＮＯＲ回路７８，７９の出力はＮＡＮＤ回路として動作するインバータ付きＯＲ回路８１を介してＮＯＲ８４の一方の入力となる。
【００４３】
入力端Ｅ０，Ｅ１に印加される２ビットデータは、ＡＮＤ回路７４を介してＮＯＲ回路８０の一方の入力となり、入力端Ｆ０，Ｆ１に印加される２ビットデータは、ＡＮＤ回路７５を介してＮＯＲ回路８０の他方の入力となる。ＮＯＲ回路８０の出力はＯＲ回路８３のインバータ端に入力される。入力端Ｇ０に印加されるビットデータは、インバータ回路７６にて反転されＮＯＲ回路として動作するインバータ付きＡＮＤ回路８２の一方の入力となる。入力端Ｇ１に印加されるビットデータは、インバータ回路７７にて反転されインバータ付きＡＮＤ回路８２の他方の入力となる。インバータ付きＡＮＤ回路８２の出力はＯＲ回路８３の非インバータ端に入力される。ＯＲ回路８３の出力はＮＯＲ８４の他方の入力となる。これによって、ＮＯＲ８４の出力に、１４個の入力ビットデータから選択された１つのビットデータＹが得られる。
【００４４】
次に、動作について説明する。従来型ＥＣＣ回路４では、内蔵メモリ２から読み出される、データ１６ビット＋パリティ５ビット構成の２１ビットデータに誤り訂正を施し、図２（１）において、データビットＤ２０〜Ｄ１６（パリティ５ビット）が全て“０”である場合のデータビットＤ１５〜Ｄ０が高速不要命令デコーダ１３に与えられ、データビットＤ２０〜Ｄ１６（パリティ５ビット）が全て“０”以外である一般データの１６ビットが汎用レジスタ１１に与えられる。
【００４５】
高速不要命令デコーダ１３は、図１では汎用レジスタ１１の選択に「１６ビット＋１６ビット」を出力するとしてあるが、高速不要命令コードは、図２（１）において、データビットＤ１５＝Ｄ１４＝“０”であり、「×」印のデータビットＤ１２，Ｄ１１，Ｄ６〜Ｄ４は、特別のデータビットである。したがって、高速不要命令デコーダ１３は、実際には、データビットＤ１０〜Ｄ７の４ビットをデコードして８ビットの汎用レジスタ選択信号（ソース１）を出力し、データビットＤ３〜Ｄ０の４ビットをデコードして８ビットの汎用レジスタ選択信号（ソース２／ディスティネーション）を出力する。そして、データビットＤ１３をデコードした２ビットの命令選択信号をＡＬＵ１２に出力する。
【００４６】
一方、ＥＣＣ・デコーダ１４では、上記した構成によって、高速化が必要な命令コード１２ビットについての誤り訂正と訂正後のデータ処理であるデコードとを並行して行えるようにし、遅延時間の短縮化を可能にしている。以下、具体的に説明する。
【００４７】
図２（２）にて説明したように、図３に示した７ｔｏ１６デコーダ３１〜３３の３デコーダの各入力Ａ〜Ｇのうち、入力Ｅ〜Ｇは、任意のデータビットＡ〜Ｄ（Ｄ０〜Ｄ３）に対して、Ｅ＝Ａ＾Ｂ＾Ｄ、Ｆ＝Ａ＾Ｃ＾Ｄ、Ｇ＝Ｂ＾Ｃ＾Ｄの演算を施して生成されたパリティビットＰ０〜Ｐ２である。したがって、この例では、誤りなしの命令コードは、全部で２4＝１６種類作ることができる。このようにしておくと、１ビットの誤りのある命令コードは、他の１５種類の誤りのない命令コードと、それらに１ビットの誤りのある命令コードとに一致しないので、１ビットの誤りのある命令コードから元の誤りのない命令コードを同定することができる。
【００４８】
ＥＣＣ・デコーダ１４では、このようなデータ４ビット＋パリティ３ビット構成の７ビットを単位にして、７ｔｏ１６のデコードを行う。一般に、例えば４ｔｏ１６のデコードでは、１６個の４入力ＡＮＤ回路に、データ４ビットをそのまま入力する、または反転したデータ４ビットを入力し、それらの出力のＯＲを取る構成が採用される。
【００４９】
ＥＣＣ・デコーダ１４での７ｔｏ１６のデコードを同様の構成で行うと、入力Ａ〜Ｇの１つに誤りがある場合に出力がイネーブルにならない。そこで、例えば、入力Ａに誤りのある場合を想定して入力Ａを無視した６入力（Ｂ〜Ｇ）をそのまま、または反転してＡＮＤ回路に入力する構成を採用する。入力Ｂ〜Ｇについても同様である。
【００５０】
要するに、ＥＣＣ・デコーダ１４での７ｔｏ１６のデコードでは、それらのどの場合にも対応できるように、入力Ａ〜Ｇ（または反転したＡ〜Ｇ）の１入力を無視した７通りの６入力についてＡＮＤを取り、それによる７入力のＯＲを取る構成を採る。そして、ゲート段数を減らした構成にしている。
【００５１】
具体的には、６入力ＡＮＤは、３入力ＡＮＤ（図５）の２個と図６の入力段に示す２入力ＡＮＤの１個とで構成され、７入力ＯＲは、図６に示す７８〜８０，８１〜８４の６つで構成される。そして、入力Ａ〜Ｇ（または反転したＡ〜Ｇ）の１入力を無視した７通りの６入力ＡＮＤが構成できるように、２つの３入力ＡＮＤ（図５）の入力の組み合わせを、図４−１での３入力に示すように、重複しないように定めている。
【００５２】
これによって、図４−２に示す１６個のＲデコーダ４２00〜４２15の出力Ｙ００〜Ｙ１５には、入力Ａ〜Ｇの１ビット誤りを無視したデコード信号が出力され、誤り訂正されたデコード信号が出力されることになる。
【００５３】
従来型ＥＣＣ回路４および高速不要命令デコーダ１３では、内蔵メモリ２の読み出しデータが入力されてからデコード出力が得られるまでに、例えば特許文献１に示されているように、１０段以上のゲートを通過する必要がある。
【００５４】
これに対して、この実施の形態によるＥＣＣ・デコーダ１４では、内蔵メモリ２の読み出しデータが入力されてからデコード出力が得られるまでに、３ｔｏ８デコーダ（図５）では、５６〜５９のＮＡＮＤ１段と６０〜６７のＮＯＲ１段とを通り、Ｒデコーダ（図５）では、７０と７８の複合ゲート１段と８１のＮＡＮＤ１段と８４のＮＯＲ１段とを通るので、都合、ゲート５段で済み、遅延時間を削減することができる。
【００５５】
このように、この実施の形態によれば、内蔵メモリからの読み出し時にＥＣＣ機能を実現する場合に、内蔵メモリに、高速読み出しを必要とする命令コードと高速読み出しを必要としない命令コードとを誤り訂正符号化の形式を違えて格納し、高速読み出しが必要な命令コードについては、誤り訂正とそれ後続する処理系の一部であるデコードとを共用化するようにしたので、遅延時間の削減を図ることができる。
【００５６】
なお、この実施の形態では、高速読み出し不要の命令コードを一般データと共に、内蔵メモリに格納する場合を示したが、高速読み出し不要の命令コードが存在しない場合もある。その場合には、高速不要命令デコーダとセレクタは、不要にすると良い。
【００５７】
また、汎用レジスタ選択信号（ソース２／ディスティネーション）は、汎用レジスタ選択信号（ソース２）と汎用レジスタ選択信号（ディスティネーション）とに分かれている場合もあるが、その場合でもＥＣＣ・デコーダは対応して構成できるので、この発明は適用することができる。
【産業上の利用可能性】
【００５８】
以上のように、この発明にかかるコンピュータ装置は、内蔵メモリからの読み出し時にＥＣＣ機能を実現する場合に、高速読み出しを必要とする命令コードのＥＣＣ処理での遅延時間を少なくするのに有用である。
【図面の簡単な説明】
【００５９】
【図１】この発明の一実施の形態によるコンピュータ装置の構成を示すブロック図である。
【図２】図１に示す高速不要命令デコーダとＥＣＣ・デコーダの各入力ビットの構成例を説明する図である。
【図３】図１に示すＥＣＣ・デコーダの機能的な構成を説明する図である。
【図４−１】図３に示す７ｔｏ１６デコーダの入力段を構成する３ｔｏ８デコーダを示す図である。
【図４−２】図３に示す７ｔｏ１６デコーダの出力段を構成するＲデコーダを示す図である。
【図５】図４−１に示す３ｔｏ８デコーダの回路構成を示す図である。
【図６】図４−２に示すＲデコーダの回路構成を示す図である。
【符号の説明】
【００６０】
１  ＣＰＵ（コンピュータ装置）
２  内蔵メモリ
３  パリティ生成回路
４  従来型ＥＣＣ回路
１１  汎用レジスタ
１２  ＡＬＵ（演算装置）
１３  高速不要命令デコーダ
１４  ＥＣＣ・デコーダ
１４ａ  高速型ＥＣＣ回路
１４ｂ  高速要命令デコーダ
１５  セレクタ
３１〜３３  ７ｔｏ１６デコーダ
４１ａ〜４１ｇ  ３ｔｏ８デコーダ
４２00〜４２15  Ｒデコーダ
５０〜５５，７６，７７  インバータ回路
５６〜５９  ＮＡＮＤ回路
６０〜６７，８２  インバータ付きＡＮＤ回路（ＮＯＲ回路）
７０〜７６  ＡＮＤ回路
７８〜８０，８４  ＮＯＲ回路
８１  インバータ付きＯＲ回路（ＮＡＮＤ回路）
８３  片端インバータ付きＯＲ回路
【図１】
2006323695.tif 000003
【図２】
2006323695.tif 000004
【図３】
2006323695.tif 000005
【図４−１】
2006323695.tif 000006
【図４−２】
2006323695.tif 000007
【図５】
2006323695.tif 000008
【図６】
2006323695.tif 000009