JP2008083762A - Microcomputer - Google Patents
Microcomputer Download PDFInfo
- Publication number
- JP2008083762A JP2008083762A JP2006260017A JP2006260017A JP2008083762A JP 2008083762 A JP2008083762 A JP 2008083762A JP 2006260017 A JP2006260017 A JP 2006260017A JP 2006260017 A JP2006260017 A JP 2006260017A JP 2008083762 A JP2008083762 A JP 2008083762A
- Authority
- JP
- Japan
- Prior art keywords
- data
- instruction
- microcomputer
- register
- storage unit
- 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
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
Abstract
Description
本発明はマイクロコンピュータに関し、特に、転送すべきデータ長が予め決定されていないブロックデータのデータ転送処理をマイクロコンピュータにより実行する技術に関する。 The present invention relates to a microcomputer, and more particularly to a technique for executing data transfer processing of block data whose data length to be transferred is not determined in advance by the microcomputer.
従来から、1又は複数のメモリ装置と接続されて使用されるマイクロコンピュータが知られている。従来のマイクロコンピュータ70の主要部分の構成例を図7に示す。図7に示すマイクロコンピュータ70は、アドレスバス73及びデータバス74を介して命令メモリ71及びデータメモリ72と接続されている。命令メモリ71は、マイクロコンピュータ70により実行される命令列を格納するメモリである。また、データメモリ72は、マイクロコンピュータ70に入力されるデータや、マイクロコンピュータ70によって処理されたデータが格納されるメモリである。なお、図7では、論理的な構成単位である命令メモリ71及びデータメモリ72を示しているが、これらはそれぞれ、ROM(Read Only Memory)若しくはRAM(Random Access Memory)又はこれらの組合せによって構成される。
2. Description of the Related Art Conventionally, microcomputers that are used in connection with one or a plurality of memory devices are known. An example of the configuration of the main part of a
実行制御部701は、命令メモリ71から命令をフェッチし、フェッチした命令をデコードする。より具体的に述べると、実行制御部701は、フェッチした命令の命令種別を判定し、命令オペランドを取得し、命令デコードにより得られたこれらの情報に応じて、後述するプログラムカウンタ(PC)702、汎用レジスタファイル703、算術論理演算ユニット(ALU)704、セレクタ707及びセレクタ709に対してデータ若しくは制御信号又はこれら両方を出力する。
The
プログラムカウンタ702は、実行制御部701によるフェッチ対象の命令が格納されているアドレスが保持されるレジスタである。プログラムカウンタ702の値は実行制御部701によって更新される。なお、命令が逐次実行されている場合には、プログラムカウンタ702の値は命令長に相当する値ずつ更新されるが、分岐命令が存在すると分岐先命令を示すアドレスによって不連続に更新される。
The
汎用レジスタファイル703は、16個の汎用レジスタR0乃至R15を有する。汎用レジスタR0乃至R15は、それぞれ8ビットのレジスタである。汎用レジスタR0乃至R15は、ALU704の入力データ及び出力データの格納場所としての使用、レジスタ間接アドレッシングモードを使用する場合のベースアドレスやインデックス値の格納場所としての使用など、様々な用途に使用可能なレジスタ群である。
The general-
なお、少なくとも、レジスタR0及びR1のペア、R2及びR3のペア、R12及びR13のペア、並びにR14及びR15のペアは、これら8ビットレジスタのペアによって16ビットレジスタとして使用することができる。また、これらの汎用レジスタには、アセンブリ言語の命令オペランドにおけるレジスタ指定の便宜を図るために別名称が付与されている。具体的には、レジスタR0はXレジスタ、レジスタR1はAレジスタ、レジスタR2はCレジススタ、レジスタR3はBレジスタ、レジスタR12はEレジスタ、レジスタR13はDレジスタ、レジスタR14はLレジスタ、レジスタR15はHレジスタと呼ばれるもとする。 At least the pair of registers R0 and R1, the pair of R2 and R3, the pair of R12 and R13, and the pair of R14 and R15 can be used as a 16-bit register by the pair of these 8-bit registers. These general-purpose registers are given different names for the convenience of register designation in the instruction operands in assembly language. Specifically, the register R0 is the X register, the register R1 is the A register, the register R2 is the C register, the register R3 is the B register, the register R12 is the E register, the register R13 is the D register, the register R14 is the L register, and the register R15 is the register R15. It is also called an H register.
ALU704は、実行制御部701による命令デコード結果に応じた演算を実行する演算器であり、算術演算(加減算)と、論理和、論理積及び排他的論理和などの論理演算を実行する。なお、図7では、ALU704へのデータ入力及びALU704による演算後のデータ出力は、全て汎用レジスタファイル703との間で行う構成としている。ALU704のデータ入力元レジスタ及び出力先レジスタは、命令のオペランドに基づいて実行制御部701によって決定される。
The
ゼロ判定回路705は、ALU704による算術演算結果がゼロであるか否かを判定し、判定結果に応じて1ビット論理信号を出力する回路である。ゼロ判定回路705は、ALU704による演算結果がゼロである場合に"1"を出力し、演算結果がゼロでない場合に"0"を出力する。
The zero
ゼロフラグ(Zフラグ)706は、ゼロ判定回路705による判定結果を保持する1ビットレジスタである。
A zero flag (Z flag) 706 is a 1-bit register that holds a determination result by the zero
セレクタ707は、2入力1出力のセレクタ回路である。セレクタ707の入力ポートの選択は実行制御部701が出力する制御信号に応じて行われる。具体的には、実行制御部701が算術演算命令をデコードしてALU704に算術演算を実行させる場合に、ゼロ判定回路705側の入力端子が選択される。一方、ALU704にこれ以外の演算を行わせる場合にもう一方の入力端子が選択される。
The
キャリーフラグ(CYフラグ)708は、ALU704による加算演算で発生するキャリー及び減算演算で発生するボローを記憶するために設けられた1ビットレジスタである。 A carry flag (CY flag) 708 is a 1-bit register provided for storing a carry generated by an addition operation by the ALU 704 and a borrow generated by a subtraction operation.
セレクタ709は、2入力1出力のセレクタ回路である。セレクタ709の入力ポートの選択は実行制御部701が出力する制御信号に応じて行われる。具体的には、実行制御部701が算術演算命令をデコードし、ALU704に算術演算を実行させる場合に、ALU704におけるキャリー及びボローの発生を示すcarry/borrow信号を入力する端子が選択され、ALU704にこれ以外の演算を行わせる場合にもう一方の入力端子が選択される。
The
このようなマイクロコンピュータ70が実行する処理の1つに、データメモリ72のある記憶領域に格納されたデータを異なるアドレスによって指定される他の記憶領域に転送又はコピーする処理がある。本明細書では、このようなデータの転送又はコピーを行う処理を総称して"データ転送処理"と呼ぶ。例えば、特許文献1には、データ長が既知であるブロックデータのデータ転送処理を実行するマイクロコンピュータが開示されている。
特許文献1に開示されたデータ転送処理のように、転送されるブロックデータのデータ長が既知である場合には、転送すべきブロックデータのデータ長を始めに汎用レジスタ(例えばレジスタR2)に保持しておき、データ転送を行う度に転送済みデータ長に応じてレジスタR2の値をデクリメントし、レジスタR2の値がゼロになるまでデータ転送をすればよい。このようなデータ転送処理によって、ブロックデータの効率的な転送又はコピーを行うことができる。
When the data length of the block data to be transferred is known as in the data transfer process disclosed in
しかしながら、例えば文字列データを転送する場合など、転送すべきブロックデータのデータ長が予め決まっていない場合には、転送されるデータの内容に基づいてブロックデータの終了位置を判定する必要がある。すなわち、ブロックデータの終了位置を示す何らかの終了コードを転送されるデータ列から検出することで、データ転送処理の終了を判定しなければならない。例えば、文字列データを転送する場合には、文字列の終了位置を示すNULL文字を終了コードとして検出することによって、転送すべき文字列データの終了位置を検出することができる。 However, when the data length of the block data to be transferred is not determined in advance, for example, when transferring character string data, it is necessary to determine the end position of the block data based on the contents of the transferred data. That is, the end of the data transfer process must be determined by detecting some end code indicating the end position of the block data from the transferred data string. For example, when transferring character string data, the end position of the character string data to be transferred can be detected by detecting a NULL character indicating the end position of the character string as the end code.
このように、転送すべきデータ長が予め決定されていない文字列データ等のデータ転送処理を実行する場合には、転送されるデータが所定の終了コードと一致するか否かを判定する比較演算を繰り返し実行する必要がある。このため、データ転送処理の処理効率が悪化するという問題がある。なお、転送すべきデータ長が予め決定されていないブロックデータ及び文字列データのことを、本明細書ではそれぞれ未確定ブロックデータ及び未確定文字列データと呼ぶ。 Thus, when performing data transfer processing for character string data or the like whose data length to be transferred is not determined in advance, a comparison operation for determining whether or not the transferred data matches a predetermined end code Must be executed repeatedly. For this reason, there is a problem that the processing efficiency of the data transfer processing deteriorates. Note that block data and character string data for which the data length to be transferred is not determined in advance are referred to as undetermined block data and undetermined character string data in this specification, respectively.
上述した問題が発生する具体例を図8(a)及び(b)のプログラムを参照して説明する。図8(a)及び(b)は、未確定文字列データのデータ転送処理をアセンブリ言語によって記述したプログラムの一例である。このうち、図8(a)は、データ転送処理を1バイト単位のデータ転送を繰り返すループ処理によって記述したプログラム例である。 A specific example in which the above problem occurs will be described with reference to the programs shown in FIGS. FIGS. 8A and 8B are examples of a program in which data transfer processing of unconfirmed character string data is described in assembly language. FIG. 8A shows a program example in which the data transfer process is described by a loop process that repeats data transfer in units of 1 byte.
図8(a)の1行目は、単なるコメント行である。図8(a)の2行目のMOV命令はデータ転送命令であり、第1オペランドはデータの転送先を示し、第2オペランドはデータの転送元を示している。より具体的に述べると、ニーモニック"MOV A,[DE]"で表される2行目の命令は、DEレジスタに格納された16ビットアドレスによって指定されるデータメモリ72の記憶領域から1バイトデータを読み出してAレジスタに格納する処理を示している。ここで、DEレジスタとは、DレジスタとEレジスタのペアによる16ビットレジスタを意味する。
The first line in FIG. 8A is a simple comment line. The MOV instruction on the second line in FIG. 8A is a data transfer instruction, the first operand indicates the data transfer destination, and the second operand indicates the data transfer source. More specifically, the instruction on the second line represented by the mnemonic “MOV A, [DE]” is one byte data from the storage area of the
図8(a)の3行目のMOV命令は、HLレジスタに格納された16ビットアドレスによって指定されるデータメモリ72の記憶領域に対して、Aレジスタに格納されたデータを転送する処理を示している。
The MOV instruction on the third line in FIG. 8A indicates a process for transferring the data stored in the A register to the storage area of the
図8(a)の4行目のCMP0命令は、Aレジスタに格納された8ビットデータが、"0x00"であるかを判定するための比較命令である。なお、NULL文字には "0x00"が使用されるため、この命令はデータメモリ72から取得したデータがNULL文字であるかを判定するための命令である。より具体的に述べると、ニーモニック"COMP0 A"で表される4行目の命令によって、Aレジスタの格納データから0を減算する演算が実行され、演算結果がゼロであるときにZフラグ706に"1"がセットされる。
The CMP0 instruction on the fourth line in FIG. 8A is a comparison instruction for determining whether the 8-bit data stored in the A register is “0x00”. Since “0x00” is used for the NULL character, this command is a command for determining whether the data acquired from the
図8(a)の5行目のINCW命令は、データ転送元アドレスを格納するDEレジスタをインクリメントする命令である。また、図8(a)の6行目のINCW命令は、データ転送先アドレスを格納するHLレジスタをインクリメントする命令である。最後に、図8(a)の7行目のBNZ命令は、Zフラグ706に"0"がセットされているときに1行目に分岐する条件付き分岐命令である。
The INCW instruction on the fifth line in FIG. 8A is an instruction for incrementing the DE register that stores the data transfer source address. Also, the INCW instruction on the sixth line in FIG. 8A is an instruction for incrementing the HL register for storing the data transfer destination address. Finally, the BNZ instruction on the seventh line in FIG. 8A is a conditional branch instruction that branches to the first line when the
図8(a)に示したように、未確定文字列データのデータ転送では、文字列データの終了を示すNULL文字を検出するための比較命令(CMP0命令)を繰り返し実行する必要がある。このため、比較命令の繰り返し実行に消費される時間だけ、データ転送処理の効率が悪化してしまう。 As shown in FIG. 8A, in the data transfer of the undetermined character string data, it is necessary to repeatedly execute a comparison instruction (CMP0 instruction) for detecting a NULL character indicating the end of the character string data. For this reason, the efficiency of the data transfer process is deteriorated by the time consumed for the repeated execution of the comparison instruction.
一方、図8(b)は、図8(a)に比べてループ展開を進めたプログラム例であり、4バイト単位のデータ転送を繰り返すループ処理によってデータ転送処理を記述したプログラム例である。また、図8(b)のプログラムは、データメモリ72から汎用レジスタファイル703へのデータ転送を2バイト単位のデータ転送命令(MOVW命令)を用いて記述している。図8(b)の2行目のMOVW命令は、DEレジスタの格納値にオフセット値"0"を加算したアドレスによって指定されるデータメモリ72の記憶領域から2バイトデータを読み出してAXレジスタに格納する転送処理を示している。2行目のMOVW命令によって読み出された2バイトデータを転送先メモリ領域に格納する処理は3行目のMOV命令から8行目のBZ命令までで完了する。しかしながら、この間には、Aレジスタ及びXレジスタの格納値がNULL文字であるかを判定するための2つの比較命令(図8(b)の4行目及び7行目)が含まれている。このため、図8(b)のプログラムによるデータ転送処理も図8(a)の場合と同様に、比較命令の繰り返し実行によって消費される時間だけ、データ転送処理の効率が悪化してしまう。
On the other hand, FIG. 8B is a program example in which the loop expansion is advanced as compared with FIG. 8A, and is a program example in which the data transfer process is described by a loop process that repeats data transfer in units of 4 bytes. 8B describes data transfer from the
本発明にかかるマイクロコンピュータは、命令をデコードする実行制御部と、前記実行制御部の命令デコード結果に基づいて演算処理を実行する演算部と、第1のデータ格納部と、前記演算部による前記第1のデータ格納部と第2のデータ格納部との間のデータ転送命令の実行に応じて、前記第1のデータ格納部の格納データが所定の識別コードであるか否かを検出する検出回路とを備える。 The microcomputer according to the present invention includes an execution control unit that decodes an instruction, an arithmetic unit that executes arithmetic processing based on an instruction decoding result of the execution control unit, a first data storage unit, and the arithmetic unit Detection for detecting whether or not the data stored in the first data storage unit is a predetermined identification code in response to execution of a data transfer instruction between the first data storage unit and the second data storage unit Circuit.
このような構成により、データ転送命令の実行に併せて、転送データに含まれる識別コード、例えば文字列データの終了位置を示すNULL文字などの検出を行うことができる。このため、従来のマイクロコンピュータ70において、未確定ブロックデータのデータ転送処理を実行する際に、NULL文字などの終了コードを検出するために必要であった比較命令の実行が不要となる。つまり、本発明にかかるマイクロコンピュータは、未確定ブロックデータのデータ転送処理を実行する際の実行命令数を削減できるため、従来に比べて、データ転送処理効率を向上させることができる。
With such a configuration, it is possible to detect an identification code included in the transfer data, for example, a NULL character indicating the end position of the character string data, along with the execution of the data transfer instruction. For this reason, in the
本発明により、未確定ブロックデータのデータ転送処理効率を向上させたマイクロコンピュータを提供できる。 According to the present invention, it is possible to provide a microcomputer with improved data transfer processing efficiency of unconfirmed block data.
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。 Hereinafter, specific embodiments to which the present invention is applied will be described in detail with reference to the drawings. In the drawings, the same elements are denoted by the same reference numerals, and redundant description will be omitted as necessary for the sake of clarity.
発明の実施の形態1.
本実施の形態にかかるマイクロコンピュータ10は、データメモリ72に格納されている未確定文字列データに対するデータ転送処理を効率よく行うことができるように構成されたマイクロコンピュータである。マイクロコンピュータ10の構成を図1に示す。
The
図1において、終了コード判定回路110は、入力されるデータと、ブロックデータの終了位置を示す終了コードとの一致を検出する回路である。本実施の形態では、終了コード判定回路110は、文字列データの終了位置を示すNULL文字との一致を検出するものとする。具体的には、終了コード判定回路110は、入力されるデータがNULL文字と一致する場合に"1"を出力し、NULL文字と一致しない場合に"0"を出力する。なお、データ転送処理の対象であるブロックデータが文字列データでない場合は、転送対象のブロックデータに対応した終了コードとの一致を終了コード判定回路110において検出すればよい。
In FIG. 1, an end
終了コード判定回路110には、Aレジスタに格納されたデータが入力される。これは、後述するように、未確定文字列データのデータ転送処理を実行する際にデータメモリ72から取得した1バイトデータを格納するレジスタをAレジスタに固定しているためである。なお、データメモリ72から取得されたデータがAレジスタとは異なる他の汎用レジスタに格納される場合は、このレジスタを終了コード判定回路110の入力元レジスタとすればよい。また、終了コード判定回路110に対する入力元レジスタを選択可能としてもよい。この場合は、データメモリ72から汎用レジスタへのデータ転送命令をデコードした実行制御部101によって、データ転送命令のオペランドに示された汎用レジスタが、終了コード判定回路110の入力元レジスタに選択されるよう構成してもよい。
The data stored in the A register is input to the end
セレクタ111は、2入力1出力のセレクタ回路である。セレクタ111の入力ポートの選択は、実行制御部101が出力する制御信号に応じて行われる。具体的には、実行制御部101がMOVS命令をデコードした場合に終了コード判定回路110側の入力端子が選択され、実行制御部101がMOVS命令以外の命令をデコードした場合にもう一方の入力端子が選択される。ここで、MOVS命令とは、所定の識別コードを含むデータのデータ転送処理を行うために新規に定義された転送命令である。
The
実行制御部101は、上述した従来の実行制御部701と同様に、命令メモリ71からフェッチした命令をデコードし、命令デコードにより得られた情報に応じて、プログラムカウンタ702、汎用レジスタファイル703、ALU704、セレクタ707及びセレクタ709に対してデータ若しくは制御信号又はこれら両方を出力する。これに加えて、実行制御部101は、命令デコードの結果に応じてセレクタ111に対する制御信号を出力する。
Similar to the above-described conventional
なお、図1に示したその他の構成要素は、従来のマイクロコンピュータ70が有するものと同一であるため、これらの構成要素には同一の符号を付与し、これらに関する詳細な説明を省略する。
The other constituent elements shown in FIG. 1 are the same as those of the
続いて、実行制御部101における命令デコード結果に応じたセレクタ707及び111の動作について、図2を用いて説明する。図2(a)は、ADD命令等の算術演算命令及びMOVS命令を除く他の命令がデコードされた場合におけるセレクタ707及び111の選択状態を示している。このときは、Zフラグ706の格納値が維持されるように、Zフラグ706に保持されている値がZフラグ706に繰り返し入力される。
Next, the operation of the
図2(b)は、加算命令(ADD命令)等の算術命令がデコードされた場合におけるセレクタ707及び111の選択状態を示している。このときは、ゼロ判定回路705の判定結果がZフラグ706に入力されるように、セレクタ707及び111が動作する。
FIG. 2B shows a selection state of the
図2(c)は、MOVS命令がデコードされた場合におけるセレクタ707及び111の選択状態を示している。このときは、終了コード判定回路110の判定結果がZフラグ706に入力されるように、セレクタ707及び111が動作する。これによって、終了コード判定回路110の判定結果がZフラグ706に保持されるため、データメモリ72から読み出されてAレジスタに格納されたデータがNULL文字であるか否かをZフラグ706の値によって判定することができる。
FIG. 2C shows a selection state of the
図3は、未確定文字列データのデータ転送処理をマイクロコンピュータ10によって実行する場合のプログラムの記述例を示している。図3のプログラムは、図8(a)と同様に、データ転送処理を1バイト単位のデータ転送を繰り返すループ処理によって記述している。図3の1行目は、図8(a)の1行目と同様に、単なるコメント行である。図3の2行目のMOV命令はデータ転送命令であり、DEレジスタに格納された16ビットアドレスによって指定されるデータメモリ72の記憶領域から1バイトデータを読み出してAレジスタに格納する。この命令は、図3(a)の2行目のMOV命令と同じである。
FIG. 3 shows a description example of a program when the
図3の3行目は、未確定文字列データのデータ転送を行うために新たに定義されたMOVS命令である。MOVS命令の第1オペランドはデータの転送先を示し、第2オペランドはデータの転送元を示している。ニーモニック"MOVS [HL],A"で表される転送命令は、HLレジスタに格納されている16ビットアドレスによって指定されるデータメモリ72の記憶領域に対して、Aレジスタに格納されたデータを転送する処理を示している。
The third line in FIG. 3 is a MOVS command newly defined to perform data transfer of unconfirmed character string data. The first operand of the MOVS instruction indicates the data transfer destination, and the second operand indicates the data transfer source. The transfer instruction represented by the mnemonic “MOVS [HL], A” transfers the data stored in the A register to the storage area of the
さらに、図2を参照して説明したように、図3の3行目のMOVS命令の実行時には、終了コード判定回路110による判定の結果がZフラグ706に入力される。すなわち、Aレジスタに格納された転送元データがNULL文字(0x00)である場合にZフラグ706に"1"がセットされ、NULL文字でない場合にZフラグ706に"0"がセットされる。したがって、図8(a)のプログラムと対比すると、マイクロコンピュータ10は、図8(a)の3行目のMOV命令と4行目のCMP0命令によって実行される処理と同等の処理を図3の3行目のMOVS命令のみで実行することができる。
Further, as described with reference to FIG. 2, when the MOVS instruction in the third row in FIG. 3 is executed, the determination result by the end
図3の4行目及び5行目のINCW命令は、図8(a)の5行目及び6行目のINCW命令と同一の命令であり、これらの命令によってデータ転送元アドレスを格納するDEレジスタ及びデータ転送先アドレスを格納するHLレジスタがインクリメントされる。 The INCW instructions on the 4th and 5th lines in FIG. 3 are the same as the INCW instructions on the 5th and 6th lines in FIG. 8A, and the DE that stores the data transfer source address by these instructions. The HL register for storing the register and the data transfer destination address is incremented.
最後に、図3の6行目のBNZ命令は、図8(a)の7行目のBNZ命令と同一であり、Zフラグ706に"0"がセットされているときに1行目に分岐する条件付き分岐命令である。
Finally, the BNZ instruction on the sixth line in FIG. 3 is the same as the BNZ instruction on the seventh line in FIG. 8A, and branches to the first line when the
このように、本実施の形態にかかるマイクロコンピュータ10は、データメモリ72から汎用レジスタファイル703に転送されたデータとNULL文字との一致を検出する終了コード判定回路110を有している。さらに、汎用レジスタファイル703からデータメモリ72へのデータ転送を指示する所定の転送命令、具体的にはMOVS命令を実行する際に、終了コード判定回路110によるNULL文字の検出を併せて実行し、終了コード判定回路110の検出結果を所定のフラグレジスタ、具体的にはZフラグ706に保持する構成とした。このような構成によって、従来のマイクロコンピュータ70においてNULL文字を検出するために必要であった比較命令の実行が不要となる。つまり、マイクロコンピュータ10は、未確定文字列データのデータ転送処理を実行する際の実行命令数を削減できるため、従来に比べてデータ転送処理の処理効率を向上させることができる。
As described above, the
発明の実施の形態2.
本実施の形態にかかるマイクロコンピュータ20は、データメモリ72と汎用レジスタファイル703の間でのデータ転送を2バイト単位で実行するのに適した構成となるように、上述したマイクロコンピュータ10を改良したものである。本実施の形態にかかるマイクロコンピュータ20の構成を図4に示す。
The
図4において、終了コード判定回路210及び211は、上述した終了コード判定回路110と同様の回路である。つまり、終了コード判定回路210及び211は、入力されるデータと、ブロックデータの終了位置を示す終了コードとの一致を検出する回路である。具体的には、終了コード判定回路210及び211は、入力されるデータがNULL文字と一致する場合に"1"を出力し、NULL文字と一致しない場合に"0"を出力する。
In FIG. 4, end
終了コード判定回路210には、Xレジスタに格納されたデータが入力される。一方、終了コード判定回路211には、Aレジスタに格納されたデータが入力される。これは、後述するように、文字列データのデータ転送処理を実行する際にデータメモリ72から取得した2バイトデータを格納するレジスタをAレジスタ及びXレジスタに固定しているためである。なお、終了コード判定回路210及び211の入力元の変更が適宜可能であることは、発明の実施の形態1において終了コード判定回路110に関して述べた通りである。
The data stored in the X register is input to the end
OR回路212は、終了コード判定回路210及び211の出力信号を入力し、これらのOR判定(論理和演算)結果を出力する。つまり、Aレジスタ及びXレジスタの格納データの少なくとも一方がNULL文字であるために終了コード判定回路210及び211の少なくとも一方の出力が"1"になったとき、OR回路212の出力が"1"になる。
The OR
セレクタ213及びセレクタ214は、それぞれ2入力1出力のセレクタ回路である。セレクタ213及び214の入力ポートの選択は実行制御部201が出力する制御信号に応じて行われる。具体的には、実行制御部201がMOVS命令をデコードした場合、セレクタ213は終了コード判定回路210側の入力端子を選択し、セレクタ214はOR回路212側の入力端子を選択する。一方、実行制御部201がMOVS命令以外の命令をデコードした場合、セレクタ213及び214はもう一方の入力端子を選択さする。
Each of the
実行制御部201は、上述した従来の実行制御部701と同様に、命令メモリ71からフェッチした命令をデコードし、命令デコードにより得られた情報に応じて、プログラムカウンタ702、汎用レジスタファイル703、ALU704、セレクタ707及びセレクタ709に対してデータ若しくは制御信号又はこれら両方を出力する。これに加えて、実行制御部201は、命令デコードの結果に応じてセレクタ213及び214に対する制御信号を出力する。
Similar to the above-described conventional
図5は、実行制御部201がMOVS命令をデコードした場合のセレクタ707、709、213及び214の動作を示す図である。すなわち、終了コード判定回路210の出力がZフラグ706に入力されるとともに、OR回路212の出力がCYフラグ708に入力されるように、4つのセレクタ707、708、213及び214が動作する。これによって、データメモリ72から読み出されてAレジスタ及びXレジスタに格納された2バイトデータの少なくとも一方がNULL文字であることをCYフラグ708の値によって判定することができる。また、データメモリ72から読み出されてXレジスタに格納されたデータがNULL文字であることをZフラグ706の値によって判定することができる。
FIG. 5 is a diagram illustrating operations of the
図6は、未確定文字列データのデータ転送処理をマイクロコンピュータ20によって実行する場合のプログラム例である。図6のプログラムは、図8(b)に示したプログラムと対比すべく記述されたものであって、データ転送処理を4バイト単位のデータ転送を繰り返すループ処理で記述するとともに、データメモリ72から汎用レジスタファイル703へのデータ転送を2バイト単位のデータ転送命令(MOVW命令)を用いて記述している。
FIG. 6 shows an example of a program in the case where the
図6の1行目は、図8(b)の1行目と同様に、単なるコメント行である。図6の2行目のMOVW命令は、図8(b)の2行目のMOVW命令と同様である。つまり、DEレジスタの格納値にオフセット値"0"を加算した16ビットアドレスによって指定されるデータメモリ72の記憶領域から2バイトデータを読み出してAXレジスタに格納させる転送命令を示している。
The first line in FIG. 6 is just a comment line, similar to the first line in FIG. The MOVW instruction on the second line in FIG. 6 is the same as the MOVW instruction on the second line in FIG. That is, it shows a transfer instruction for reading 2-byte data from the storage area of the
図6の3行目のMOVS命令は、HLレジスタの格納値にオフセット値"0"を加算した16ビットアドレスによって指定されるデータメモリ72の記憶領域に対して、Xレジスタに格納されたデータを転送する処理を示している。さらに、図6の3行目のMOVS命令の実行時には、図5を参照して説明したように、終了コード判定回路210の判定結果がZフラグ706に入力されるとともに、OR回路212の出力がCYフラグ708に入力される。
The MOVS instruction on the third line in FIG. 6 transfers the data stored in the X register to the storage area of the
図8(b)のプログラムにおいて図6の3行目のMOVS命令に対応する命令群は、3行目のMOV命令、4行目のCMP0命令及び7行目のCMP0命令である。つまり、マイクロコンピュータ20は、図6の3行目のMOVS命令によって、従来の3命令に相当する処理を1命令で実行可能である。
In the program of FIG. 8B, the instruction group corresponding to the MOVS instruction on the third line in FIG. 6 is the MOV instruction on the third line, the CMP0 instruction on the fourth line, and the CMP0 instruction on the seventh line. That is, the
図6の4行目のBC命令は、CYフラグ708の値が"1"であるときに19行目に分岐する条件付き分岐命令である。つまり、このBC命令は、Aレジスタ及びXレジスタの格納データの少なくとも一方がNULL文字であると判定される場合に、ループ処理を終了するための命令である。このBC命令は、図8(b)の5行目及び8行目の2つのBZ命令に相当する。本実施の形態では、Aレジスタ及びXレジスタに格納された2バイトデータに対するOR判定結果をCYフラグ708に設定しているため、1つの条件付き分岐命令(BC命令)のみによってループ終了を判定できる。
The BC instruction on the fourth line in FIG. 6 is a conditional branch instruction that branches to the 19th line when the value of the
図6の5行目のMOV命令は、HLレジスタの格納値にオフセット値"1"を加算した16ビットアドレスによって指定されるデータメモリ72の記憶領域に対して、Aレジスタに格納されたデータを転送する処理を示している。これは、図8(b)の6行目のMOV命令と同様である。
The MOV instruction on the fifth line in FIG. 6 transfers the data stored in the A register to the storage area of the
図6の6行目から9行目までの命令は、図6の2行目から5行目までの命令の繰り返しであるため説明を省略する。図6の10行目から15行目までは、データ転送元アドレスを格納するDEレジスタ及びデータ転送先アドレスを格納するHLレジスタをインクリメントするための命令である。これらの命令群は、図8(b)の16行目から21行目の命令と同様である。また、図6の16行目の無条件分岐命令(BR命令)は、図8(b)の22行目の命令と同様である。 The instructions from the sixth line to the ninth line in FIG. 6 are repetitions of the instructions from the second line to the fifth line in FIG. The 10th to 15th lines in FIG. 6 are instructions for incrementing the DE register storing the data transfer source address and the HL register storing the data transfer destination address. These instruction groups are the same as the instructions on the 16th to 21st lines in FIG. Further, the unconditional branch instruction (BR instruction) on the 16th line in FIG. 6 is the same as the instruction on the 22nd line in FIG. 8B.
図6の17行目から22行目は、2行目から16行目までのループ処理を抜けた後の後処理を実行させるための命令群である。図6の17行目は、ループ処理を終了する際の分岐先を示すコメント行である。図6の18行目は、オフセット値を算出すためのカウンタとして使用されるBCレジスタをインクリメントするための命令である。図6の19行目は、ループ処理の終了時の分岐先を示すコメント行である。図6の20行目のROLWC命令は、第1オペランドで指定されるレジスタ(つまりBCレジスタ)の内容をCYフラグ708も含めて、第2オペランドで指定される回数(つまり1回)だけ左方向に回転させる命令である。なお、20行目のROLWC命令の実行時には、CYフラグ708に"1"がセットされている。したがって、ROLWC命令の実行によって、BCレジスタの内容が左方向にシフトされるとともに、CレジスタのLSB(Least Significant Bit)に"1"がセットされる。つまり、元のBCレジスタの値を10進数表記でnとすると、20行目のROLWC命令の実行によってBCレジスタの値が2n+1に更新される。
The 17th to 22nd lines in FIG. 6 are instruction groups for executing post-processing after exiting the loop processing from the 2nd to 16th lines. The 17th line in FIG. 6 is a comment line indicating a branch destination when the loop process is terminated. The 18th line in FIG. 6 is an instruction for incrementing the BC register used as a counter for calculating the offset value. The 19th line in FIG. 6 is a comment line indicating a branch destination at the end of the loop processing. The ROLWC instruction on the 20th line in FIG. 6 includes the contents of the register specified by the first operand (that is, the BC register) including the
図6の21行目のSKZ命令及び22行目のMOV命令は、2行目から16行目までのループ処理を抜けた後に、Aレジスタの格納値が未確定文字列データの最後、つまりNULL文字である場合に、これをデータメモリ72に転送するための命令である。具体的には、21行目のSKZ命令は、Zフラグ706の値が"1"であるときに後続の1命令をスキップする命令である。一方、Zフラグ706の値が"0"であることは、Aレジスタの格納データが未確定文字列データの終了を示すNULL文字であることを意味している。したがって、Zフラグ706の値が"0"のときは、22行目のMOV命令によってAレジスタの値がデータメモリ72に転送される。
In the SKZ instruction on the 21st line and the MOV instruction on the 22nd line in FIG. 6, after the loop processing from the 2nd line to the 16th line is finished, the stored value of the A register is the end of the unconfirmed character string data, that is, NULL. If it is a character, it is an instruction for transferring it to the
本実施の形態にかかるマイクロコンピュータ20は、従来のマイクロコンピュータ70においてNULL文字を検出ために必要であった比較命令の実行が不要となる。つまり、マイクロコンピュータ20は、未確定文字列データのデータ転送処理を実行する際の実行命令数を削減できるため、従来に比べてデータ転送処理の処理効率を向上させることができる。
The
さらに、マイクロコンピュータ20は、データメモリ72と汎用レジスタファイル703の間で2バイト単位でのデータ転送を行うこととしている。文字データの構成単位である1バイト単位より大きな2バイト単位でデータ転送を行うと、転送データ単位の途中で文字列データが終了する可能性がある。このため、2バイト単位でデータメモリ72から読み出されたデータのどちらがNULL文字であるかを判定する必要がある。
Further, the
この判定を行うために、マイクロコンピュータ20は、複数のフラグによってNULL文字位置の識別ができるよう構成されている。具体的には、Aレジスタ及びXレジスタに読み出されたデータのうちの少なくとも一方がNULL文字であるか否かの判定結果をCYフラグ708に設定し、Xレジスタに格納されたデータがNULL文字であるか否かの判定結果をZフラグ706に設定する。つまり、2つのフラグのうちの一方(CYフラグ708)を2バイトデータに対するOR判定結果に応じてセットする構成としている。
In order to make this determination, the
このような構成により、図6の4行目及び8行目のBC命令のように、2バイトデータに対するOR判定に応じてセットされるCYフラグ708に対する1つの条件付き分岐命令によって、データ転送のためのループ処理の終了を判断することができる。つまり、ループ処理の終了を判断するに際して、Zフラグ706及びCYフラグ708に対する2つの条件付き分岐命令を必要としない。したがって、未確定文字列データのデータ転送処理の効率をいっそう向上させることが可能である。
With such a configuration, the data transfer is performed by one conditional branch instruction for the
なお、本実施の形態では、2バイト単位でのデータ転送に対応するため、2つの1ビットフラグを使用することにしたが、これを任意のNバイト単位に拡張することも容易である。具体的には、Nバイトの転送データのいずれか1バイトが終了コード(NULL文字)であった場合にセットされる1つのフラグと、Nバイトの転送データのどの位置が終了コード(NULL文字)であったかを示すN−1個のフラグ、合計N個の1ビットフラグを設ければよい。このように1ビットフラグの1つをNバイトデータに対するOR判定結果によりセットすることで、データ転送のためのループ処理の終了を1つのフラグの値のみによって判定することができる。 In this embodiment, two 1-bit flags are used to support data transfer in units of 2 bytes. However, it is easy to extend this to arbitrary N bytes. Specifically, one flag that is set when any one byte of N-byte transfer data is an end code (NULL character), and which position of the N-byte transfer data is an end code (NULL character) N-1 flags indicating whether or not, a total of N 1-bit flags may be provided. Thus, by setting one of the 1-bit flags based on the OR determination result for N-byte data, the end of the loop processing for data transfer can be determined only by the value of one flag.
その他の実施の形態.
発明の実施の形態1及び2では、NULL文字、つまり終了コードの検出結果を保持するフラグレジスタを既存のZフラグ706及びCYフラグ708と共用させる構成とした。しかしながら、これらと共用させずに、独立したフラグレジスタを設けてもよい。また、これらのフラグレジスタに、汎用レジスタファイル703のレジスタを割り当ててもよい。しかしながら、既存のZフラグ706及びCYフラグ708を利用すれば、上述したBZ命令やBC命令など既存の命令セットに用意された命令群を流用することができる。このため、本発明を既存のマイクロコンピュータに適用する際の開発負担を軽減できるという利点がある。
Other embodiments.
In the first and second embodiments of the invention, a flag register that holds a detection result of a NULL character, that is, an end code, is shared with the existing
発明の実施の形態1及び2において説明したプログラム例では、汎用レジスタファイル703からデータメモリ72へのデータ転送命令の実行に併せて終了コード検出回路110、210及び211の検出結果をZフラグ706又はCYフラグ708に出力するものとして説明した。しかしながら、この転送命令に先立って行われるデータメモリ72から汎用レジスタファイル703へのデータ転送命令の実行に併せて、終了コード検出回路110、210及び211の検出結果をZフラグ706又はCYフラグ708に出力してもよい。
In the program examples described in the first and second embodiments of the present invention, the detection results of the end
発明の実施の形態1及び2では、未確定文字列データのデータ転送処理を対象としたが、本発明は任意の未確定ブロックデータの転送に適用可能である。この場合は、終了コード判定回路110、210及び211において、データ転送処理の対象となる未確定ブロックデータに応じた終了コードを検出すればよい。
In the first and second embodiments of the present invention, data transfer processing of unconfirmed character string data is targeted, but the present invention can be applied to transfer of arbitrary unconfirmed block data. In this case, the end
発明の実施の形態1及び2では、マイクロコンピュータ10及び20の外部にデータメモリ72が存在する構成を示した。しかしながら、例えば、データメモリ72を含めて1チップに集積されたマイクロコンピュータなど、データメモリ72がマイクロコンピュータ10及び20の内部に存在する構成としてもよい。つまり、本発明は、発明の実施の形態1及び2に示した具体的な実装に限られず、様々な実装形態のマイクロコンピュータに適用可能である。
In the first and second embodiments, the configuration in which the
発明の実施の形態1及び2では、データメモリ72を不確定ブロックデータの転送元及び転送先とするデータ転送処理について説明した。しかしながら、不確定ブロックデータの転送元若しくは転送先、又は転送元及び転送先の両方が命令メモリ71であってもよい。例えば、命令メモリ71内にテーブルデータとして格納されたデータを汎用レジスタファイル703にロードし、これを他のメモリ(例えば、データメモリ72)に転送するデータ転送処理に本発明を適用することができる。
In the first and second embodiments of the invention, the data transfer process using the
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。 Furthermore, the present invention is not limited to the above-described embodiment, and various modifications can be made without departing from the gist of the present invention described above.
10、20 マイクロコンピュータ
101、201 実行制御部
110、210、211 終了コード判定回路
111、213、214 セレクタ
212 OR回路
71 命令メモリ
72 データメモリ
73 アドレスバス
74 データバス
702 プログラムカウンタ(PC)
703 汎用レジスタファイル
704 算術論理演算ユニット(ALU)
705 ゼロ判定回路
706 ゼロフラグ(Zフラグ)
707、709 セレクタ
708 キャリーフラグ(CYフラグ)
R0〜R15 汎用レジスタ
10, 20
703 General-
705
707, 709
R0 to R15 general purpose registers
Claims (9)
前記実行制御部の命令デコード結果に基づいて演算処理を実行する演算部と、
第1のデータ格納部と、
前記演算部による前記第1のデータ格納部と第2のデータ格納部との間のデータ転送命令の実行に応じて、前記第1のデータ格納部の格納データが所定の識別コードであるか否かを検出する検出回路と、
を備えるマイクロコンピュータ。 An execution control unit for decoding instructions;
An arithmetic unit that executes arithmetic processing based on an instruction decoding result of the execution control unit;
A first data storage;
Whether the data stored in the first data storage unit is a predetermined identification code in response to the execution of a data transfer instruction between the first data storage unit and the second data storage unit by the arithmetic unit A detection circuit for detecting
A microcomputer comprising:
前記演算部による演算結果におけるキャリー又はボローの発生を記憶するキャリーフラグとをさらに備え、
前記検出回路の検出結果が、前記ゼロフラグ及び前記キャリーフラグの少なくとも一方に記憶される請求項1に記載のマイクロコンピュータ。 A zero flag for storing that the calculation result by the calculation unit is zero;
A carry flag for storing occurrence of carry or borrow in the calculation result by the calculation unit;
The microcomputer according to claim 1, wherein a detection result of the detection circuit is stored in at least one of the zero flag and the carry flag.
第1のデータ格納部と、
前記第1のデータ格納部に入力されたデータが前記ブロックデータの終了位置を示す終了コードであるか否かを検出する検出回路と、
を備えるマイクロコンピュータ。 A microcomputer that performs transfer processing of block data whose data length to be transferred is not predetermined,
A first data storage;
A detection circuit for detecting whether data input to the first data storage unit is an end code indicating an end position of the block data;
A microcomputer comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006260017A JP2008083762A (en) | 2006-09-26 | 2006-09-26 | Microcomputer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006260017A JP2008083762A (en) | 2006-09-26 | 2006-09-26 | Microcomputer |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008083762A true JP2008083762A (en) | 2008-04-10 |
Family
ID=39354626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006260017A Pending JP2008083762A (en) | 2006-09-26 | 2006-09-26 | Microcomputer |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008083762A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016214339A (en) * | 2015-05-15 | 2016-12-22 | 株式会社藤商事 | Game machine |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62221059A (en) * | 1986-03-20 | 1987-09-29 | Nec Corp | Central processing unit |
JPS6472236A (en) * | 1987-09-14 | 1989-03-17 | Hitachi Ltd | Information processor with string operating instruction |
JPH04109337A (en) * | 1990-08-29 | 1992-04-10 | Mitsubishi Electric Corp | Data processor |
-
2006
- 2006-09-26 JP JP2006260017A patent/JP2008083762A/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62221059A (en) * | 1986-03-20 | 1987-09-29 | Nec Corp | Central processing unit |
JPS6472236A (en) * | 1987-09-14 | 1989-03-17 | Hitachi Ltd | Information processor with string operating instruction |
JPH04109337A (en) * | 1990-08-29 | 1992-04-10 | Mitsubishi Electric Corp | Data processor |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016214339A (en) * | 2015-05-15 | 2016-12-22 | 株式会社藤商事 | Game machine |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100266337B1 (en) | Data processing circuit, semiconductor integrated circuit device, microcomputer, and electronic equipment | |
JP3592230B2 (en) | Data processing device | |
US5390307A (en) | Apparatus for a multi-data store or load instruction for transferring multiple contiguous storage locations in one transfer operation | |
JP3658101B2 (en) | Data processing device | |
US5129068A (en) | Operand address calculation in a pipeline processor by decomposing the operand specifier into sequential step codes | |
TWI489383B (en) | Apparatus and method of mask permute instructions | |
JP3203401B2 (en) | Data processing device | |
US5682531A (en) | Central processing unit | |
JPH1091443A (en) | Information processing circuit, microcomputer and electronic equipment | |
JPH03218523A (en) | Data processor | |
US4945511A (en) | Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions | |
JPH0810428B2 (en) | Data processing device | |
JPS62197830A (en) | Data processing system | |
US5542060A (en) | Data processor including a decoding unit for decomposing a multifunctional data transfer instruction into a plurality of control codes | |
TW201643698A (en) | Method and apparatus for performing conflict detection | |
JP2001034471A (en) | Vliw system processor | |
JP2004086837A (en) | Data processor | |
JP3841967B2 (en) | Microprocessor | |
US6209080B1 (en) | Constant reconstruction processor that supports reductions in code size and processing time | |
CN114968369A (en) | Method for assigning or extending a constant number of bits with a constant extension slot in the same execution packet in a VLIW processor | |
US5396610A (en) | Register address specifying circuit for simultaneously accessing two registers | |
JP2008083762A (en) | Microcomputer | |
JPH0769806B2 (en) | Data processing device | |
US5463747A (en) | Microprogram data processor processing operand address calculation and instruction execution with common hardware | |
JP2000112754A (en) | Data processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090813 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110524 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110607 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110729 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120424 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120821 |