JP2008083762A - Microcomputer - Google Patents

Microcomputer Download PDF

Info

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
Application number
JP2006260017A
Other languages
Japanese (ja)
Inventor
Kentaro Tanaka
健太郎 田中
Kunio Niwa
邦夫 丹羽
Hideo Isogai
英夫 磯貝
Kazuyoshi Kawai
一慶 河合
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.)
NEC Electronics Corp
Original Assignee
NEC Electronics Corp
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 NEC Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2006260017A priority Critical patent/JP2008083762A/en
Publication of JP2008083762A publication Critical patent/JP2008083762A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To provide a microcomputer that enhances the efficiency of a data transfer process for block data whose data length to be transferred is not predetermined. <P>SOLUTION: The microcomputer 10 includes: an execution control part 101 for decoding instructions; an ALU 704 for executing arithmetic processes based on the results of decoding instructions by the execution control part 101; a general-purpose register file 703; and a detection circuit 110 for detecting whether or not the data stored in the general-purpose register file 703 has a predetermined identification code (NULL character), according to the execution by the ALU 704 of a data transfer instruction between the general-purpose register 703 and a data memory 72. <P>COPYRIGHT: (C)2008,JPO&INPIT

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 conventional microcomputer 70 is shown in FIG. A microcomputer 70 shown in FIG. 7 is connected to an instruction memory 71 and a data memory 72 via an address bus 73 and a data bus 74. The instruction memory 71 is a memory that stores an instruction sequence executed by the microcomputer 70. The data memory 72 is a memory for storing data input to the microcomputer 70 and data processed by the microcomputer 70. In FIG. 7, an instruction memory 71 and a data memory 72, which are logical structural units, are shown. These are configured by ROM (Read Only Memory), RAM (Random Access Memory), or a combination thereof. The

実行制御部701は、命令メモリ71から命令をフェッチし、フェッチした命令をデコードする。より具体的に述べると、実行制御部701は、フェッチした命令の命令種別を判定し、命令オペランドを取得し、命令デコードにより得られたこれらの情報に応じて、後述するプログラムカウンタ(PC)702、汎用レジスタファイル703、算術論理演算ユニット(ALU)704、セレクタ707及びセレクタ709に対してデータ若しくは制御信号又はこれら両方を出力する。   The execution control unit 701 fetches an instruction from the instruction memory 71 and decodes the fetched instruction. More specifically, the execution control unit 701 determines the instruction type of the fetched instruction, acquires an instruction operand, and according to the information obtained by instruction decoding, a program counter (PC) 702 described later. The data and / or control signals are output to the general-purpose register file 703, the arithmetic logic unit (ALU) 704, the selector 707, and the selector 709.

プログラムカウンタ702は、実行制御部701によるフェッチ対象の命令が格納されているアドレスが保持されるレジスタである。プログラムカウンタ702の値は実行制御部701によって更新される。なお、命令が逐次実行されている場合には、プログラムカウンタ702の値は命令長に相当する値ずつ更新されるが、分岐命令が存在すると分岐先命令を示すアドレスによって不連続に更新される。   The program counter 702 is a register that holds an address where an instruction to be fetched by the execution control unit 701 is stored. The value of the program counter 702 is updated by the execution control unit 701. If instructions are executed sequentially, the value of the program counter 702 is updated by a value corresponding to the instruction length, but if a branch instruction is present, it is updated discontinuously with the address indicating the branch destination instruction.

汎用レジスタファイル703は、16個の汎用レジスタR0乃至R15を有する。汎用レジスタR0乃至R15は、それぞれ8ビットのレジスタである。汎用レジスタR0乃至R15は、ALU704の入力データ及び出力データの格納場所としての使用、レジスタ間接アドレッシングモードを使用する場合のベースアドレスやインデックス値の格納場所としての使用など、様々な用途に使用可能なレジスタ群である。   The general-purpose register file 703 has 16 general-purpose registers R0 to R15. Each of the general purpose registers R0 to R15 is an 8-bit register. The general purpose registers R0 to R15 can be used for various purposes such as using the ALU 704 as input data and output data storage locations, and using the register indirect addressing mode as a base address or index value storage location. A group of registers.

なお、少なくとも、レジスタ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 ALU 704 is an arithmetic unit that performs an operation according to the instruction decode result by the execution control unit 701, and executes arithmetic operation (addition / subtraction) and logical operations such as logical sum, logical product, and exclusive logical sum. In FIG. 7, the data input to the ALU 704 and the data output after the calculation by the ALU 704 are all performed with the general-purpose register file 703. The data input source register and output destination register of the ALU 704 are determined by the execution control unit 701 based on the operand of the instruction.

