JPH10320221A - プロセッサ - Google Patents

プロセッサ

Info

Publication number
JPH10320221A
JPH10320221A JP9126702A JP12670297A JPH10320221A JP H10320221 A JPH10320221 A JP H10320221A JP 9126702 A JP9126702 A JP 9126702A JP 12670297 A JP12670297 A JP 12670297A JP H10320221 A JPH10320221 A JP H10320221A
Authority
JP
Japan
Prior art keywords
register
data
circuit
general
bit
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
JP9126702A
Other languages
English (en)
Inventor
Yuki Inoue
由紀 井上
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP9126702A priority Critical patent/JPH10320221A/ja
Publication of JPH10320221A publication Critical patent/JPH10320221A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Detection And Correction Of Errors (AREA)

Abstract

(57)【要約】 【課題】巡回符号化処理に必要な剰余の算出処理を高速
化する。 【解決手段】EORゲート120は、64ビットのレジ
スタ121に保持された情報ビット列と、64ビットの
レジスタ122に保持された剰余データの122のそれ
ぞれの最下位ビットから条件判定を行う際に使用される
フラグを生成する。このとき、レジスタ122内の剰余
データは1ビット右シフトされてバスb、バッファ12
7Bを介してEOR演算回路119に供給される。セレ
クタ124は、このフラグが1のときに、レジスタ12
3に保持された64ビットの生成多項式データを選択
し、フラグが0のときには、データ0を選択する。EO
R演算専用回路119は、レジスタ122から読み出さ
れた剰余データと、セレクタ124で選択された生成多
項式データに対して64ビットの排他的論理和演算を実
行し、新たな剰余データを生成し、レジスタ122に書
き込む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ディジタル信号処
理等における誤り訂正処理で使用される頻度が高い巡回
符号化処理を高速に行うための演算回路を有するプロセ
ッサに関する。
【0002】
【従来の技術】近年、データ伝送の信頼性を高めるた
め、伝送途中で生じる伝送データの誤りを訂正する誤り
訂正技術が多方面でよく用いられている。誤り訂正符号
としては、巡回符号がよく使用されている。2元(n、
k)巡回符号の符号化では、kビットの情報ビットから
nビットの符号ビット列が生成される。まず、情報ビッ
ト列を係数とする多項式を生成する。例えば、情報ビッ
ト列の長さkを4とし、そのビット列を”1100”と
すると、情報ビット列を係数とする多項式I(X)は、
【0003】
【数1】 I(X)=1・X3↑+1・X2↑+0・X+0・1=X3↑+X2↑ ・・・(1) である。ここで、X3↑は、Xの3乗を表す。X2↑も
同様である。以下でも、変数XのN乗をXN↑で表す。
巡回符号化処理では、生成多項式G(X)が定義され、
生成多項式G(X)の次数はn−k次である。上記の例
で、生成多項式G(X)の次数を3とすると、符号ビッ
ト列の長さnは、n=4+3=7となり、(7、4)巡
回符号となる。符号ビット列を係数とする符号多項式W
(X)は、情報ビット列を係数とする多項式I(X)、
生成多項式G(X)および剰余多項式R(X)を用いて
次式で表される。
【0004】
【数2】 W(X)=Q(X)・G(X)=I(X)・X(n−k)↑+R(X) ・・・(2) すなわち、剰余多項式R(X)はI(X)とX(n−
k)↑との積を生成多項式G(X)で割っときに得られ
る剰余である。たとえば、生成多項式G(X)=X3↑
+X+1の場合、剰余多項式R(X)=Xとなり、符号
多項式はW(X)は、次式となる。
【0005】
【数3】 W(X)=(X3↑+X2↑)・X3↑+X =1・X6↑+1・X5↑+0・X4↑ +0・X3↑+0・X2↑+1・X+0・1 ・・・(3) つまり、生成多項式G(X)=X3↑+X+1を用いた
(7、4)巡回符号化処理においては、情報ビット”1
100”が与えられると、符号ビットは”110001
0”となる。この例からもわかる通り、符号ビット列の
先頭から4番目までのビット列(例では”1100”)
は、情報ビット列と一致する。また、符号ビット列の5
から7番目のビットは剰余多項式の係数と一致する。す
なわち、情報ビット列から符号ビット列を生成するため
には剰余ビットを算出すればよい。
【0006】マイクロプロセッサを使用して巡回符号の
符号化を行う場合は、その処理は、(1)剰余多項式の
係数を算出する処理と(2)出力される剰余多項式の係
数をメモリに格納する処理とに分けることができる。巡
回符号の符号化の処理の大半が剰余多項式の係数算出処
理により占められる。
【0007】
【発明が解決しようとする課題】本発明者は、たとえ
ば、本出願人により開発されたSH7600マイコンに
おいて上記CRC演算処理を実行するプログラムを検討
した。その結果、後に詳しく説明するように、従来の剰
余多項式の係数算出処理では、情報ビット列1ビットあ
たりの処理時間が大きいことを見いだした。
【0008】特に、生成多項式の次数が汎用レジスタの
長を越える場合には、処理量がさらに増大することを見
いだした。具体的には、CRC演算処理の処理量は、生
成多項式の次数が汎用レジスタの長さより短い場合に必
要な処理時間の約2倍程度かかる。
【0009】本発明の目的は、剰余多項式の係数算出処
理をより高速に実行できるプロセッサを提供することに
ある。
【0010】本発明のより具体的な目的は、生成多項式
の次数が汎用レジスタの長さを越える場合にも、剰余多
項式の係数算出処理を高速に実行できるプロセッサを提
供することにある。
【0011】
【課題を解決するための手段】上記問題を解決する為
に、本発明によるプロセッサには、少なくとも1ビット
のデータを保持可能な第1のレジスタと、複数のビット
のデータを保持可能な第2、第3のレジスタとが設けら
れる。第1のレジスタには、巡回符号化すべき情報ビッ
ト列の少なくとも一つの情報ビットが保持され、第2の
レジスタは、剰余データを保持するのに使用され、第3
のレジスタは、生成多項式の係数データを保持するのに
使用される。
【0012】さらに、第1のレジスタに保持された情報
ビットと、第2のレジスタに保持された剰余データの内
の上記一つのビットと比較されるべき特定の一つのビッ
トが入力される排他的論理和演算ゲートと、排他的論理
和演算を実行可能な演算回路と、更新回路とが設けられ
る。
【0013】この更新回路は、上記排他的論理和演算ゲ
ートの出力が第1の値のときに、上記第2のレジスタに
保持された剰余データを1ビットシフトしたデータと上
記第3のレジスタに保持された生成多項式の係数データ
とを上記演算回路に供給し、上記第2のレジスタ内の剰
余データを上記二つのデータに対して上記演算回路より
得られる演算結果データにより更新し、上記排他的論理
和演算ゲートの出力が第2の値のときに、上記第2のレ
ジスタに保持された剰余データをそのデータを1ビット
シフトしたデータに更新する。
【0014】より具体的には、汎用レジスタより長い生
成多項式の係数データを使用して巡回符号を生成するプ
ロセッサの場合には、上記第2、第3のレジスタは汎用
レジスタより長いレジスタであり、上記演算回路もプロ
セッサ内部の汎用の演算回路とは別に設けられる。これ
により、このような長い生成多項式の係数データを使用
したときでも、巡回符号を高速に、典型的には1マシン
サイクルで算出できる。
【0015】また、汎用レジスタの長さ以下の生成多項
式の係数データを使用して巡回符号を生成するプロセッ
サにおいては、上記第1から第3のレジスタは汎用レジ
スタから選ばれたものが使用される。その場合において
も、巡回符号を高速に、典型的には1マシンサイクルで
算出できる。
【0016】
【発明の実施の形態】
<従来の技術とその問題点>以下、本発明に係わるプロ
セッサを説明する前に、従来の技術とその問題点をさら
に詳しく説明する。以下では、係数算出処理をCRC演
算処理と呼ぶことがある。剰余多項式の係数を表すビッ
ト列を剰余多項式係数ビット列もしくは剰余多項式係数
データあるいは剰余データと呼ぶことがある。同様に、
生成多項式の係数を表すビット列を生成多項式係数ビッ
ト列あるいは生成多項式係数データあるいは生成多項式
データと呼ぶことがある。
【0017】図8は、係数算出処理の実行手順を模式的
に示す。図には使用する各多項式に代えてその係数のみ
を示す。なお、今の例では、生成多項式G(X)は3次
であるから、剰余多項式R(X)の次数は2である。一
般的に、剰余多項式の係数算出処理は次の3つの演算に
分解できる。
【0018】(演算1)剰余多項式データの最高次のビ
ットと情報ビット列のいずれかのビットとの排他的論理
和演算を行い、フラグビットを生成する。
【0019】(演算2)剰余多項式データの最高次ビッ
トをシフトアウトするように剰余多項式データを1ビッ
トだけ論理シフトする。
【0020】(演算3)フラグビットが1である場合
は、剰余多項式データと生成多項式データとの排他的論
理和演算を行う。フラグビットが0である場合は、この
演算を行わない。演算3の結果が新たな剰余多項式デー
タとなる。以上の処理を情報ビット列のビット数、今の
例では4に等しい回数だけ行う。
【0021】巡回符号化処理を、汎用的に使用されてい
るC言語で記述し、処理の内容を詳細に説明する。生成
多項式G(X)=X3+X+1の(7、4)巡回符号化
処理を行う場合の、巡回符号化処理をC言語で記述した
1例が、図9である。命令1101は変数を宣言する命
令であり、geneRegは生成多項式の係数を格納す
る変数であり、parityRegは剰余多項式の係数
を格納する変数であり、flagはフラグを表す変数で
あり、counterはカウンタを表す変数である。変
数geneRegおよび変数parityRegの各ビ
ットは、図11の(a)のように、多項式の各々の次数
の係数を格納している。変数geneRegには、LS
Bビットから順に生成多項式のX2↑、X、定数項の係
数が格納される。変数parityRegについても同
様である。なお、通常、情報ビット列が生成された後符
号化される前に、情報ビット列に対してビット分離処理
が施され、図11の(b)に示すように、メモリ上のI
nformation_arrayという配列の各要素
に1ビットずつに区分して、かつ、各要素のLSB位置
に格納される。このように1つの情報ビットを含むメモ
リ上のデータを分割情報データと呼ぶことがある。命令
1102はメモリに格納されている情報ビット列を指す
ポインタinfo_ptrを宣言している命令である。
【0022】命令1103は変数geneRegに生成
多項式の係数データを設定する命令であり、今の例で
は、ビット列110を設定する。命令1104は変数p
arityRegに0を格納し、この変数を初期化して
いる。命令1105はポインタinfo_ptrを上記
配列Information_arrayの先頭に設定
する命令である。命令1106は、繰り返し命令であ
り、今の例では命令1107から命令1110までの命
令が4回繰り返される。命令1107は条件判定に使用
するフラグを生成する命令である。フラグを生成する処
理は、情報ビットをメモリから読み出し、メモリから読
み出された情報ビットと変数parityRegのLS
Bビットとで排他的論理和演算を行う処理であり、フラ
グの値は0または1の2値である。命令1108は、変
数parityRegを1ビット右にシフトする命令で
ある。命令1109は条件判定を行う命令であり、fl
agの値が1の場合は命令1110を実行し、flag
の値が0の場合は命令1110を実行しない。命令11
10は変数geneRegと変数parityRegに
格納されているデータで排他的論理和演算を行い、演算
結果をparityRegに格納する命令である。
【0023】図9の巡回符号化処理を汎用マイクロプロ
セッサであるSH7600上で実行する場合に本発明者
が考えたプログラムの例を図10に示す。なお、このマ
イクロプロセッサ用の命令の詳細については、たとえ
ば、本出願人発行の”SH7600シリーズ プログラ
ミングマニュアル”参照。図10に記述されている、r
0、r1、r2、r3、r6は32ビットの汎用レジス
タであり、r0は情報ビット列を格納するレジスタであ
る。r1は剰余多項式の係数を格納するレジスタであ
り、図9のCプログラムのparityRegに対応す
る。r2は生成多項式の係数データを格納するレジスタ
であり、図9のCプログラムのgeneRegに対応す
る。レジスタr1、r2は、図11のように、それぞれ
の多項式の係数を格納する。r3はカウンタであり、図
9のCプログラムのcounterに対応する。r6は
情報ビットが格納されているメモリのアドレスを格納す
るレジスタある。命令1201はカウンタをクリアする
命令であり命令1106に対応する。命令1202は命
令1103に対応し、命令1203は命令1104に対
応し、命令1204は命令1105に対応し、命令12
05と命令1206と命令1207は命令1107に対
応し、命令1208は命令1108に対応し、命令12
09および命令1210は命令1109に対応し、命令
1211は命令1110に対応し、命令1212および
命令1213および命令1214は命令1106に対応
する。
【0024】”SH7600シリーズ プログラミング
マニュアル”に記載されているように、条件分岐命令1
210および1214の実行処理量は、分岐する場合は
3マシーンサイクル、分岐しない場合は1マシーンサイ
クルである。図10のプログラムに記載されている分岐
命令以外の各命令の実行処理量は1マシーンサイクルで
ある。図10に示すように、プログラムを初期化処理、
CRC算出処理、繰り返し処理の3つのパートに分割す
ると、初期化処理に5マシーンサイクル、1情報ビット
データあたりのCRC演算処理に8マシーンサイクル
(分岐しない場合は7マシーンサイクル)、1回あたり
の繰り返し処理に5マシーンサイクルを要する。従っ
て、(n、k)巡回符号化処理の処理量Mは、情報ビッ
トデータ数がkであるから、M=(8+5)k+5マシ
ーンサイクルと見積ることができる。k=4の場合に
は、この処理量Mは57マシーンサイクルに達する。
【0025】生成多項式の次数が汎用レジスタの長を越
える場合には、処理量がさらに増大する。例えば、マイ
クロコンピュータSH7600では汎用レジスタ長は3
2ビットであるが、生成多項式の次数が32より大きい
場合、例えば40ビットとすると、生成多項式および剰
余多項式の次数をそれぞれ格納するために二つの汎用レ
ジスタを必要になる。この結果、CRC演算処理の処理
量は、生成多項式の次数が汎用レジスタの長さより短い
場合に必要な8サイクルの約2倍程度かかる。したがっ
て、本発明の目的は、CRC演算処理を高速化できるプ
ロセッサを提供することである。本発明のより具体的な
目的は、汎用レジスタの長さよりも長い生成多項式係数
データを使用するCRC演算処理を高速化するプロセッ
サを提供することである。
【0026】以下、本発明に係るプロセッサを図面に示
したいくつかの実施の形態を参照してさらに詳しく説明
する。以下においては、同じ参照番号は同じものもしく
は類似のものを指す。なお、第2の実施の形態以降にお
いては、第1の実施の形態との相違点を主に記載するに
止める。
【0027】<発明の実施の形態1>図1において、プ
ロセッサ100は、本実施の形態に特徴的なCRC演算
専用回路112およびその回路112に関連して本実施
の形態で新たに使用される複数の命令の実行を制御可能
に構成された制御回路105およびその他の回路からな
る。すなわち、プロセッサ100には、処理を行うため
の命令や演算を行うために必要なデータが格納してある
メモリ101と、メモリ101から命令をフェッチする
アドレスを示すプログラムカウンタ107と、メモリ1
01から命令をフェッチする命令フェッチ回路108
と、フェッチされた命令をデコードするための命令デコ
ーダ回路102と、外部のクロック発生回路103から
供給される周波数を逓倍するためのタイミング生成回路
104と、デコードした命令コードとタイミング生成回
路から出力されるクロック信号からプロセッサ100を
動作させるための制御信号を出力する制御回路105
と、メモリ101からデータを読み出すために必要なア
ドレス情報を格納するアドレス・レジスタ109と、メ
モリ101からデータを読み出すメモリアクセス回路1
10と、算術演算や論理演算を行う汎用演算器106
と、メモリ101から読み出したデータもしくは汎用演
算器106の演算結果を格納するための複数の汎用レジ
スタ111等が設けられる。汎用レジスタ群111には
入力バッファ113およびセレクタ116、117が設
けられ、汎用演算器106には入力バッファ114A、
114Bが設けられている。なお、図1のプロセッサ1
00は、CRC演算専用回路112およびは制御回路1
05以外は、本出願人が開発したSH7600のアーキ
テクチャをベースにしており、命令長はすべて16ビッ
ト固定長であり、汎用レジスタはすべて32ビットであ
る。
【0028】CRC演算専用回路112は、本実施の形
態で新設された演算命令に従って、前述の剰余の係数を
算出する演算1から3(CRC演算処理)を1マシーン
サイクルで実行するために設けられた回路である。この
回路11は、分割情報データを格納するレジスタ12
1、剰余多項式の係数データを格納するレジスタ12
2、生成多項式の係数データを格納するレジスタ123
とを有する。生成多項式の次数は汎用レジスタ111の
長さより長くてもよいように、レジスタ121,12
2,123のレジスタ長は、汎用レジスタの長さの2倍
の64ビットとする。レジスタ121の上位32ビット
および下位32ビットを121H、121Lと記述す
る。レジスタ122、123についても同様である。メ
モリ101とプロセッサ100との間のデータ転送は3
2ビット単位で実行される。したがって、レジスタ12
1から123のいずれかの上位側ビット部分と下位側の
ビット部分に対するロードは異なる命令により実行され
る。レジスタ121Lには、上記係数算出演算が繰り返
されるごとに、本実施の形態で新たに使用されるロード
命令によりメモリ101から分割情報データがロードさ
れる。レジスタ123Lと123Hの各々には、同様に
新たなロード命令により上記係数算出演算の実行前に生
成多項式の係数データがメモリ101からロードされ
る。レジスタ122は、同様に新たに設けられたクリア
命令により上記係数算出演算の実行前にクリアされる。
【0029】120は、先に示した演算1を実行するた
めのEORゲートで、このゲート120は、レジスタ1
21の最下位ビット(LSB)とレジスタ122の最下
位ビットとに対して排他的論理和演算(以下、EOR演
算とも呼ぶ)を行い、前述のフラグjを生成する。上記
演算2を行うために、レジスタ122に保持されたデー
タは1ビットLSB側にシフトされてバスbに供給され
る。すなわち、このレジスタ122内のLSBのビット
以外のビット列の最上位ビット(MSB)の側にさらに
1ビットの0を付加したものをバスbに供給する。この
シフトしたデータを使用することにより、上記演算2が
実行されたことになる。
【0030】119は、上記演算3を実行するための、
64ビットの排他的論理和演算を実行可能なEOR演算
回路である。セレクタ124は、EORゲート120が
生成したフラグjが1のときには、レジスタ123内の
生成多項式データを選択し、バスa、バッファ127A
を介してEOR演算回路119に供給する。レジスタ1
22に保持された剰余データもバスb、バッファ127
Bを介してEOR演算回路119に供給される。こうし
てフラグjが1のときには、上記生成多項式データと上
記剰余データとのEOR演算により64ビットの新たな
剰余データが生成される。生成された演算結果データは
レジスタ122にセットされる。すなわち、その演算結
果データの上位側32ビットは、制御回路105の制御
の元にバスc、バッファ128H、セレクタ125を介
してレジスタ122Hにセットされる。これと並行し
て、生成された演算結果データの下位側32ビットは、
制御回路105の制御の元にバスc、バッファ128
L、セレクタ125を介してレジスタ122Lにセット
される。こうして、元の剰余データは新たな剰余データ
に更新される。一方、EORゲート120が生成したフ
ラグが0のときには、上記セレクタ124は、64ビッ
トの0からなるデータ0を選択して、バスb、バッファ
127Bを介してEOR演算回路119に供給する。こ
の結果、EOR演算回路119は、レジスタ122内の
1ビットシフトされた剰余データをそのまま出力し、元
のレジスタ122に書き込むことになる。こうして、元
の剰余データは、1ビット右シフトされたデータに更新
される。
【0031】図2に、図1のプロセッサを使用して生成
多項式G(X)=X40↑+X39↑+X+1、情報ビ
ット列”1110”の2元(44,4)巡回符号の符号
化処理を行うプログラムの1例を示す。命令801から
命令806までは巡回符号化処理の初期化処理であり、
命令807および命令808はCRC演算処理であり、
命令809および命令810は繰り返し処理である。命
令801、802はレジスタ121に格納されているデ
ータを0にクリアする新たに設けられた命令である。C
RCreg0、CRCreg1はこのレジスタ121、
122に割り当てられたレジスタ番号を表す。命令の実
行は一般に以下のようにしてなされる。まず、プログラ
ム・カウンタ107がアドレスをバスcに出力する。命
令フェッチ回路108は、バスcに出力されたアドレス
に格納されている命令をメモリ101からバスfを介し
てフェッチし、命令デコーダ回路102はフェッチされ
た命令をデコードする。制御回路102は、デコードさ
れた命令に関して、タイミング生成回路116から出力
されるクロック信号に同期しながらこの命令の実行を制
御するいろいろの信号を出力する。命令801の場合に
は、制御回路105は、レジスタ121にクリア信号を
出力する。クリア信号を受信したレジスタ121は各ビ
ットのデータを0にクリアし、命令801の実行が終了
する。命令802も全く同様に実行される。
【0032】命令803、804はレジスタ123に生
成多項式の係数データをメモリ101からロードする命
令である。命令803,804が指定するCRCreg
2L、CRCreg2Hはそれぞれレジスタ123の下
位側部分123L、上位側部分123Hに割り当てられ
たレジスタ番号を表す。命令803、804が指定する
変数GENEL、GENEHが示すアドレス位置に、命
令列811により生成多項式の下位側の32ビットおよ
び上位側の32ビットが記憶されている。今の例では、
これらのデータは、それぞれH’00000001、
H’000000C0である。ここでH’はこれらのデ
ータが16新表示のデータであることを示す。すなわ
ち、メモリ101には図11(a)に例示したように、
生成多項式の係数データ110が、LSB側に最も大き
な次数の係数が位置するように記憶されている。
【0033】命令803は具体的には次のようにして実
行される。命令803が、命令デコード回路102にて
デコードされると、汎用演算器106はデータを格納し
てあるメモリのアドレスを計算し、演算結果のアドレス
はアドレスレジスタ109に格納される。次に、アドレ
ス・レジスタ109はバスcにアドレスを出力し、メモ
リアクセス回路110はアドレス・レジスタ109が指
すメモリ101からデータをバッファ128Lに出力す
る。次に、制御回路105から制御信号iがセレクタ1
25に出力され、制御信号iを受けたセレクタ125は
バッファ128とレジスタ123Lを接続し、メモリか
ら出力されたデータH’00000001はレジスタ1
23Lに格納される。命令804も全く同様に実行され
る。
【0034】命令805は汎用レジスタr0に符号化す
べき情報ビット列の長さ4を転送する命令であり、命令
806は分割情報データが格納されているメモリ101
内の配列Information_arrayの先頭ア
ドレスを汎用レジスタr6に転送する命令である。メモ
リ101には、図11(b)に示したのと同様に、この
配列Information_arrayは、4つの要
素からなり、各要素は、情報ビット列の各ビットを最下
位ビット位置に保持している。命令805、806はS
H7600の命令であり、この2命令の詳細な動作は”
SH7600ハードウェアマニュアル”を参照。
【0035】次に、命令807は、汎用レジスタr6に
格納してあるメモリアドレスから、分割情報データをレ
ジスタ122Lに転送し、その後このアドレスをインク
リメントするための本実施の形態で新たに設けられた命
令である。命令807がデコードされると、デコードさ
れた命令からソース・オペランドの汎用レジスタを確定
し、制御回路105はセレクタ117に制御信号gを出
力する。制御信号gを受けたセレクタ117は汎用レジ
スタr6をバスmに接続し、汎用レジスタr6に格納さ
れているアドレスがバッファ115を介してバス118
に出力される。次に、メモリアクセス回路110は、バ
ス118に出力されたアドレスに格納されている配列I
nformation_arrayの最初の要素データ
をメモリ101から読み出し、バスdを介してデータを
バッファ128Lに送る。さらに制御回路105は制御
信号iをセレクタ125に送る。制御信号iを受けたセ
レクタ125は、バッファ128Lとレジスタ121L
を接続し、メモリ101から読み出された配列Info
rmation_arrayの最初の要素データを、レ
ジスタ121Lに書き込む。一方、汎用演算器106
は、汎用レジスタr6の値を1インクリメントする。
【0036】命令808は、レジスタ121、122、
123に格納されたデータを使用して前述の演算1から
3を行う命令である。EORゲート120は、レジスタ
121、122の最下位ビットに対して排他的論理和演
算を行い、フラグjを生成する。こうして、演算1が終
了する。レジスタ122に格納されている剰余データを
1ビットシフトしたデータがバスbに出力される。すな
わち、このデータの最下位ビットが捨てられ、その他の
ビット列の最上位側にビット0が付加されたデータがバ
スbに供給される。生成されたフラグjが1の場合は、
セレクタ124はレジスタ123内の生成多項式データ
を選択してバスaに出力する。制御回路105は、命令
808がデコードされると、これらの2つのデータをそ
れぞれバッファ127B、127Aにセットする。ソー
ス・オぺランドを得たEOR演算回路119は、64ビ
ットの排他的論理和演算を行い、64ビットの新たな剰
余データをバッファ128H、128Lに二分して出力
する。次に、制御回路102はセレクタ125に制御信
号iを送る。制御信号iを受けたセレクタ125はバッ
ファ128H、128L内のデータをレジスタ122
H、122Lに書き込む。こうして新たな剰余データは
レジスタ122に格納される。フラグが0のときにはセ
レクタ124は、64ビットの0からなるデータ0を選
択する点で以上の動作と異なる。このときには、EOR
演算回路119は、そこに入力された1ビット右シフト
された剰余データをそのまま出力することになる。した
がって、レジスタ112にこのシフトされたデータが格
納されることになる。こうして、先の演算3が終了す
る。このように、命令808により上記の演算1から3
が実行され、本実施の形態ではこれらの演算が1マシー
ンサイクルで実行される。
【0037】命令809は、汎用レジスタr0内の情報
ビット列の長さを汎用演算器106により1デクリメン
トし、その結果を0と比較し、結果が0のときに汎用演
算器106の分岐条件フラグを1にセットし、結果が0
以外のときには分岐条件フラグを0にセットするという
命令である。命令810は条件付分岐命令であり、汎用
演算器106の分岐条件フラグが0のときに分岐すると
いう命令である。なお、命令809、810の動作の詳
細は、例えば、”SH7600ハードウェアマニュア
ル”等を参照のこと。図2のプログラムが示すように、
巡回符号化の処理は情報ビット列の転送命令(命令80
7)と剰余ビットの算出命令(命令808)の繰り返し
となる。なお、生成多項式G(X)=X40↑+X39
↑+X+1、情報ビット列”1110”の2元(44,
4)巡回符号の符号化処理を行うと、剰余多項式R
(X)は、
【0038】
【数4】 R(X)=X39↑+X4↑+X3↑+X2↑+1 ・・・(4) となる。したがって、図2のプログラム実行後、レジス
タ121には、”0…(22)…0101110…(3
2)…01”という64ビットの剰余データが格納され
る。なお、()内の数字は記載を省略している0の個数
である。
【0039】図2のプログラムには記載されていない
が、上記の巡回符号化処理を実行して得られた演算結
果、すなわち、レジスタ122に格納される剰余データ
をメモリ101に格納する命令の動作を説明する。な
お、データストアの命令は上記で説明したデータロード
命令と同様に32ビット単位で行われる。データストア
命令が命令デコーダ回路102でデコードされると同時
に、まず、ソース・オぺランドのレジスタが確定され
る。制御回路105は、セレクタ124に制御信号kを
送り、制御信号kを受けたセレクタ126は、該当する
レジスタをバスlに接続する。すると、レジスタに格納
されているデータはバスlに出力され、メモリ101に
格納される。
【0040】図3は、図2のプログラム実行時におけ
る、レジスタ121、122、フラグjおよびバスaの
状態を示している。命令801から命令806までの演
算が実行され、レジスタ121,122の状態は状態9
00になり、初期化処理が終了する。次に、命令807
がメモリ102からフェッチされ、レジスタ121の値
は”0…(61)…01”となる(状態901)。次に
命令808がメモリ102からフェッチされ、制御回路
102からレジスタレジスタ121、レジスタ122に
制御信号が出力されると、レジスタの値は1ビット右に
シフトされ、レジスタ121およびレジスタ122の値
がそれぞれ”0…(62)…0”および”0…(62)
…0”となり、フラグjの出力が1となる(状態90
2)。すると、バスaに出力されるデータは”0…(2
2)…0110…(35)…01”となる。次に、レジ
スタ122に格納されているデータ”0…(62)…
0”とレジスタ123に格納されているデータをソース
・オペランドとして、EOR回路117において、排他
的論理和演算が行われる(状態903)。
【0041】次に、命令809がメモリ102からフェ
ッチされ、汎用レジスタr0の値は1デクリメントされ
て3となり、汎用演算器103の条件フラグは0とな
る。次に、命令810がメモリ102からフェッチさ
れ、汎用レジスタの条件フラグが0であることから、分
岐命令が実行されて、再び命令807が実行される。次
に、命令807がメモリ102からフェッチされ、レジ
スタ121の値は”0…(61)…01”となる(状態
904)。次に、命令808がメモリ102からフェッ
チされ、制御回路102からレジスタ121、レジスタ
122に制御信号が出力されると、レジスタの値は1ビ
ット右にシフトされレジスタ121およびレジスタ12
2の値がそれぞれ”0…(62)…0”および”0…
(23)…0110…(35)…0”となり、フラグj
の出力が0となる状態905)。すると、バスaに出力
されるデータは”0…(62)…0”となる。次に、レ
ジスタ122に格納されているデータ”0…(22)…
0110…(35)…01”と”0…(62)…0”デ
ータをソース・オペランドとして、EOR回路117に
おいて排他的論理和演算が行われ、演算結果は再びレジ
スタ122に格納される(状態906)。次に、命令8
09がメモリ102からフェッチされ、汎用レジスタr
0の値は1デクリメントされて2となり、汎用演算器1
03の条件フラグは0となる。
【0042】次に、命令810がメモリ102からフェ
ッチされ、汎用レジスタの条件フラグが0であることか
ら、分岐命令が実行されて、再び命令807が実行され
る。次に、命令807がメモリ102からフェッチさ
れ、レジスタ121の値は”0…(61)…01”とな
る(状態907)。次に、命令803がメモリ102か
らフェッチされ、制御回路102からレジスタレジスタ
121、レジスタ122に制御信号が出力されるとレジ
スタの値は1ビット右にシフトされ、レジスタ121お
よび、レジスタ122の値がそれぞれ”0…(62)…
0”および”0…(24)…0110…(34)…0”
となり、フラグjの出力が1となる(状態908)。す
ると、バスaに出力されるデータは”0…(22)…0
110…(35)…01”となる。次に、レジスタ12
3に格納されているデータ、”0…(22)…0110
…(35)…01”と、レジスタ122に格納されてい
るデータ”0…(24)…0110…(34)…0”を
ソース・オペランドとして、EOR回路117において
排他的論理和演算が行われ、演算結果は再びレジスタ1
22に格納される(状態909)。次に、命令809が
メモリ102からフェッチされ、汎用レジスタr0の値
は1デクリメントされて1となり、汎用演算器103の
条件フラグは0となる。次に、命令810がメモリ10
2からフェッチされ、汎用レジスタの条件フラグが0で
あることから、分岐命令が実行され、再び命令802が
実行される。
【0043】次に、命令807がメモリ102からフェ
ッチされ、レジスタ121の値は”0…(61)…0
1”となる(状態910)。次に、命令808がメモリ
102からフェッチされ、制御回路102からレジスタ
レジスタ121、レジスタ122に制御信号が出力され
るとレジスタの値は1ビット右にシフトされ、レジスタ
121およびレジスタ122の値がそれぞれ”0…(6
2)…0”および”0…(23)…011110…(3
3)…0”となり、フラグjの出力が1となる(状態9
11)。すると、バスaに出力されるデータは”0…
(22)…0110…(35)…01”となる。次に、
レジスタ123に格納されているデータ”0…(22)
…0110…(35)…01”と”0…(23)…01
1110…(33)…0”をソース・オペランドとし
て、EOR回路117において、排他的論理和演算が行
われ、演算結果”0…(22)…0101110…(3
3)…0”は再びレジスタ122に格納される(状態9
06)。次に、命令809がメモリ102からフェッチ
され、汎用レジスタr0の値は1デクリメントされて0
となり、汎用演算器103の条件フラグは1となる。次
に、命令810がメモリ102からフェッチされ、汎用
レジスタの条件フラグが1であることから、分岐命令が
実行されず、処理が終了する。そして、レジスタ122
に格納されているデータ”0…(22)…010111
0…(32)…01”が剰余ビットの多項式の係数であ
り、前述の通りのR(X)が得られる。
【0044】本実施の形態では情報ビットのデータ転送
命令とCRC演算命令の2命令で実行可能となり、どち
らの命令も1命令あたり1マシーンサイクルで実行可能
であるので、本実施の形態における1情報ビットデータ
あたりのCRC演算処理は2マシーンサイクルである。
とくに、生成多項式の次数が汎用レジスタ長(32ビッ
ト)を越える場合、従来、CRC演算処理を実行するに
は1情報ビットデータあたり約16マシーンサイクルか
かっていた。従って、従来に比べ処理量が約1/8にな
る。
【0045】この巡回符号化処理は音声、データ等の伝
送による劣化を防ぐために施される処理であり、送信す
るデータによって異なる生成多項式を用いて巡回符号化
が行われる場合が多い。本実施の形態では、CRC演算
専用回路が生成多項式の係数を格納するレジスタを保持
しており、任意の生成多項式に対して巡回符号化処理が
高速に実行される。また、本実施の形態に記載されてい
るCRC演算回路は主に3つのレジスタおよびEOR演
算回路から構成されており回路規模も小さい。 <発明の実施の形態1の変形例>本実施の形態に対して
いろいろの変形例が実現可能である。たとえば、(1)
実施の形態1では、分割情報データおよび生成多項式係
数データは、最下位ビット部分に整列されたデータであ
った。しかし、実施の形態1の技術は、分割情報データ
および生成多項式係数データが最上位ビットに整列され
ている場合にも適用できるのは言うまでもない。この場
合には、EORゲート120には、レジスタ121と1
22の最上位ビットが供給される。さらに、剰余データ
をバスbに供給するときには、この剰余データを1ビッ
ト最上位側に1ビットシフトするように、このレジスタ
122内のデータをバスbに供給する。以上のことは以
下に述べる他の変形例あるいは他の実施の形態でも同様
である。
【0046】(2)実施の形態1では、レジスタ122
とバスaとの結線を工夫してレジスタ122内の剰余デ
ータを1ビットシフトしてバスaに供給した。それに代
えて、EOR演算回路119での演算時に剰余データを
シフトすることも可能である。すなわち、図4におい
て、EOR演算回路119の一方の入力は、バッファ1
27Bを介してレジスタ122の出力に接続され、もう
一方の入力はバッファ127Aに接続されている。レジ
スタ122の各ビットをLSBビットからR[0],R
[1]......,R[63]とすると、レジスタ1
22のビットR[0]は捨てられ、他のビットR
[1]......,R[63]とデータ0がEOR演
算回路119の各EORゲートに入力される。こうし
て、EOR演算回路119に1ビット右シフトされた剰
余データが供給される。各EORゲートには、バッファ
127Aから供給されるデータの対応するビット#0、
#1、、、#61,#62または#63が入力される。
EOR演算回路119による演算結果データは、レジス
タ122のR[0],R[1]......,R[6
3]ビットに格納される。
【0047】(3)図3のEOR演算回路119内の6
4個のEORゲートの内、バッファ127Aから供給さ
れるデータの内のビット#0および上記データ0が入力
されるEORゲートは省略し、このビット#0をそのま
ま出力するように、EORゲート119を構成すること
も可能である。このように変形されたEOR演算回路も
本発明ではEOR演算回路とみなす。
【0048】(4)実施の形態1では、レジスタ122
からバスbに剰余データを供給するときに、レジスタ1
22とバスaとの結線によりレジスタ122内の剰余デ
ータを1ビット右シフトしたが、レジスタ122をシフ
トレジスタにて構成し、上記フラグが生成された後に、
制御回路105からシフトクロックを供給してこのシフ
トレジスタにより剰余データを1ビットシフトさせても
よい。このためのシフトクロックは制御回路105から
供給させる。このときには、EORゲート120で生成
されるフラグが0のときには、EOR演算回路119か
ら出力される剰余データによりレジスタ112内の剰余
データを上書きする必要はない。
【0049】(5)実施の形態1では、レジスタ12
1,122,123はいずれも汎用レジスタ群111よ
りも長いレジスタとした。しかし、分割情報データの
内、有効なデータは1ビットであるので、レジスタ12
1は、最小限1ビットであればよい。
【0050】(6)したがって、このレジスタ121の
みを、汎用レジスタ群111の一つと兼用させることも
可能である。
【0051】(7)実施の形態1では、情報ビット列が
分割されてメモリ101内に保持されていたが、この情
報ビット列がメモリ101内にそのまま保持されている
場合には、レジスタ121をシフトレジスタにて構成
し、そのシフトレジスタに命令807によりその情報ビ
ット列を一度読み込むだけでよい。命令808によりC
RC演算を実行するごとに、制御回路105からシフト
クロックを供給してこのシフトレジスタを1ビット右に
移動すればよい。
【0052】<発明の実施の形態2>本実施の形態のプ
ロセッサは、生成多項式の次数が汎用レジスタ長よりも
小さい場合の巡回符号化処理を比較的簡単な回路で高速
化するもので、実施の形態1のようなCRC演算専用回
路をしないで、2つの汎用レジスタのLSBビットを入
力として条件生成を行うEORゲートを有し、CRC演
算処理には汎用の演算器を使用する。すなわち、図5に
おいて、汎用レジスタ群111の内の特定の汎用レジス
タ111A、111BのLSBビットを入力として排他
的論理和演算を行うEORゲート120と、EORゲー
ト120の出力を格納するステータスレジスタ417
が、従来のマイクロコンピュータSH7600に付加さ
れている。汎用の演算器106は、EOR演算その他の
演算を実行できる演算器であるが、従来の汎用演算器と
異なり、後に説明するCRC演算用の特定の命令606
が実行され、制御回路105からCRC演算の実行を指
示されたときには、ステータスレジスタ417に保持さ
れたフラグが1の場合には、バスmとlからその演算器
に供給される二つのデータに対してEOR演算を実行
し、ステータスレジスタ417に保持されたフラグが0
の場合には、バスmから供給されるデータをそのまま出
力するように構成されている。より具体的には、上記命
令が実行されたときには、演算器106は、ステータス
レジスタ417に保持されたフラグが1の場合には、汎
用レジスタ111Aからバスmに供給される1ビットシ
フトされた剰余データと汎用レジスタ111Dからバス
lに供給される生成多項式の係数データに対してEOR
演算を実行し、ステータスレジスタ417に保持された
フラグが0の場合には、汎用レジスタ111Aからバス
mに供給される1ビットシフトされた剰余データをその
まま出力する。
【0053】図6に、図5のプロセッサを使用して、生
成多項式G(X)=X3+X+1、4ビットの情報ビッ
ト列の2元(7,4)巡回符号の符号化処理を行うプロ
グラムの1例を示す。図6に記述されている命令の中
で、命令606以外の命令はSH7600の命令であ
る。たとえば、”SH7600シリーズ プログラミン
グマニュアル”を参照。図6中のr0、r1、r2、r
3、r6は特定の汎用レジスタを指定する。汎用レジス
タr0はカウンタとして使用され、図5では、たとえ
ば、汎用レジスタ111Dである。汎用レジスタr1は
剰余多項式の係数を格納するレジスタであり、図5では
特定の汎用レジスタ111Aが使用される。汎用レジス
タr2は、生成多項式の係数を格納するレジスタであ
り、図5では、たとえば、汎用レジスタ111Cが使用
される。汎用レジスタr3は、情報ビット列を格納する
レジスタであり、図5では特定の汎用レジスタ111B
が使用される。汎用レジスタr6は情報ビットを格納し
ているメモリのアドレスを格納するレジスタであり、図
5ではたとえば汎用レジスタ111Eが使用される。な
お、汎用レジスタ群111には、実際には16個の汎用
レジスタがあるが、図5には簡単化のために5つの汎用
レジスタのみしか図示していない。プロセッサSH76
00に含まれた各汎用レジスタは、制御回路105から
のシフトクロックにより1ビットの右シフトを実行可能
になっていて、本実施の形態でもその機能を使用する。
【0054】命令601は、汎用レジスタ111Dにカ
ウンタの初期値として0をセットする命令である。命令
602は、汎用レジスタ111Cに生成多項式の係数デ
ータ110をセットする命令である。命令603は、汎
用レジスタ111Aに剰余データの初期値として0をセ
ットする命令である。命令604は、先の命令806と
同じく、汎用レジスタ111Eに配列Informat
ion_arrayの最初の要素のアドレスをセットす
る命令である。
【0055】命令605は、先の命令807と同様に、
汎用レジスタ111E内アドレスを使用してこの配列の
先頭の要素をメモリ101から読み出し、汎用レジスタ
111Bにセットするとともに、この汎用レジスタ11
1E内のアドレスを1カウントアップする命令である。
命令606は、汎用レジスタ111A、111B、11
1Cに格納された剰余データ、情報ビット列および生成
多項式データを使用してCRC演算処理を行うための命
令で、本実施の形態のために新設された命令である。E
ORゲート120は、汎用レジスタ111A、111B
のLSBビットに対して排他的論理和演算を行い、フラ
グjを生成する。こうして、先の演算1が実行される。
命令606がデコードされると、制御回路105は、フ
ラグjをステータスレジスタ417に格納する。汎用レ
ジスタ111A、111Bは制御回路105の制御の元
で各々の汎用レジスタのデータを1ビット右にシフトす
る。汎用レジスタ111Aがシフトされたことにより先
の演算2が実行されたことになる。汎用レジスタ111
Aに格納されている1ビットシフトされた剰余データが
バスmに出力され、汎用レジスタ111Cのデータがバ
スlに出力され、バッファ114B、114Aは制御回
路105の制御下でこれらの2つのデータをソース・オ
ペランドとして保持する。ステータスレジスタが1の場
合は、汎用演算器106は、バッファ114A、114
Bの2データをソース・オぺランドとして排他的論理和
演算を行い、新たな剰余を生成する。演算結果は汎用レ
ジスタ111Aに格納される。こうして、レジスタ11
1Aが新たな剰余データにより更新される。ステータス
レジスタが0の場合は、汎用演算器106は、汎用レジ
スタ111Aのデータをそのまま出力し、セレクタ11
6により再び汎用レジスタ111Aに格納される。こう
して汎用レジスタ111Aはシフトされた剰余データに
より更新される。こうして先の演算3が実行される。
【0056】図7は、図6のプログラム実行時におけ
る、汎用レジスタ111A、111Cおよび、フラグj
の状態を示している。なお、生成多項式G(X)=X3
+X+1、情報ビット列”1100”の2元(7,4)
巡回符号の符号化処理を行うと、剰余多項式R(X)
は、Xとなる。したがって、図6のプログラム実行後、
汎用レジスタ111Aには、”010”が演算結果とし
て格納される。
【0057】まず、命令601から命令604までの初
期化処理が実行され、汎用レジスタ111A、111
C、111Bそれぞれのレジスタの状態は状態1400
になる。次に命令605がデコードされ、メモリ101
から最初の分割情報データが読み出され、汎用レジスタ
111Aの値が”001”となる(状態1401)。次
に命令606がデコードされ、制御回路105から汎用
レジスタ111A、111Cに制御信号が出力される
と、レジスタの値は1ビット右にシフトされ、汎用レジ
スタ111A、111Cの値がそれぞれ”000”およ
び”000”となり、フラグjの出力が1となる(状態
1402)。次に汎用レジスタ111Aと111Cに格
納されている剰余データおよび分割情報データが汎用演
算器106に出力される。汎用演算器106はステータ
スレジスタ417の値が1であるので、排他的論理和演
算を行い、演算結果を再び汎用レジスタ111Aに格納
する(状態1403)。次に、命令607、命令60
8、命令609の繰り返し処理が実行され、汎用レジス
タ111Dの値が1であることから、再び命令605が
実行される。
【0058】次に命令605がデコードされ、メモリ1
01から次の分割情報データが読み出され、汎用レジス
タ111Aの値が”001”となる(状態1404)。
次に命令606がデコードされ、制御回路105から汎
用レジスタ111A、111Cに制御信号が出力される
と、これらの汎用レジスタの値は1ビット右にシフトさ
れ、これらの汎用レジスタ111A、111Cの値がそ
れぞれ”000”および”011”となり、フラグjの
出力が1となり、ステータスレジスタに格納される(状
態1402)。次に、汎用レジスタ111Aと111C
に格納されているデータが汎用演算器106に出力され
る。汎用演算器106はステータスレジスタ417の値
が1であるので、排他的論理和演算を行い、演算結果を
再び汎用レジスタ111Cに格納する(状態110
6)。次に、命令607、命令608、命令609の繰
り返し処理が実行され、汎用レジスタ111Dの値が2
であることから、再び命令605が実行される。
【0059】次に命令605がデコードされ、メモリ1
01から第3の分割情報データが読み出され、汎用レジ
スタ111Aの値が”000”となる(状態140
7)。次に命令606がデコードされ、制御回路105
から汎用レジスタ111A、111Cに制御信号が出力
されると、レジスタの値は1ビット右にシフトされ、汎
用レジスタ111A、111Cの値がそれぞれ”00
0”および”010”となり、フラグjの出力が1とな
り、ステータスレジスタ417に格納される(状態14
08)。次に、汎用レジスタ111Aと111Cに格納
されているデータが汎用演算器106に出力される。汎
用演算器106はステータスレジスタ417の値が1で
あるので、排他的論理和演算を行い、演算結果を再びレ
ジスタ111Aに格納する(状態1409)。次に、命
令607、命令608、命令609の繰り返し処理が実
行され、汎用レジスタ111Dの値が3であることか
ら、再び命令605が実行される。
【0060】次に命令605がデコードされ、メモリか
ら第4の分割情報データが読み出され、汎用レジスタ1
11Aの値が”000”となる(状態1410)。次に
命令606がデコードされ、制御回路105から汎用レ
ジスタ111A、111Cに制御信号が出力されると、
これらのレジスタの値は1ビット右にシフトされ、それ
ぞれに保持されたデータは”000”および”010”
となり、フラグjの出力が0となり、ステータスレジス
タ417に格納される(状態1411)。次に、レジス
タr1とレジスタr2に格納されているデータが汎用演
算器106に出力される。汎用演算器106はステータ
スレジスタ417の値が0であるので、演算を行わず
に、演算結果を再びレジスタ111Aに格納する(状態
1412)。次に、命令607、命令608、命令60
9の繰り返し処理が実行され、汎用レジスタ111Cの
値が4であることから、処理が終了し、汎用レジスタ1
11Aには、演算結果として”010”が得られた。
【0061】以上述べたことから明らかなように、本実
施の形態によれば図10に示した命令1205から12
11までの7命令で8ないし7マシーンサイクル要した
処理を図6に示した二つの命令605および606によ
り2マシーンサイクルで実行可能である。さらに、本実
施の形態のプロセッサは、基本的に公知のマイクロコン
ピュータにEORゲート417、ステータスレジスタ4
17という簡単な回路を付加しただけであるから、回路
規模をそれほど大きくしないで実現可能である。
【0062】<発明の実施の形態2の変形例>本実施の
形態2に対してもいろいろの変形例が実現可能である。
たとえば、(1)ステータスフラグが0の場合にも、演
算器106によるダミーの演算結果によりレジスタ11
1Aを書き換えたが、レジスタ111Aはシフトレジス
タであるから、この書き換え自体を省略できる。
【0063】(2)レジスタ111A、111B等をシ
フトレジスタでないレジスタにより構成したときには、
これらのレジスタに保持されたデータに対して演算2で
必要となるシフト動作は、実施の形態1と同様に行えば
よい。
【0064】(3)実施の形態1の変形例で記載した変
形例(1)から(3)、(5)、(6)はこの実施の形
態2に対しても適用可能である。
【0065】本発明は、以上に述べた発明の実施の形態
1および2に限定されるのではなく、すでに述べた発明
の実施の形態1、2の変形例およびそれらの変形例の組
み合わせあるいはその他の変形例によっても実現可能で
ある。
【0066】
【発明の効果】本発明によれば、巡回符号化処理に必要
な剰余の算出を高速に実行できるプロセッサが得られ
る。
【図面の簡単な説明】
【図1】本発明によるプロセッサの概略回路図。
【図2】図1の装置に使用するプログラムの一部に使用
する命令列を示す図。
【図3】図2のプログラムを実行した場合のレジスタ等
のデータの状態を示す図。
【図4】図1の装置に使用可能な他のEOR演算回路の
回路図。
【図5】本発明による他のプロセッサの概略回路図。
【図6】図5の装置に使用するプログラムの一部に使用
する命令列を示す図。
【図7】図6のプログラムを実行した場合のレジスタ等
のデータの状態を示す図。
【図8】2元(7、4)巡回符号化処理における剰余デ
ータの係数算出処理の概略説明図。
【図9】2元(7、4)巡回符号化処理をC言語で記述
したプログラムの例を示す図。
【図10】従来のマイクロコンピュータに使用するプロ
グラムに含まれた命令列を示す図。
【図11】(a)は、メモリ上に保持された剰余多項式
の係数データおよび生成多項式の係数データを示す図、
(b)は、メモリ上に保持された情報ビット列を示す
図。

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】少なくとも一つのビットのデータを保持す
    るための第1のレジスタと、 複数のビットのデータを保持するための第2、第3のレ
    ジスタと、 第1のレジスタに保持された上記一つのビットと、第2
    のレジスタに保持されたデータの内の上記一つのビット
    と比較されるべき一つのビットが入力される排他的論理
    和演算ゲートと、 排他的論理和演算を実行可能な演算回路と、 上記排他的論理和演算ゲートの出力が第1の値のとき
    に、上記第2のレジスタに保持されたデータを1ビット
    シフトしたデータと上記第3のレジスタに保持されたデ
    ータとを上記演算回路に供給し、上記二つのデータに対
    して上記演算回路より得られる演算結果データにより上
    記第2のレジスタ内のデータを更新し、上記排他的論理
    和演算ゲートの出力が第2の値のときに、上記第2のレ
    ジスタに保持されたデータをそのデータを1ビットシフ
    トしたデータに更新する更新回路とを有するプロセッ
    サ。
  2. 【請求項2】上記第2のレジスタに保持されたデータの
    内の上記一つのビットは、上記第2のレジスタの最下位
    ビットと最上位ビットの内のいずれか一方である請求項
    1記載のプロセッサ。
  3. 【請求項3】命令で指定可能な複数の汎用レジスタをさ
    らに有し、 上記第2から第3のレジスタは、上記複数の汎用レジス
    タの長さより長いレジスタからなる請求項1記載のプロ
    セッサ。
  4. 【請求項4】上記複数の汎用レジスタの内のいずれか一
    つに保持されたデータに対して命令が指定する演算を実
    行し、演算結果データを上記複数の汎用レジスタの一つ
    に供給する、複数の演算を実行可能な算術論理演算回路
    をさらに有し、 上記排他的論理和演算を実行可能な演算回路は、上記第
    2、第3のレジスタの長さのデータに対する排他的論理
    和演算を実行可能な、上記算術論理演算回路とは別に設
    けられた演算回路である請求項3記載のプロセッサ。
  5. 【請求項5】上記演算回路および上記更新回路は、上記
    演算回路による演算を要求する一つの演算命令に応答し
    て動作する請求項4記載のプロセッサ。
  6. 【請求項6】上記排他的論理和演算ゲートによる演算か
    ら上記更新回路による上記第2のレジスタの更新までの
    一連の動作は一マシンサイクル内で動作する請求項5記
    載のプロセッサ。
  7. 【請求項7】上記排他的論理和演算ゲートにそれぞれ供
    給されるべき複数のビットの一つをそれぞれ含む複数の
    分割データを保持する主記憶と、 上記複数の汎用レジスタの内の一つを指定する特定のロ
    ード命令に応答して、上記一つの汎用レジスタに保持さ
    れた、上記主記憶内のアドレスを使用して上記複数の分
    割データの内の一つに含まれた上記排他的論理和演算ゲ
    ートに供給されるべき1ビットを上記第1のレジスタに
    ロードする回路と、 上記ロード命令に応答して上記一つの汎用レジスタに保
    持された上記アドレスを更新する回路とをさらに有する
    請求項5記載のプロセッサ。
  8. 【請求項8】命令で指定可能な複数の汎用レジスタと、 上記複数の汎用レジスタの内のいずれか一つに保持され
    たデータに対して命令が指定する演算を実行し、演算結
    果データを上記複数の汎用レジスタの一つに供給する、
    複数の演算を実行可能な算術論理演算回路とをさらに有
    し、 上記第1から第3のレジスタは、それぞれ上記複数の汎
    用レジスタの一つであり、 上記排他的論理和演算を実行可能な演算回路は、上記算
    術論理演算回路である請求項1記載のプロセッサ。
  9. 【請求項9】上記演算回路および上記更新回路は、上記
    第2のレジスタに保持されたデータを1ビットシフトし
    たデータと上記第3のレジスタに保持されたデータとに
    対する排他的論理和演算を要求する一つの演算命令に応
    答して動作する請求項8記載のプロセッサ。
  10. 【請求項10】上記排他的論理和演算ゲートによる演算
    から上記更新回路による上記第2のレジスタの更新まで
    の一連の動作は一マシンサイクル内で動作する請求項9
    記載のプロセッサ。
  11. 【請求項11】上記排他的論理和演算ゲートにそれぞれ
    供給されるべき複数のビットの一つをそれぞれ含む複数
    の分割データを保持する主記憶と、 上記複数の汎用レジスタの内の一つと上記第1のレジス
    タを指定し、上記一つの汎用レジスタの更新を要求する
    特定のロード命令に応答して、上記一つの汎用レジスタ
    に保持された、上記主記憶内のアドレスを使用して上記
    複数の分割データの内の一つに含まれた上記排他的論理
    和演算ゲートに供給されるべき1ビットを上記第1のレ
    ジスタにロードする回路をさらに有し、 上記算術論理演算回路、上記ロード命令に応答して上記
    一つの汎用レジスタに保持された上記アドレスを更新す
    る請求項9記載のプロセッサ。
  12. 【請求項12】上記更新回路は、上記排他的論理和演算
    ゲートの出力が上記第1の値のときに、上記第2のレジ
    スタ内のデータの内の最下位ビットおよび最上位ビット
    の一方を除いた他の複数のビットの最上位側および最下
    位側の内の他方にデータ0を付加したデータを上記演算
    回路に供給する回路を有する請求項1記載のプロセッ
    サ。
  13. 【請求項13】上記第2のレジスタはシフトレジスタか
    らなり、 上記更新回路は、 上記第2のレジスタにシフト信号を供給する回路と、 上記排他的論理和演算ゲートの出力が上記第1の値のと
    きに、上記シフト信号により上記第2のレジスタ内のデ
    ータがシフトされた後の、上記第2のレジスタに保持さ
    れたデータを上記演算回路に供給する回路とを有する請
    求項1記載のプロセッサ。
  14. 【請求項14】上記更新回路は、上記排他的論理和演算
    ゲートの出力が上記第2の値のときに、上記第2のレジ
    スタに保持されたデータを1ビットシフトしたデータお
    よびデータ0を上記演算回路に供給し、上記第2のレジ
    スタに保持されたデータを、上記二つのデータに対して
    上記演算回路から供給される演算結果データにより更新
    する回路を有する請求項1記載のプロセッサ。プロセッ
    サ。
  15. 【請求項15】上記更新回路は、上記排他的論理和演算
    ゲートの出力が上記第2の値のときに、上記第2のレジ
    スタ内のデータの内の最下位ビットおよび最上位ビット
    の一方を除いた他の複数のビットの最上位側および最下
    位側の内の他方にデータ0を付加したデータを上記演算
    回路に供給する回路を有する請求項14記載のプロセッ
    サ。
  16. 【請求項16】上記第2のレジスタはシフトレジスタか
    らなり、 上記更新する回路は、 上記第2のレジスタにシフト信号を供給する回路と、 上記排他的論理和演算ゲートの出力が上記第2の値のと
    きに、上記シフト信号により上記第2のレジスタ内のデ
    ータがシフトされた後の、上記第2のレジスタに保持さ
    れたデータを上記演算回路に供給する回路とを有する請
    求項14記載のプロセッサ。プロセッサ。
  17. 【請求項17】上記第2のレジスタはシフトレジスタか
    らなり、 上記更新する回路は、 上記排他的論理和演算ゲートの出力が上記第2の値のと
    きに、上記第2のレジスタにシフト信号を供給する回路
    を有する請求項1記載のプロセッサ。プロセッサ。
  18. 【請求項18】上記第1のレジスタは、上記排他的論理
    和演算ゲートにそれぞれ供給されるべき複数のビットを
    保持するシフトレジスタからなり、 上記排他的論理和演算ゲートによりいずれか一つのビッ
    トが利用されるごとに、上記第1のレジスタにシフトク
    ロックを供給する回路をさらに有する請求項1記載のプ
    ロセッサ。
JP9126702A 1997-05-16 1997-05-16 プロセッサ Pending JPH10320221A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9126702A JPH10320221A (ja) 1997-05-16 1997-05-16 プロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9126702A JPH10320221A (ja) 1997-05-16 1997-05-16 プロセッサ

Publications (1)

Publication Number Publication Date
JPH10320221A true JPH10320221A (ja) 1998-12-04

Family

ID=14941744

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9126702A Pending JPH10320221A (ja) 1997-05-16 1997-05-16 プロセッサ

Country Status (1)

Country Link
JP (1) JPH10320221A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754870B2 (en) 2000-04-14 2004-06-22 Matsushita Electric Industrial Co., Ltd. CRC operation unit and CRC operation method
JP2011123884A (ja) * 2009-12-10 2011-06-23 Intel Corp プログラム可能な巡回冗長度検査(crc)計算のための命令セット・アーキテクチャ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6754870B2 (en) 2000-04-14 2004-06-22 Matsushita Electric Industrial Co., Ltd. CRC operation unit and CRC operation method
JP2011123884A (ja) * 2009-12-10 2011-06-23 Intel Corp プログラム可能な巡回冗長度検査(crc)計算のための命令セット・アーキテクチャ

Similar Documents

Publication Publication Date Title
EP0766169B1 (en) Processor and control method for performing proper saturation operation
US5390307A (en) Apparatus for a multi-data store or load instruction for transferring multiple contiguous storage locations in one transfer operation
US5946361A (en) Viterbi decoding method and circuit with accelerated back-tracing and efficient path metric calculation
US5761726A (en) Base address generation in a multi-processing system having plural memories with a unified address space corresponding to each processor
US6032170A (en) Long instruction word controlling plural independent processor operations
US6098163A (en) Three input arithmetic logic unit with shifter
US5960193A (en) Apparatus and system for sum of plural absolute differences
US6016538A (en) Method, apparatus and system forming the sum of data in plural equal sections of a single data word
JPS6044699B2 (ja) 特殊アドレス発生装置
US6754870B2 (en) CRC operation unit and CRC operation method
US6263420B1 (en) Digital signal processor particularly suited for decoding digital audio
US5459847A (en) Program counter mechanism having selector for selecting up-to-date instruction prefetch address based upon carry signal of adder which adds instruction size and LSB portion of address register
US6844834B2 (en) Processor, encoder, decoder, and electronic apparatus
US5512896A (en) Huffman encoding method, circuit and system employing most significant bit change for size detection
US5742621A (en) Method for implementing an add-compare-select butterfly operation in a data processing system and instruction therefor
US20080148018A1 (en) Shift Processing Unit
US5974539A (en) Three input arithmetic logic unit with shifter and mask generator
US6338135B1 (en) Data processing system and method for performing an arithmetic operation on a plurality of signed data values
JPH10320221A (ja) プロセッサ
JP2793342B2 (ja) 演算処理装置
US5396610A (en) Register address specifying circuit for simultaneously accessing two registers
EP0936537B1 (en) Cyclic redundancy check in a computer system
JPH1091395A (ja) プロセッサ
US5708800A (en) High speed microprocessor for processing and transferring N-bits of M-bit data
JPH1153206A (ja) プロセッサ