ゼロ判定回路705は、ALU704による算術演算結果がゼロであるか否かを判定し、判定結果に応じて1ビット論理信号を出力する回路である。ゼロ判定回路705は、ALU704による演算結果がゼロである場合に"1"を出力し、演算結果がゼロでない場合に"0"を出力する。   The zero determination circuit 705 is a circuit that determines whether or not the arithmetic operation result by the ALU 704 is zero and outputs a 1-bit logic signal according to the determination result. The zero determination circuit 705 outputs “1” when the calculation result by the ALU 704 is zero, and outputs “0” when the calculation result is not zero.

ゼロフラグ(Zフラグ)706は、ゼロ判定回路705による判定結果を保持する1ビットレジスタである。   A zero flag (Z flag) 706 is a 1-bit register that holds a determination result by the zero determination circuit 705.

セレクタ707は、2入力1出力のセレクタ回路である。セレクタ707の入力ポートの選択は実行制御部701が出力する制御信号に応じて行われる。具体的には、実行制御部701が算術演算命令をデコードしてALU704に算術演算を実行させる場合に、ゼロ判定回路705側の入力端子が選択される。一方、ALU704にこれ以外の演算を行わせる場合にもう一方の入力端子が選択される。   The selector 707 is a 2-input 1-output selector circuit. Selection of the input port of the selector 707 is performed according to a control signal output from the execution control unit 701. Specifically, when the execution control unit 701 decodes an arithmetic operation instruction and causes the ALU 704 to execute an arithmetic operation, the input terminal on the zero determination circuit 705 side is selected. On the other hand, when the ALU 704 performs other calculations, the other input terminal is selected.

キャリーフラグ(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 selector 709 is a 2-input 1-output selector circuit. Selection of an input port of the selector 709 is performed according to a control signal output from the execution control unit 701. Specifically, when the execution control unit 701 decodes an arithmetic operation instruction and causes the ALU 704 to execute an arithmetic operation, a terminal for inputting a carry / borrow signal indicating the occurrence of carry and borrow in the ALU 704 is selected, and the ALU 704 is selected. The other input terminal is selected when other calculations are performed.

このようなマイクロコンピュータ70が実行する処理の1つに、データメモリ72のある記憶領域に格納されたデータを異なるアドレスによって指定される他の記憶領域に転送又はコピーする処理がある。本明細書では、このようなデータの転送又はコピーを行う処理を総称して"データ転送処理"と呼ぶ。例えば、特許文献1には、データ長が既知であるブロックデータのデータ転送処理を実行するマイクロコンピュータが開示されている。
特開昭64−58039号公報
One of the processes executed by the microcomputer 70 is a process of transferring or copying data stored in a storage area of the data memory 72 to another storage area specified by a different address. In this specification, such a process for transferring or copying data is generically referred to as “data transfer process”. For example, Patent Document 1 discloses a microcomputer that executes data transfer processing of block data having a known data length.
JP-A 64-58039

特許文献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 Patent Document 1, the data length of the block data to be transferred is first stored in a general-purpose register (for example, register R2). In addition, every time data is transferred, the value of the register R2 is decremented according to the transferred data length, and the data is transferred until the value of the register R2 becomes zero. By such data transfer processing, block data can be efficiently transferred or copied.

しかしながら、例えば文字列データを転送する場合など、転送すべきブロックデータのデータ長が予め決まっていない場合には、転送されるデータの内容に基づいてブロックデータの終了位置を判定する必要がある。すなわち、ブロックデータの終了位置を示す何らかの終了コードを転送されるデータ列から検出することで、データ転送処理の終了を判定しなければならない。例えば、文字列データを転送する場合には、文字列の終了位置を示す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 data memory 72 specified by the 16-bit address stored in the DE register. Is read and stored in the A register. Here, the DE register means a 16-bit register having a pair of a D register and an E register.

図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 data memory 72 specified by the 16-bit address stored in the HL register. ing.

図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 data memory 72 is a NULL character. More specifically, an operation for subtracting 0 from the data stored in the A register is executed by the instruction on the fourth line represented by the mnemonic “COMP0 A”, and when the operation result is zero, the Z flag 706 is set. “1” is set.

図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 Z flag 706 is set to “0”.

図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 data memory 72 to the general-purpose register file 703 using a data transfer instruction (MOVW instruction) in units of 2 bytes. The MOVW instruction on the second line in FIG. 8B reads 2-byte data from the storage area of the data memory 72 designated by the address obtained by adding the offset value “0” to the stored value of the DE register and stores it in the AX register. The transfer process to be performed is shown. The process of storing the 2-byte data read by the MOVW instruction on the second line in the transfer destination memory area is completed from the MOV instruction on the third line to the BZ instruction on the eighth line. However, two comparison instructions (the fourth line and the seventh line in FIG. 8B) for determining whether the stored values of the A register and the X register are NULL characters are included in this period. For this reason, the data transfer processing by the program of FIG. 8B also deteriorates the efficiency of the data transfer processing for the time consumed by repeated execution of the comparison instruction, as in FIG. 8A.

本発明にかかるマイクロコンピュータは、命令をデコードする実行制御部と、前記実行制御部の命令デコード結果に基づいて演算処理を実行する演算部と、第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 conventional microcomputer 70, when executing the data transfer process of the undetermined block data, it is not necessary to execute the comparison instruction necessary for detecting the end code such as the NULL character. In other words, the microcomputer according to the present invention can reduce the number of execution instructions when executing the data transfer process of the undetermined block data, so that the data transfer process efficiency can be improved as compared with the related art.

本発明により、未確定ブロックデータのデータ転送処理効率を向上させたマイクロコンピュータを提供できる。   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に示す。
Embodiment 1 of the Invention
The microcomputer 10 according to the present embodiment is a microcomputer configured to be able to efficiently perform data transfer processing on unconfirmed character string data stored in the data memory 72. The configuration of the microcomputer 10 is shown in FIG.

図1において、終了コード判定回路110は、入力されるデータと、ブロックデータの終了位置を示す終了コードとの一致を検出する回路である。本実施の形態では、終了コード判定回路110は、文字列データの終了位置を示すNULL文字との一致を検出するものとする。具体的には、終了コード判定回路110は、入力されるデータがNULL文字と一致する場合に"1"を出力し、NULL文字と一致しない場合に"0"を出力する。なお、データ転送処理の対象であるブロックデータが文字列データでない場合は、転送対象のブロックデータに対応した終了コードとの一致を終了コード判定回路110において検出すればよい。   In FIG. 1, an end code determination circuit 110 is a circuit that detects a match between input data and an end code indicating an end position of block data. In the present embodiment, the end code determination circuit 110 detects a match with a NULL character indicating the end position of the character string data. Specifically, the end code determination circuit 110 outputs “1” when the input data matches the NULL character, and outputs “0” when the input data does not match the NULL character. If the block data that is the target of the data transfer process is not character string data, the end code determination circuit 110 may detect a match with the end code corresponding to the block data to be transferred.

終了コード判定回路110には、Aレジスタに格納されたデータが入力される。これは、後述するように、未確定文字列データのデータ転送処理を実行する際にデータメモリ72から取得した1バイトデータを格納するレジスタをAレジスタに固定しているためである。なお、データメモリ72から取得されたデータがAレジスタとは異なる他の汎用レジスタに格納される場合は、このレジスタを終了コード判定回路110の入力元レジスタとすればよい。また、終了コード判定回路110に対する入力元レジスタを選択可能としてもよい。この場合は、データメモリ72から汎用レジスタへのデータ転送命令をデコードした実行制御部101によって、データ転送命令のオペランドに示された汎用レジスタが、終了コード判定回路110の入力元レジスタに選択されるよう構成してもよい。   The data stored in the A register is input to the end code determination circuit 110. This is because, as will be described later, a register for storing 1-byte data acquired from the data memory 72 when executing data transfer processing of unconfirmed character string data is fixed to the A register. When the data acquired from the data memory 72 is stored in another general-purpose register different from the A register, this register may be used as the input source register of the end code determination circuit 110. Further, an input source register for the end code determination circuit 110 may be selectable. In this case, the execution control unit 101 that has decoded the data transfer instruction from the data memory 72 to the general-purpose register selects the general-purpose register indicated by the operand of the data transfer instruction as the input source register of the end code determination circuit 110. You may comprise.

セレクタ111は、2入力1出力のセレクタ回路である。セレクタ111の入力ポートの選択は、実行制御部101が出力する制御信号に応じて行われる。具体的には、実行制御部101がMOVS命令をデコードした場合に終了コード判定回路110側の入力端子が選択され、実行制御部101がMOVS命令以外の命令をデコードした場合にもう一方の入力端子が選択される。ここで、MOVS命令とは、所定の識別コードを含むデータのデータ転送処理を行うために新規に定義された転送命令である。   The selector 111 is a 2-input 1-output selector circuit. Selection of the input port of the selector 111 is performed according to a control signal output from the execution control unit 101. Specifically, when the execution control unit 101 decodes the MOVS instruction, the input terminal on the end code determination circuit 110 side is selected, and when the execution control unit 101 decodes an instruction other than the MOVS instruction, the other input terminal is selected. Is selected. Here, the MOVS instruction is a transfer instruction newly defined for performing data transfer processing of data including a predetermined identification code.

実行制御部101は、上述した従来の実行制御部701と同様に、命令メモリ71からフェッチした命令をデコードし、命令デコードにより得られた情報に応じて、プログラムカウンタ702、汎用レジスタファイル703、ALU704、セレクタ707及びセレクタ709に対してデータ若しくは制御信号又はこれら両方を出力する。これに加えて、実行制御部101は、命令デコードの結果に応じてセレクタ111に対する制御信号を出力する。   Similar to the above-described conventional execution control unit 701, the execution control unit 101 decodes the instruction fetched from the instruction memory 71, and according to the information obtained by the instruction decoding, the program counter 702, the general-purpose register file 703, and the ALU 704 The data and / or the control signal are output to the selector 707 and the selector 709. In addition to this, the execution control unit 101 outputs a control signal to the selector 111 according to the result of instruction decoding.

なお、図1に示したその他の構成要素は、従来のマイクロコンピュータ70が有するものと同一であるため、これらの構成要素には同一の符号を付与し、これらに関する詳細な説明を省略する。   The other constituent elements shown in FIG. 1 are the same as those of the conventional microcomputer 70, and therefore, the same reference numerals are given to these constituent elements, and detailed description thereof will be omitted.

続いて、実行制御部101における命令デコード結果に応じたセレクタ707及び111の動作について、図2を用いて説明する。図2(a)は、ADD命令等の算術演算命令及びMOVS命令を除く他の命令がデコードされた場合におけるセレクタ707及び111の選択状態を示している。このときは、Zフラグ706の格納値が維持されるように、Zフラグ706に保持されている値がZフラグ706に繰り返し入力される。   Next, the operation of the selectors 707 and 111 according to the instruction decoding result in the execution control unit 101 will be described with reference to FIG. FIG. 2A shows a selection state of the selectors 707 and 111 when an arithmetic operation instruction such as an ADD instruction and an instruction other than the MOVS instruction are decoded. At this time, the value held in the Z flag 706 is repeatedly input to the Z flag 706 so that the stored value of the Z flag 706 is maintained.

図2(b)は、加算命令(ADD命令)等の算術命令がデコードされた場合におけるセレクタ707及び111の選択状態を示している。このときは、ゼロ判定回路705の判定結果がZフラグ706に入力されるように、セレクタ707及び111が動作する。   FIG. 2B shows a selection state of the selectors 707 and 111 when an arithmetic instruction such as an addition instruction (ADD instruction) is decoded. At this time, the selectors 707 and 111 operate so that the determination result of the zero determination circuit 705 is input to the Z flag 706.

図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 selectors 707 and 111 when the MOVS instruction is decoded. At this time, the selectors 707 and 111 operate so that the determination result of the end code determination circuit 110 is input to the Z flag 706. As a result, since the determination result of the end code determination circuit 110 is held in the Z flag 706, the value of the Z flag 706 indicates whether or not the data read from the data memory 72 and stored in the A register is a NULL character. Can be determined.

図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 microcomputer 10 executes data transfer processing of unconfirmed character string data. The program in FIG. 3 describes the data transfer process by a loop process that repeats the data transfer in units of 1 byte, as in FIG. The first line in FIG. 3 is a mere comment line, similar to the first line in FIG. The MOV instruction on the second line in FIG. 3 is a data transfer instruction, and reads 1-byte data from the storage area of the data memory 72 specified by the 16-bit address stored in the DE register and stores it in the A register. This instruction is the same as the MOV instruction in the second row in FIG.

図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 data memory 72 specified by the 16-bit address stored in the HL register. Shows the processing to be performed.

さらに、図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 code determination circuit 110 is input to the Z flag 706. That is, when the transfer source data stored in the A register is a NULL character (0x00), “1” is set to the Z flag 706, and when the transfer source data is not a NULL character, “0” is set to the Z flag 706. Therefore, in contrast to the program of FIG. 8A, the microcomputer 10 performs processing equivalent to the processing executed by the MOV instruction in the third row and the CMP0 instruction in the fourth row in FIG. It can be executed only by the MOVS instruction on the third line.

図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 Z flag 706 is set to “0”. Is a conditional branch instruction.

このように、本実施の形態にかかるマイクロコンピュータ10は、データメモリ72から汎用レジスタファイル703に転送されたデータとNULL文字との一致を検出する終了コード判定回路110を有している。さらに、汎用レジスタファイル703からデータメモリ72へのデータ転送を指示する所定の転送命令、具体的にはMOVS命令を実行する際に、終了コード判定回路110によるNULL文字の検出を併せて実行し、終了コード判定回路110の検出結果を所定のフラグレジスタ、具体的にはZフラグ706に保持する構成とした。このような構成によって、従来のマイクロコンピュータ70においてNULL文字を検出するために必要であった比較命令の実行が不要となる。つまり、マイクロコンピュータ10は、未確定文字列データのデータ転送処理を実行する際の実行命令数を削減できるため、従来に比べてデータ転送処理の処理効率を向上させることができる。   As described above, the microcomputer 10 according to the present embodiment includes the end code determination circuit 110 that detects a match between the data transferred from the data memory 72 to the general-purpose register file 703 and a NULL character. Furthermore, when executing a predetermined transfer instruction for instructing data transfer from the general-purpose register file 703 to the data memory 72, specifically, a MOVS instruction, the termination code determination circuit 110 also detects a NULL character. The detection result of the end code determination circuit 110 is held in a predetermined flag register, specifically the Z flag 706. With such a configuration, it is not necessary to execute a comparison instruction that is necessary for detecting a NULL character in the conventional microcomputer 70. That is, since the microcomputer 10 can reduce the number of execution instructions when executing the data transfer process of the undetermined character string data, the processing efficiency of the data transfer process can be improved as compared with the related art.

発明の実施の形態2.
本実施の形態にかかるマイクロコンピュータ20は、データメモリ72と汎用レジスタファイル703の間でのデータ転送を2バイト単位で実行するのに適した構成となるように、上述したマイクロコンピュータ10を改良したものである。本実施の形態にかかるマイクロコンピュータ20の構成を図4に示す。
Embodiment 2 of the Invention
The microcomputer 20 according to the present embodiment has improved the microcomputer 10 described above so as to have a configuration suitable for executing data transfer between the data memory 72 and the general-purpose register file 703 in units of 2 bytes. Is. FIG. 4 shows the configuration of the microcomputer 20 according to this embodiment.

図4において、終了コード判定回路210及び211は、上述した終了コード判定回路110と同様の回路である。つまり、終了コード判定回路210及び211は、入力されるデータと、ブロックデータの終了位置を示す終了コードとの一致を検出する回路である。具体的には、終了コード判定回路210及び211は、入力されるデータがNULL文字と一致する場合に"1"を出力し、NULL文字と一致しない場合に"0"を出力する。   In FIG. 4, end code determination circuits 210 and 211 are the same circuits as the end code determination circuit 110 described above. That is, the end code determination circuits 210 and 211 are circuits that detect a match between the input data and the end code indicating the end position of the block data. Specifically, the end code determination circuits 210 and 211 output “1” when the input data matches the NULL character, and outputs “0” when the input data does not match the NULL character.

終了コード判定回路210には、Xレジスタに格納されたデータが入力される。一方、終了コード判定回路211には、Aレジスタに格納されたデータが入力される。これは、後述するように、文字列データのデータ転送処理を実行する際にデータメモリ72から取得した2バイトデータを格納するレジスタをAレジスタ及びXレジスタに固定しているためである。なお、終了コード判定回路210及び211の入力元の変更が適宜可能であることは、発明の実施の形態1において終了コード判定回路110に関して述べた通りである。   The data stored in the X register is input to the end code determination circuit 210. On the other hand, the data stored in the A register is input to the end code determination circuit 211. This is because, as will be described later, the registers for storing the 2-byte data acquired from the data memory 72 when executing the data transfer process of the character string data are fixed to the A register and the X register. Note that the input source of the end code determination circuits 210 and 211 can be changed as appropriate, as described for the end code determination circuit 110 in the first embodiment of the invention.

OR回路212は、終了コード判定回路210及び211の出力信号を入力し、これらのOR判定(論理和演算)結果を出力する。つまり、Aレジスタ及びXレジスタの格納データの少なくとも一方がNULL文字であるために終了コード判定回路210及び211の少なくとも一方の出力が"1"になったとき、OR回路212の出力が"1"になる。   The OR circuit 212 receives the output signals of the end code determination circuits 210 and 211 and outputs the result of these OR determinations (logical sum operation). That is, when at least one of the data stored in the A register and the X register is a NULL character, when the output of at least one of the end code determination circuits 210 and 211 is “1”, the output of the OR circuit 212 is “1”. become.

セレクタ213及びセレクタ214は、それぞれ2入力1出力のセレクタ回路である。セレクタ213及び214の入力ポートの選択は実行制御部201が出力する制御信号に応じて行われる。具体的には、実行制御部201がMOVS命令をデコードした場合、セレクタ213は終了コード判定回路210側の入力端子を選択し、セレクタ214はOR回路212側の入力端子を選択する。一方、実行制御部201がMOVS命令以外の命令をデコードした場合、セレクタ213及び214はもう一方の入力端子を選択さする。   Each of the selector 213 and the selector 214 is a 2-input 1-output selector circuit. Selection of input ports of the selectors 213 and 214 is performed according to a control signal output from the execution control unit 201. Specifically, when the execution control unit 201 decodes the MOVS instruction, the selector 213 selects the input terminal on the end code determination circuit 210 side, and the selector 214 selects the input terminal on the OR circuit 212 side. On the other hand, when the execution control unit 201 decodes an instruction other than the MOVS instruction, the selectors 213 and 214 select the other input terminal.

実行制御部201は、上述した従来の実行制御部701と同様に、命令メモリ71からフェッチした命令をデコードし、命令デコードにより得られた情報に応じて、プログラムカウンタ702、汎用レジスタファイル703、ALU704、セレクタ707及びセレクタ709に対してデータ若しくは制御信号又はこれら両方を出力する。これに加えて、実行制御部201は、命令デコードの結果に応じてセレクタ213及び214に対する制御信号を出力する。   Similar to the above-described conventional execution control unit 701, the execution control unit 201 decodes an instruction fetched from the instruction memory 71, and according to information obtained by instruction decoding, a program counter 702, a general-purpose register file 703, and an ALU 704. The data and / or the control signal are output to the selector 707 and the selector 709. In addition to this, the execution control unit 201 outputs a control signal to the selectors 213 and 214 in accordance with the result of instruction decoding.

図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 selectors 707, 709, 213, and 214 when the execution control unit 201 decodes the MOVS instruction. That is, the four selectors 707, 708, 213, and 214 operate so that the output of the end code determination circuit 210 is input to the Z flag 706 and the output of the OR circuit 212 is input to the CY flag 708. Thus, it can be determined from the value of the CY flag 708 that at least one of the 2-byte data read from the data memory 72 and stored in the A register and the X register is a NULL character. Further, it can be determined from the value of the Z flag 706 that the data read from the data memory 72 and stored in the X register is a NULL character.

図6は、未確定文字列データのデータ転送処理をマイクロコンピュータ20によって実行する場合のプログラム例である。図6のプログラムは、図8(b)に示したプログラムと対比すべく記述されたものであって、データ転送処理を4バイト単位のデータ転送を繰り返すループ処理で記述するとともに、データメモリ72から汎用レジスタファイル703へのデータ転送を2バイト単位のデータ転送命令(MOVW命令)を用いて記述している。   FIG. 6 shows an example of a program in the case where the microcomputer 20 executes the data transfer process for the undetermined character string data. The program shown in FIG. 6 is described to be compared with the program shown in FIG. 8B, and the data transfer process is described by a loop process that repeats data transfer in units of 4 bytes. Data transfer to the general-purpose register file 703 is described using a 2-byte data transfer instruction (MOVW instruction).

図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 data memory 72 specified by the 16-bit address obtained by adding the offset value “0” to the stored value of the DE register and storing it in the AX register.

図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 data memory 72 specified by the 16-bit address obtained by adding the offset value “0” to the stored value of the HL register. The process to transfer is shown. Further, when the MOVS instruction on the third line in FIG. 6 is executed, the determination result of the end code determination circuit 210 is input to the Z flag 706 and the output of the OR circuit 212 is output as described with reference to FIG. This is input to the CY flag 708.

図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 microcomputer 20 can execute processing corresponding to the conventional three instructions with one instruction by the MOVS instruction in the third row of FIG.

図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 CY flag 708 is “1”. That is, the BC instruction is an instruction for ending the loop process when it is determined that at least one of the data stored in the A register and the X register is a NULL character. This BC instruction corresponds to two BZ instructions on the fifth and eighth lines in FIG. In this embodiment, since the OR determination result for the 2-byte data stored in the A register and the X register is set in the CY flag 708, the end of the loop can be determined only by one conditional branch instruction (BC instruction). .

図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 data memory 72 specified by the 16-bit address obtained by adding the offset value “1” to the stored value of the HL register. The process to transfer is shown. This is the same as the MOV instruction on the sixth line in FIG.

図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 CY flag 708, and moves leftward the number of times specified by the second operand (that is, once). The command to rotate. Note that when the ROLWC instruction on the 20th line is executed, “1” is set in the CY flag 708. Therefore, by executing the ROLWC instruction, the contents of the BC register are shifted leftward, and “1” is set in the LSB (Least Significant Bit) of the C register. That is, if the original BC register value is n in decimal notation, the value of the BC register is updated to 2n + 1 by the execution of the ROLWC instruction on the 20th line.

図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 data memory 72. Specifically, the SKZ instruction on the 21st line is an instruction to skip the subsequent one instruction when the value of the Z flag 706 is “1”. On the other hand, the value of the Z flag 706 being “0” means that the data stored in the A register is a NULL character indicating the end of the undetermined character string data. Therefore, when the value of the Z flag 706 is “0”, the value of the A register is transferred to the data memory 72 by the MOV instruction on the 22nd line.

本実施の形態にかかるマイクロコンピュータ20は、従来のマイクロコンピュータ70においてNULL文字を検出ために必要であった比較命令の実行が不要となる。つまり、マイクロコンピュータ20は、未確定文字列データのデータ転送処理を実行する際の実行命令数を削減できるため、従来に比べてデータ転送処理の処理効率を向上させることができる。   The microcomputer 20 according to the present embodiment does not need to execute a comparison instruction that is necessary for detecting a NULL character in the conventional microcomputer 70. That is, since the microcomputer 20 can reduce the number of execution instructions when executing the data transfer processing of the undetermined character string data, the processing efficiency of the data transfer processing can be improved as compared with the conventional case.

さらに、マイクロコンピュータ20は、データメモリ72と汎用レジスタファイル703の間で2バイト単位でのデータ転送を行うこととしている。文字データの構成単位である1バイト単位より大きな2バイト単位でデータ転送を行うと、転送データ単位の途中で文字列データが終了する可能性がある。このため、2バイト単位でデータメモリ72から読み出されたデータのどちらがNULL文字であるかを判定する必要がある。   Further, the microcomputer 20 performs data transfer in units of 2 bytes between the data memory 72 and the general-purpose register file 703. If data transfer is performed in units of 2 bytes larger than the 1-byte unit that is the constituent unit of character data, there is a possibility that the character string data will end in the middle of the transfer data unit. For this reason, it is necessary to determine which of the data read from the data memory 72 in units of 2 bytes is a NULL character.

この判定を行うために、マイクロコンピュータ20は、複数のフラグによってNULL文字位置の識別ができるよう構成されている。具体的には、Aレジスタ及びXレジスタに読み出されたデータのうちの少なくとも一方がNULL文字であるか否かの判定結果をCYフラグ708に設定し、Xレジスタに格納されたデータがNULL文字であるか否かの判定結果をZフラグ706に設定する。つまり、2つのフラグのうちの一方(CYフラグ708)を2バイトデータに対するOR判定結果に応じてセットする構成としている。   In order to make this determination, the microcomputer 20 is configured so that a NULL character position can be identified by a plurality of flags. Specifically, the determination result whether or not at least one of the data read to the A register and the X register is a NULL character is set in the CY flag 708, and the data stored in the X register is set to a NULL character. Is set in the Z flag 706. That is, one of the two flags (CY flag 708) is set according to the OR determination result for the 2-byte data.

このような構成により、図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 CY flag 708 that is set according to the OR determination for the 2-byte data, such as the BC instructions in the fourth and eighth lines in FIG. Therefore, it is possible to determine the end of the loop processing. That is, two conditional branch instructions for the Z flag 706 and the CY flag 708 are not required when determining the end of the loop processing. Therefore, it is possible to further improve the efficiency of the data transfer process of the undetermined character string data.

なお、本実施の形態では、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 Z flag 706 and CY flag 708. However, an independent flag register may be provided without being shared with these. Further, the registers of the general-purpose register file 703 may be assigned to these flag registers. However, if the existing Z flag 706 and CY flag 708 are used, an instruction group prepared for an existing instruction set such as the BZ instruction and the BC instruction described above can be used. For this reason, there is an advantage that the development burden when the present invention is applied to an existing microcomputer can be reduced.

発明の実施の形態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 code detection circuits 110, 210, and 211 in accordance with the execution of the data transfer command from the general-purpose register file 703 to the data memory 72 It has been described that the data is output to the CY flag 708. However, in conjunction with the execution of the data transfer instruction from the data memory 72 to the general-purpose register file 703 prior to this transfer instruction, the detection results of the end code detection circuits 110, 210 and 211 are stored in the Z flag 706 or the CY flag 708. It may be output.

発明の実施の形態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 code determination circuits 110, 210, and 211 may detect the end code corresponding to the undetermined block data to be subjected to data transfer processing.

発明の実施の形態1及び2では、マイクロコンピュータ10及び20の外部にデータメモリ72が存在する構成を示した。しかしながら、例えば、データメモリ72を含めて1チップに集積されたマイクロコンピュータなど、データメモリ72がマイクロコンピュータ10及び20の内部に存在する構成としてもよい。つまり、本発明は、発明の実施の形態1及び2に示した具体的な実装に限られず、様々な実装形態のマイクロコンピュータに適用可能である。   In the first and second embodiments, the configuration in which the data memory 72 exists outside the microcomputers 10 and 20 has been described. However, for example, the data memory 72 may be present inside the microcomputers 10 and 20 such as a microcomputer integrated on one chip including the data memory 72. That is, the present invention is not limited to the specific implementation shown in Embodiments 1 and 2 of the invention, and can be applied to microcomputers of various implementation forms.

発明の実施の形態1及び2では、データメモリ72を不確定ブロックデータの転送元及び転送先とするデータ転送処理について説明した。しかしながら、不確定ブロックデータの転送元若しくは転送先、又は転送元及び転送先の両方が命令メモリ71であってもよい。例えば、命令メモリ71内にテーブルデータとして格納されたデータを汎用レジスタファイル703にロードし、これを他のメモリ(例えば、データメモリ72)に転送するデータ転送処理に本発明を適用することができる。   In the first and second embodiments of the invention, the data transfer process using the data memory 72 as the transfer source and transfer destination of the indeterminate block data has been described. However, the instruction memory 71 may be the transfer source or transfer destination of the indeterminate block data, or both the transfer source and the transfer destination. For example, the present invention can be applied to data transfer processing in which data stored as table data in the instruction memory 71 is loaded into the general-purpose register file 703 and transferred to another memory (for example, the data memory 72). .

さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。   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.

発明の実施の形態1にかかるマイクロコンピュータの構成図である。It is a block diagram of the microcomputer concerning Embodiment 1 of invention. 発明の実施の形態1にかかるマイクロコンピュータの動作を説明するための図である。It is a figure for demonstrating operation | movement of the microcomputer concerning Embodiment 1 of invention. 発明の実施の形態1にかかるマイクロコンピュータにデータ転送処理を行わせるためのプログラム記述例である。It is an example of a program description for making the microcomputer concerning Embodiment 1 perform a data transfer process. 発明の実施の形態2にかかるマイクロコンピュータの構成図である。It is a block diagram of the microcomputer concerning Embodiment 2 of invention. 発明の実施の形態2にかかるマイクロコンピュータの動作を説明するための図である。It is a figure for demonstrating operation | movement of the microcomputer concerning Embodiment 2 of invention. 発明の実施の形態2にかかるマイクロコンピュータにデータ転送処理を行わせるためのプログラム記述例である。It is an example of a program description for making the microcomputer concerning Embodiment 2 perform a data transfer process. 従来のマイクロコンピュータの構成図である。It is a block diagram of the conventional microcomputer. 従来のマイクロコンピュータにデータ転送処理を行わせるためのプログラム記述例である。It is an example of a program description for causing a conventional microcomputer to perform data transfer processing.

符号の説明Explanation of symbols

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 Microcomputer 101, 201 Execution control unit 110, 210, 211 End code determination circuit 111, 213, 214 Selector 212 OR circuit 71 Instruction memory 72 Data memory 73 Address bus 74 Data bus 702 Program counter (PC)
703 General-purpose register file 704 Arithmetic logic unit (ALU)
705 Zero determination circuit 706 Zero flag (Z flag)
707, 709 Selector 708 Carry flag (CY flag)
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のデータ格納部から前記第2のデータ格納部にデータを出力する命令の実行に併せて、前記第1のデータ格納部に格納済みのデータが所定の識別コードであるか否かを検出する請求項1に記載のマイクロコンピュータ。   The detection circuit is configured to execute a command for outputting data from the first data storage unit to the second data storage unit, and to store data stored in the first data storage unit with a predetermined identification code. The microcomputer according to claim 1 which detects whether or not there is. 前記演算部による演算結果がゼロであることを記憶するゼロフラグと、
前記演算部による演算結果におけるキャリー又はボローの発生を記憶するキャリーフラグとをさらに備え、
前記検出回路の検出結果が、前記ゼロフラグ及び前記キャリーフラグの少なくとも一方に記憶される請求項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に記載のマイクロコンピュータ。   The detection circuit, when data longer than the data length of the identification code is batch transferred to the first data storage unit, a determination result indicating that at least the identification code is included in the batch transferred data; 2. The microcomputer according to claim 1, wherein the microcomputer outputs a determination result for specifying a position of the identification code in the collectively transferred data. 前記識別コードは、転送すべきデータ長が予め決まっていないブロックデータの終了位置を示すデータ列である請求項1乃至4のいずれかに記載のマイクロコンピュータ。   5. The microcomputer according to claim 1, wherein the identification code is a data string indicating an end position of block data whose data length to be transferred is not predetermined. 前記第1のデータ格納部は前記演算部に対する入力データ及び前記演算部の出力データの格納場所として使用される汎用レジスタであり、前記第2のデータ格納部はデータメモリである請求項1に記載のマイクロコンピュータ。   The first data storage unit is a general-purpose register used as a storage location for input data to the calculation unit and output data of the calculation unit, and the second data storage unit is a data memory. Microcomputer. 転送すべきデータ長が予め決まっていないブロックデータの転送処理を行うマイクロコンピュータであって、
第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:
前記検出回路は、前記第1のデータ格納部にデータを入力する転送命令又は前記第1のデータ格納部からデータを出力する命令の実行に応じて、前記終了コードの検出を行う請求項7に記載のマイクロコンピュータ。   8. The detection circuit according to claim 7, wherein the detection circuit detects the end code in response to execution of a transfer instruction for inputting data to the first data storage unit or an instruction for outputting data from the first data storage unit. The microcomputer as described. 前記検出回路は、前記終了コードのデータ長より長いデータが前記第1のデータ格納部に一括転送される場合に、一括転送されたデータ内に少なくとも前記終了コードが含まれることを示す判定結果と、一括転送されたデータ内の前記終了コードの位置を特定するための判定結果とを出力する請求項7に記載のマイクロコンピュータ。   The detection circuit includes a determination result indicating that at least the end code is included in the batch transferred data when data longer than the data length of the end code is batch transferred to the first data storage unit. 8. The microcomputer according to claim 7, wherein the microcomputer outputs a determination result for specifying a position of the end code in the collectively transferred data.
JP2006260017A 2006-09-26 2006-09-26 Microcomputer Pending JP2008083762A (en)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016214339A (en) * 2015-05-15 2016-12-22 株式会社藤商事 Game machine

Citations (3)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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