마이크로프로세서

申请号 KR1019950011785 申请日 1995-05-13 公开(公告)号 KR100196270B1 公开(公告)日 1999-06-15
申请人 미쓰비시덴키 가부시키가이샤; 미쓰비시덴키 세미컨덕터 소프트웨어 가부시키가이샤; 发明人 다떼이시히로시; 다까하시히로끼; 나까무라가즈오;
摘要 마이크로프로세서에 관한 것으로써 마이크로프로세서내에서 처리하는 데이타의 단위보다도 적은 비트수로 레지스터 사이 또는 레지스터와 메모리 사이에서 데이타를 전송하는 경우에 한번의 명령의 실행으로 전송처리를 완료시키는 것에 의해 메모리의 사용효율을 높여 데이타전송을 위한 실행시간(머신사이클수)을 단축하기 위해서 M비트에이타(M은 정수)의 일부의 N비트의 전송원데이타(N은 정수)를 전송하기 위한 하나의 전송명령을 받고, 이 전송명령에 따라서 전송원이 제1기억수단에 기억되어 있는 N비트의 전송원데이타를 전송지인 제2기억수단의 전송지어드레스로 전송시키는 제어수단을 구비한다.
이러한 구성으로 하는 것에 의해 메모리를 다른 메모리처리를 위해서 사용할 수 있어 메모리의 사용효율을 높일 수 있고, 마이크로프로세서에 있어서의 데이타전송을 위한 실행시간을 단축할 수 있다.
权利要求
  • 마이크로프로세서의 제1레지스터에 기억되어 있는M비트 데이타의 N비트(N 및 M은 정수, NM)를 외부 메모리의 임의 의M비트 데이타 영역으로 전송하는 마이크로프로세서로서,[a] 상기 마이크로프로세서의 연산을 제어하도록 제어신호를 생성하는 제어회로, [b] 적어도 상기 제1 레지스터 및 제2레지스터를 포함하는 레지스터군, [c] 상기 레지스터군에 연결된 제1 오퍼랜드버스 및 제2 오퍼랜드버스, [d] 상기 제1 및 제2 오퍼랜드버스에 접속되고, 상기 제1오퍼랜드버스를 겨쳐서 제1 레지스터에서 입력된 상기 M비트 데이타에 제1 연산을 실행하는 ALU, [e] 상기 ALU 및 상기 제2 레지스터에 연결된 디스티네이션버스, [f] 상기 제1 및 제2 오퍼랜드버스에 접속되고, 상기 M비트 데이타의 MN 또는 N비트를 마스크하기 위한 소정의 마스크 데이타를 생성하고 이 마스크 데� ��타를 상기 제1 또는 제2 오퍼랜드버스를 거쳐서 상기 ALU로 출력하는 마스크R0M 및 [g] 상기 제1 및 제2 오퍼랜드버스와 디스티네이션버스에 접속되고, 상기외부메모리에서 M비트 데이타를 수신하고 상기 M비트 데이타를 상기 제1 또는 제2 오퍼랜드버스를 거쳐서 상기 AUL로 출력하는 메모리 데이타 레지스터를 포함하며, 상기 ALU는 디스티네이션버스를 거쳐서 상기 제2 레지스터로 제1 연산결과를 출력하고, 상기 ALU는 상기 제2 레지스터에 기억되어 있는 상기 제1 연산결과와 상기 소정의 마스크 데이타 사이의 연산을 실행하고, 상기 제2 레지스터에 저장되어 있는 제2 연산결과를 상기 디스티네이션버스를 거쳐서 출력하고, 상기 ALU는 상기 M비트데이타와 상기 소정의 마스크 데이타 사이의 제3연산을 실행하고 제3 연산결과를 상기 디스티네이션버스로 출� ��하는 것을 특징으로 하는 마이크로프로세서.
  • 마이크로프로세서의 제1 레지스터에 기억되어 있는 M비트 데이타의 N비트(N 및 M은 정의 정수, NM)를 외부 메모리의 임의의 M비트 데이타 영역으로 전송하는 마이크로프로세서로서, 상기 마이크로프로세서의 연산을 제어하도록 제어신호를 생성하는 제어회로, 제2 레지스터, 상기 제1 레지스터 및 상기 제2 레지스터에 연결된 제1 오퍼랜드버스 및 제2 오퍼랜드버스, 상기 제1 및 제2 오퍼랜드버스에 접속되고, 데이타의MN 또는 N비트를 마스크하기 위한 소정의 마스크 데이타를 생성하는 마스크R0M, 상기 제1 및 오퍼랜드버스에 접속되고, 제1 레지스터에서 수신된 M비트 데이타와 상기 소정의 마스크데이타에 제1 연산을 실행하고, 제1 연산결과를 출력하는 ALU 및 상기 제1 및 제2 오퍼랜드버스와 디스티네이션버스에 접속되고, 상기 외부 메모리에서 M비트 데이� ��를 수신하고 상기 M비트 데이타를 상기 제1 또는 제2오퍼랜드버스를 거쳐서 상기 ALU로 출력하는 메모리 데이타 레지스터를 포함하며, 상기 제1 연산결과는 상기 제2 레지스터에 일시 기억되고, 상기 ALU는 상기 M 비트데이타와 상기 소정의 마스크 데이타 사이의 제2연산을 실행하고 제2 연산결과를 상기 디스티네이션버스로 출력하는 것을 톡징으로 하는 마이크로프로세서.
  • 마이크로프로세서의 제1 레지스터에 기억되어 있는 M비트 데이타의N비트(N및 M은 정의 정수, NM)를 외부 메모리의 임의의 M비트 데이타 영역으로 전송하는 방법으로서, 상기 외부메모리로부터의 명령을 수신하고 해독하는 공정, 제1 레지스터에서 산술논리유닛(ALU)로 입력된 M비트 데이타에 제1 논리연산을 실행하고 제1 연산결과를 생성하는 공정, 상기 제1 연산결과를 디스티네이션버스를 거쳐서 출력하고 상기 제1 연산결과를 제2 레지스터에 일시 기억하는 공정, 마스크R0M에 기억되어 있는 소정의 마스크 데이타를 발생하고 이 소정의 마스크 데이타를 상기 마스크R0M에서 상기 ALU로 출력하는 공정, 상기 제2 레지스터에 기억되어 있는 상기 제1 연산결과와 상기 마스크R0M에서 상기ALU로 입력된 상기 소정의 마스크 데이타 사이의 제2 논리연산을 실행하고 � ��기 디스티네이션버스로 제2 연산결과를 출력하는 공정, 상기 제2 레지스터에 상기 제2 연산결과를 기억하는 공정, 상기 외부메모리에서 상기 제1 및 제2 오퍼랜드버스와 상기 디스티네이션버스에 접속된 메모리 데이타 레지스터로 M 비트 데이타를 전송하는 공정 및 상기 메모리 데이타 레지스터로부터의 M비트 데이타와 상기 마스크R0M에서 상기 ALU로 입력된 상기 소정의 마스크 데이타 사이의 제3 논리연산을 실행하는 공정을 포함하고, 상기 제1 및 제2 레지스터와 ALU에는 제1 오퍼랜드버스 및 제2 오퍼랜드버스가 각각 연결되어 있고, 상기 마스크 R0M은 상기 제1 및 제2 오퍼랜드버스에 접속되어 상기 마스크 데이타를 상기 마스크 R0M에서 상기 제1 또는 제2 오퍼랜드버스를 거쳐서 상기 ALU로 전송하는 데이타 전송방법.
  • 마이크로프로세서의 제1 레지스터에 기억되어 있는 M비트 데이타의 N비트(N 및 M 은 정의 정수, NM)를 외부 메모리의 임의의 M비트 데이타 영역으로 전송하는방법으로서, 상기 외부메모리로부터의 명령을 수신하고 해독하는 공정, 마스크R0M에 기억되어 있는 소정의 마스크 데이타를 발생하고 상기 소정의 마스크데이타를 상기 마스크R0M에서 산술논리연산(ALU)로 출력하는 공정, 상기 제1 레지스터로부터의 M비트 데이타와 상기 마스크R0M에서 상기ALU로 입력된 상기 소정의 마스크 데이타에 제1 논리연산을 실행하고 제1 연산결과를 생성하는 공정, 상기 제1 연산결과를 디스티네이션버스를 거쳐서 출력하고 상기 제1 연산결과를 제2 레지스터에 일시 기억하는 공정 및 메모리 데이타 레지스터로부터의 M비트 데이타 상기 마스크R0M에서 상기 ALU로 입력된 상기 � �정의 마스크 데이타 사이의 제2 논리연산을 실행하고, 상기 메모리 데이타 레지스터에 기억되어 있는 제2 연산결과를 상기 디스티네이션버스를 거쳐서 발생하는 공정을 포함하고, 상기 제1 및 제2 레지스터, 상기 마스크R0M 및 ALU에는 제1 오퍼랜드버스 및 제2 오퍼랜드버스가 각각 연결되어 있고, 상기 마스크R0M은 상기 마스크 데이타를 상기 마스크R0M에서 상기 제1 또는 제2 오퍼랜드버스를 거쳐서 상기 ALU로 전송하는 데이타 전송방법.
  • 说明书全文

    마이크로프로세서

    제1도는 본 발명의 마이크로프로세서의 구성을 도시한 도면.

    제2도는 제1도의 제어부(9)의 내부를 도시한 도면.

    제3도는 본 발명의 MOVHL명령의 동작을 도시한 도면.

    제4도는 본 발명의 MOVHL 명령의 동작을 도시한 도면.

    제5도는 본 발명의 MOVLH명령의 동작을 도시한 도면.

    제6도는 본 발명의 MOVLL명령의 동작을 도시한 도면.

    재7도는 종래의 마이크로프로세서의 내부를 설명한 도면.

    제8도는 제7도의 마이크로프로세서(1)에서 동작하는 프로그램을 도시한 도면.

    제9도는 레지스터등에 기억되어 있는 8비트데이타에 있어서 상위 하위가 어느쪽인지를 도시한 도면.

    제10도는 제7도에 도시된 디코드회로(13)을 상세하게 도시한 도면.

    * 도면의 주요부분에 대한 부호의 설명

    1 : 마이크로프로세서 2 : 외부메모리

    4 : ALU 5 : 제14오퍼랜드버스

    6 : 제2오퍼랜드버스 7 : 디스티네이션버스

    8 : 메모리데이타레지스터 9 : 제어수단

    10 : 연산제어신호 11 : 입출력제어신호

    12 : 선택신호 13 : 디코드회로

    18 : 디코드회로 14 : 선택제어신호

    15 : 버스 16 : 레지스터군

    17 : 마스크R0M 19 : 마이크로R0M

    본 발명은 마이크로프로세서에 관한 것으로써, 특히 마이크로프로세서내에서 처리되는 데이타의 단위보다도 적은 비트수를 레지스터 사이 또는 레지스터와 메모리 사이에서 데이타를 전송하는 경우의 고속화에 관한 것이다.

    종래의 마이크로프로세서에 있어서, 예를 들면 8비트의 마이크로프로세서이면 8비트 단위에서의 데이타의 연산이나 전송의 처리가 실행되고 있었다. 그 때문에 4비트로 처리가능한 경우도 8비트단위로 처리할 필요가 있었다.

    휴대전화등의 전화기에서는 전화의 다이얼이 0~9의 10진수이고 이 10진수가 여러자리수 모여서 전화번호를 구성하고 있다. 전화번호의 1자리수를 「1」, 「0」의 디지탈값으로 표현하면 2진수로 4비트(16종류의 표현이 가능)이면 전화번호의 1자리수가 표현가능하다.

    예를들면 전화기에 내장된 8비트처리단위의 마이크로프로세서와 1어드레스당 8비트데이타로써 전화번호가 기억되어 있는 메모리 사이에서 데이타전송을 실행하고, 전화번호 1자리수의 데이타갱신을 실행하는 경우, 메모리의 해당하는 어드레스의 4비트만을 즉시 변경할 수 없고, 마이크로프로세서와 메모리 사이에서 8비트의 버스를 거쳐서 여러회, 8비트 단위의 데이타처리를 실행한 후에, 최종적으로 1어드레스내의 4비트만 갱신이 실행된다.

    제7도는 종래의 마이크로프로세서의 내부를 설명한 도면이다.

    (1)은 8비트 단위로 데이타를 처리하기 위한 마이크로프로세서,(2)는 마이크로프로세서와 접속된 외부메모리이고, 1어드레스당 8비트 단위로 데이타가 기억되어 있다.(3)은 제지스터군이고 어큐뮬레인터A, 어큐뮬레이터B, 인덱스레지스터X 및 인덱스레지스터Y를 구비하고, 연산처리에 필요한 데이타를 일시 기억한다. 이들레지스터도 외부메모리와 마찬가지로 8비트 단위로 데이타가 일시기억된다.(4)는 연산수단으로써의 연산유닛(이하, ALU라고 한다)이고, 레지스터군(3)과는 제1오퍼랜드버스(5)및 제2오퍼랜드버스(6)을 거쳐서 접속되어 있다. ALU(4)는 제1오퍼랜드버스(5) 및 제2오퍼랜드버스(6)을 거쳐서 부여되는 오퍼랜드에 대해서 오퍼랜드의 비트시프트 및 2개의 오퍼랜드의 논리합논리곱등의 연산을 실행하고, 그 결과를 디스티네이션버스(7)로 출력한다.(8)은 메모리데이타레지스터이고, 마이크로프로세서(1)과 외부메모리(2)사이에서 수수되는 데이타를 일시 기억하기위한 것이다. 디스티네이션버스(7)은 ALU(4), 레지스터군(3)및 메모리데이타레지스터(8)을 각각 접속하고, 메모리데이타레지스터(8)또는 레지스터군(3)에서 ALU(4)로 오퍼랜드를 출력시킨다. (9)는 랜덤로직 또는 마이크로프로그램에 의해 구성된 제어부이고, 마이크로프로세서(1)내부의 각 회로를 제어한다. 제어부(9)에서는 ALU(4)에 대해서 처리내용을 지시하는 연산제어신호(10)이 출력되고, 메모리데이타레지스터(8)에 대해서는 데이타의 입출력의 제어를 실행하기위한 입출력제어신호(11)이 출력되고, 레지스터군(3)에 대해서는 레지스터를 선택하기 위한 선택신호(12)가 각각 출력된다.

    (13)은 디코드회로이고,제어부(9)로 부터의 선택신호(12)를 수신하고, 레지스터군(3)내의 각 레지스터를 선택하기 위한 선택제어신호(14)를 레지스터군(3)으로 출력한다. 디코드회로(13)으로 부터의 디코드결과는 레지스터군(3)중 어느 레지스터에서 제1오퍼랜드버스(5)또는 제2오퍼랜드버스(6)로 출력시킬지를 결정하거나 디스티네이션버스(7)로 부터의 데이타를 레지스터군(3)중 어느 레지스터에 입력시킬지를 결정한다.(15)는 외부메모리(2)와 메모리데이타레지스터(8)을 접속하는 버스이다.

    제8도는 제7도의 마이크로프로세서(1)에서 동작하는 프로그램을 도시한 도면이다. 이 프로그램은 8비트단위로 처리가 실행되는 마이크로프로세서(1)에 있어서, 마이크로프로세서(1)과 외부메모리(2)사이에서 4비트의 데이타 전송을 실행시키기 위한 것이다. 프로그램은 어셈블리언어로 기술되어 있다.

    1행째의 LDA(Load Accumulator with memory)명령은 리드명령이고, 외부메모리(2)의 ZZ번지의 데이타8비트를 어큐뮬레이터A 또는 B에 기억시키는 명령이다. 어큐뮬레이터A인지, 어큐뮬레이터B인지는 제어부(9)로 부터의 선택신호(12)에 따른 선택제어신호(14)에 의해 선택된다. 이 경우 어큐뮬레이터A에 기억되었다고 한다. $는 외부메모리(2)의 어드레스를 나타낸다.

    2행째의 AND(logical AND)명령은 논리곱명령이고, 어큐뮬레이터A에 기억된 8비트데이타와 이미디어트데이타 F0 (16) 과의 논리곱연산을 실행하고, 어큐뮬레이터A의 하위4비트를 마스크한다. 그 연산결과는 디스티네이션버스(7)을 거쳐서 어큐뮬레이터A에 기억시킨다. #$는 이미디너트데이타를 나타낸다.

    3행째의 STA(Store Accumulator im memory)명령은 외부메모리(2)로의 데이타기억명령이고, 상기의 마스크후의 8비트데이타를 메모리데이타레지스터(8)을 거쳐서 외부메모리(2)의 ZY어드레스에 기억시킨다.

    4행째의 TXA(Transfer index X to Accumulator)명령은 레지스터사이의 전송명령이고, 인덱스레지스터X에 기억되어 있는 8비트데이타를 어큐뮬레이터A에 기억시킨다. 이 8비트데이타는 제어부(9)에 의해 인덱스레지스터X에 기억되어 있었던 것이다.

    5행째~8행째의 R0R(Rotate One bit Right)명령은 어큐뮬레이터A에 기억되어 있는 8비트데이타를 우측으로 1비트 회전시키는 것이다. 이것을 4회 반복하면 어큐뮬레이터A의 상위4비트의 데이타가 하위4비트로 이동한다.

    9행째의 AND명령은 어큐뮬레이터A에 기억되어 있는 8비트데이타와 이미디어트데이타0F (16) 과의 논리곱연산을 실행하고, 어큐뮬레이터A의 상위4비트를 마스크한다. 그 연산결과는 디스티네이션버스(7)을 거쳐서 어큐뮬레이터A에 기억시킨다.

    10행째의 ORA(OR memory with Accumulator)명령은 어큐뮬레이터A의 8비트데이타와 외부메모리(2)의 ZY어드레스에 기억된 8비트데이타의 논리합연산을 실행하는 명령이고, 연산결과를 어큐뮬레이터A에 기억시킨다.

    11행째의 STA명령에 의해 어큐뮬레이터A에 기억된 8비트데이타를 외부메모리(2)의 ZZ번지에 기억시킨다.

    제8도의 프로그램의 우측에 각 명령의 바이트수 및 머신사이클수를 나타낸다. 특히 머신사이클수는 그 명령이 마이크로프로세서(1)에서 실행하는데 필요한 시간이다.

    제8도의 프로그램은 외부메모리(2)의 ZZ어드레스의 8비트데이타중, 하위4비트의 내용을 인덱스레지스터X의 상위4비트의 데이타로 변경하기 위한 것이다.

    제9도는 레지스터등에 기억되어 있는 8비트데이타에 있어서, 상위하위가 어느쪽인지를 도시한 도면이다.

    제10도는 제7도에 도시된 디코드회로(13)을 상세하게 도시한 도면이다. 제어부(9)로 부터의 선택신호(12)(P1,P0)을 수신해서 메모리레지스터군(3)의 4개의 레지스터중 어느 것을 선택할지를 나타내는 선택제어신호(14)(S0~S3)을 생성한다.

    종래의 마이크로프로세서는 이상과 같이 구성되어 있었으므로 마이크로프로세서내에서 처리되는 데이타의 단위(예를들면 8비트)보다도 적은 비트수(예를들면 4비트)를 레지스터 사이 또는 레지스터와 메모리 사이에서 데이타를 전송하는 경우, 그실행에 대응한 데이타전송명령이 없으므로 여러회의 명령으로 실행해야만 하고, 1회의 데이타전송에 여러회의 명령을 메모리에 기억시켜 둘 필요가 있어 메모리(R0M)의 사용효율이 나쁘다고 하는 문제점이 있었다.

    또 데이타전송을 위해서 여러회의 명령을 실행한 경우, 그 명령의 실행으로 얻어진 결과를 마이크로프로세서에서 메모리에 순차로 기억시키고 있었으므로 마이크로프로세서에서 메모리로 데이타를 전송시키기 위한 머신사이클수가 필요하게 되어 마이크호프로세서에서의 머신사이클수가 많아진다고 하는 문제점이 있었다.

    본 발명의 목적은 상기와 같은 문제점을 해결하기 위해서 이루어진 것으로 마이크로프로세서에서 처리하는 데이타의 단위보다도 적은 비트수로 레지스터 사이 또는 레지스터와 메모리 사이세서 데이타를 전송하는 경우에 1회의 명령의 실행으로 전송처리를 완료시키는 것에 의해 메모리의 사용효율을 높여 데이타전송을 위한 실행시간(머신사이클수)가 단축된 마이크로세서를 제공하는 것이다.

    본 발명에 관한 마이크로프로세서는 M비트데이타(M은 정수)의 일부인 N비트의 전송원데이타(N은 정수)를 전송하기 위한 하나의 전송명령을 수신하고, 전송명령에 따라서 전송원인 제1기억수단에 기억되어 있는 N비트전송원데이타를 전송지인 제2기억수단의 전송지어드레스로 전송시키는 제어수단을 구비한 것이다.

    또 제어수단은 전송명령을 수신하고 해독하는 디코드회로와 디코드회로로부터의 해독결과를 받고 마이크로프로세서내에서의 전송명령의 실행의 처리순서를 결정한 마이크로프로그램으로 구성된 마니크로R0M 또는 랜덤로직을 구비한 것이다.

    또, 마이크로R0M 또는 랜덤로직은 제1기억수단의 전송원어드레스에 기억되어 있는 M비트의 제1데이타중의 N비트전송원데이타의 기억위치와 제2기억수단의 전송지어드레스의 제2데이타중의 전송지의 기억위치가 일치하도록 제1데이타내에서 N비트데이타를 이동시켜 제1데이타의 N비트전송데이타 이외를 마스크하고, 또 제2데이타의 N비트전송원데이타의 기억위치를 마스크하고, 제1데이타와 제2데이타의 논리연산을 실행하여 그 연산결과를 제2기억수단의 전송지어드레스에 기억시키는 제어를 실행하는 것이다.

    또, 마이크로R0M 또는 랜덤로직은 제1기억수단의 전송원어드레스에 기억되어 있는 M비트의 제1데이타중의 N비트전송원데이타 이외를 마스크하고, 제2기억수단의 전송지어드레스의 제2데이타중의 N비트전송원데이타의 기억위치를 마스크하고, 제1데이타와 제2데이타의 논리연산을 실행하여 그 연산결과를 제2기억수단의 전송지어드레스에 기억시키는 제어를 실행하는 것이다.

    또 제1기억수단은 마이크로프로세서 내부에 마련되고, 제2기억수단은 마이크로프로세서 외부에 마련되고, 마이크로R0M은 전송명령의 실행중의 중간처리결과를 모두 제1기억수단에 기억시키고, 제1데이타와 제2데이타의 논리연산결과만을 제2기억수단으로 출력시키는 것이다.

    또 제1기억수단은 제1데이타가 기억되는 제1레지스터와 전송명령의 실행중의 중간처리결과가 모두 기억되는 제2레지스터를 구비하고 있다.

    그리고 제어수단은 제1데이타의 비트수의 1/2의 비트수를 제1기억수단에서 제2기억수단으로 전송시키는 제어를 실행하는 것이다.

    본 발명에 관한 마이크로프로세서는 제어수단에 의해 하나의 전송 명령으로 마이크로프로세서내에서 처리되는 데이타의 단위보다는 적은 비트수의 데이타를 제1기억수단에서 제2기억수단으로 전송시킨다.

    또 제어수단은 전송명령의 실행중의 중간처리결과를 모두 제1기억수단에 기억시키고, 제1데이타와 제2데이타의 논리연산결과만을 제2기억수단으로 출력시키므로 전송명령을 위한 머신사이클수를 감소시킨다.

    [실시예1]

    제1도는 본 발명의 제1의 실시예인 마이크로프로세서의 구성을 도시한 도면이다. 마이크로프로세서는 8비트단위로 데이타처리를 실행한다. 종래의 마이크로프로세서(1)(제7도)의 레지스터군(3)에는 어큐뮬레이터, 인덱스레지스터가 마련되어 있었지만 본 발명의 레지스터군(16)에는 다음에 설명하는 저송명령의 포맷을 위해서 레지스터R0~R3을 마련하였다. 이 레지스터군(16)에는 종래와 같이 어큐뮬레이터나 인덱스레지스터를 마련해도 좋다.

    (17)은 마스크R0M이고, 제어부(9)로 부터의 신호에 의해 8비트데이타중의 상위4비트를 마스크하는 데이타0F (16) 또는 8비트데이타중의 하위4비트를 마스크하는 데이타 F0 (16) 을 제1오퍼랜드버스(5)또는 제2오퍼랜드버스(6)을 거쳐서 AUL(4)로 출력한다. 제어부(9)는 외부메모리(2)에서 마이크로프로세서(1)이 수신한 명령에 따라서 마이크로프로세서(1)내의 각 장치의 동작의 제어를 실행하기 위한 랜덤로직 또는 마이크로프로그램에 의해 구성되어 있다. 도면중 1~15는 종래장치와 동일 또는 상당하는 부분이다.

    제2도는 제1도의 제어부(9)의 내부를 도시한 도면이다.

    (18)은 디코드회로이고, 외부메모리(2)로 부터의 명령을 페치하여 디코드한다(외부메모리(2)에서 제어부(9)로 출력되는 신호에 대해서는 제7도에서는 생략하였다).(19)는 랜덤로직 또는 마이크로프로그램으로 구성된 마이크로R0M이고, 수신한 디코드결과에 따라서 마이크로프로세서(1)내의 각 장치에 대해서 연산제어신호(10)등의 제어신호를 생성한다. 하나의 명령으로 마이크로프로세서(1)에 있어서 어떠한 처리를 해야할지에 대해서 마이크로R0M(19)로 미리 결정되어 있다.

    다음에 8비트단위로 데이타처리가 실행되는 마이크로프로세서(1)에 있어서, 4비트데이타의 전송에 대해서 그 동작을 설명한다.

    레지스터R0에 기억되어 있는 8비트의 데이타의 상위4비트를 외부메모리2의 임의의 어드레스의 8비트의 영역의 하위4비트의 기억위치로 전송하는 4비트전송명령을 다음에 나타낸다.

    MOVHL R0,[외부메모리어드레스](MOVHL은, MOVe Hige to Low nibble).

    외부메모리(2)의 명령기억영역에서 MOVHL명령을 제어부(9)가 페치하고, MOVHL명령에 따른 마이크로프로그램에 의해 제어부(9)에서 마이크로프로세서(1)내의 각 장치로 제어신호가 출력된다. 레지스터R0에는 예를들면 ALU(4)의 계산결과인 8비트데이타가 기억되어 있는 것으로 한다. 레지스터R3에 대해서 어떠한 8비트데이타가 기억되어 있는 경우는 MOVHL명령이 제어부(9)에서 페치되었을 때에는 오부메모리(2)등에 일시 세이브시킬 필요가 있지만 이 명세서에 있어서는 레지스터R3은 ALU(4)에서의 데이타회전결과를 기억시키는 것으로 한다.

    제3도는 MOVHL명령의 동작을 도시한 것으로 마이크로프로세서(1)내에서의 1머신사이클마다의 동작을 나타내고 있다. 다음의 ①~⑨의 번호는 제3도의 번호에 대응한다.

    ①. 레지스터R0에 기억되어 있는 8비트데이타를 제1오퍼랜드버스 (5)를 거쳐서 ALU(4)에 입력시키고, ALU(4)에 있어서, 우측으로 1비트 회전시켜 그 결과를 디스티네니션버스(7)을 거쳐서 레지스터 R3(일시레지스터)에 기억시킨다. 우측으로 1비트회전시킨다는 것은 모든 비트를 우측으로 이동시켜 언더플로한 비트0을 비트7로 이동시키는 것이다. 또 모든 비트를 우측으로회전시켜 캐리플래그의 내용이 비트(7)로 이동하고, 비트0이 캐리플래그로 입력되는 것이다.

    ②. 레지스터R3에 기억되어 있는 내용을 제1오퍼랜드버스(5)를 거쳐서 ALLU(4)에 입력시키고 8비트데이타를 우측으로 1비트회전시켜, 디스티네이션버스(7)을 거쳐서 레지스터R3에 기억시킨다.

    ③. 상기 ②와 동일한 동작을 실행한다.

    ④. 상기 ②와 동일한 동작을 실행한다.

    ⑤. 레지스터R3에 기억되어 있는 4회 우회전된 8비트데이타를 제1오퍼랜드버스(5)를 거쳐서 또 마스크R0M(17)로 부터의 데이타 0F (16) 을 제2오퍼랜드버스(6)을 거쳐서 각각 ALU(4)에 입력시켜 논리곱연산을 실행하고, 그 연산결과를 디스티네이션버스(7)을 거쳐서 레지스터R3에 기억시킨다.

    마스크R0M17에 기억되어 있는 데이타 F0 (16) 0F (16) 중 어느쪽을 선택할지는 제어부(9)로 부터의 데이타선택신호(20)에 의해 선택된다.

    ⑥. 레지스터R0의 상위4비트를 기억(전송)시키고자 하는 외부메모리(2)의 어드에스에서 8비트데이타를 메모리데이타레지스터(8)에 기억시킨다.

    ⑦. 메모리데이타레지스터(8)에 기억된 상기 8비트데이타를 제1오퍼랜드버스(5)를 거쳐서 또 마스크R0M(17)에서 데이타 F0 (16) 을 제2오퍼랜드버스(6)을 거쳐서 각각 ALU(4)에 입력시켜 논리곱연사을 실행하고, 그 연산결과를 디스티네이션버스(7)을 거쳐서 메모리데이타레지스터(8)에 기억시킨다.

    ⑧. 레지스터R3에 기억되어 있는 8비트데인타를 제1오퍼랜드버스(5)를 거쳐서 또 메모리데이타레지스터(8)에 기억되어 있는 8비트데이타를 제2오퍼랜드버스(6)을 거쳐서 각각 ALU(4)에 입력시켜 논리합연산을 실행하고, 그 결과를 디스티네이션버스(8)을 거쳐서 메모리데이타레지스터(8)에 기억시킨다.

    ⑨. 메모리데이타레지스터(8)에 기억되어 있는 8비트데이타를 상기 ⑥의 외부메모리(2)의 어드레스에 기억시킨다.

    ALU(4)에 있어서 우회전, 논리합연산, 논리곱연산중 어떤 처리를 실행할지는 제어부(9)내에 마련되어 있는 마이크로R0M에서 출력되는 연산제어신호(10)에 의해 결정된다.

    또 1머신사이클이라는 것은 레지스터R0~R3 사이의 데이타전송외부메모리(2)와 마이크로프로세서(1)사이의 데이타전송, ALU(4)에서의 연산등의 하나의 처리기간인 것이다. 데이타전송이나 연산을 위한 버스사용, 연산을 위한 데이타의 리드 및 연산결과의 라이트는 하나의 머신사이클내에서 실행된다.

    이상과 같이 레지스터에 기억되어 있는 데이타8비트의 상위4비트를 오부메모리(2)의 임의의 어드레스의 8비트의 영역의 하위4비트의 기억위치로 전송하는 MOVHL명령하나로 제어부(9)의 랜덤로직 또는 마이크로프로그램에 따라서 상기 1~9(9머신사이클)의 짧은 머신사이클의 기간으로 외부메모리(2)와 마이크로프로세서(1)사이의 4비트데이타의 고속전송을 실행할 수 있다.

    [실시예2]

    다음에 본 발명의 제2의 실시예에 대해서 설명한다. 이 실시예에서는 제1도의 마이크로프로세서(1)에 있어서, 제4도에 도시한 바와 같이 레지스터R0에 기억되어 있는 데아타8비트의 상위4비트를 외부메모리(2)의 임의의 어드레스의 8비트의 영역의 상위4비트의 기억위치로 전송하는 4비트전송명령에 대해서 설명한다. 그 명령을 다음에 기술한다.

    MOVHH R0, [외부메모리어드레스](MOVHH 는 MOVe High to High nibble)

    외부메모리(2)의 명령기억영역에서 MOVHH명령이 제어부(9)에 의해 페치되고, MOVHH명령에 따른 마이크로프로그램에 의해 제어부(9)에서 마이크로프로세서(1)내의 각 장치로 제어신호가 출력된다. 레지스터R0에는 예를들면 ALU(4)의 계산결과인8비트데이타가 기억되어 있는 것으로 한다. 레지스터R3에는 ALU(4)에서의 데이타회전결과를 기억시키는 것으로 한다.

    제4도의 ①~⑤는 MOVHH명령의 동작을 나타낸 것으로 마이크로프로세서(1)내에서의 1머신사이클마다의 동작을 나타내고 있다. 다음의 ①~⑤의 번호는 제4도의 동일번호에 대응한다.

    ① 레지스터R0에 기억되어 있는 8비트데이타를 제1오퍼랜드버스(5)를 거쳐서 또 마스크R0M(17)로 부터의 데이타F0 (16) 을 제2오퍼랜드버스(6)을 거쳐서 각각 ALU(4)에 입력시켜 논리곱연산을 실행하고, 그 연산결과를 디스티네이션버스(7)을 거쳐서 레지스터R3에 기억시킨다.

    ② 레지스터R0의 상위4비트를 기억(전송)시키고자 하는 외부메모리(2)의 어드레스에서 8비트데이타를 메모리데이타레지스터(8)에 기억시킨다.

    ③ 메모리데이타레지스터(8)에 기억된 상기 8비트데이타를 제1오퍼랜드버스(5)를 거쳐서 또 마스크R0M(17)에서 데이타0F (16) 을 제2오퍼랜드버스(6)을 거쳐서 각각 ALU(4)에 입력시켜 논리곱연산을 실행하고, 그 연산결과를 디스티네이션버스(7)을 거쳐서 메모리데이타레지스터(8)에 기억시킨다.

    ④ 레지스터R3에 기억되어 있는 8비트데이타를 제1오퍼랜드버스(5)를 거쳐서 또 메모리데이타레지스터(8)에 기억되어 있는 8비트데이타를 제2오퍼랜드버스(6)을 거쳐서 각각 ALU(4)에 입력시켜 논리합연산을 실행하고, 디스티네이션버스(7)을 거쳐서 메모리데이타레지스터(8)에 기억시킨다.

    ⑤ 메모리데이타레지스터(8)에 기억되어 있는 8비트데이타를 상기 ②의 외부메모리②의 어드레스에 기억시킨다.

    이상과 같이 레지스터에 기억되어 있는 데이타8비트의 상위4비트를 외부메모리(2)의 임의의 어드레스의 8비트의 영역의 상위4비트의 기억위치로 전송시키는 MOVHH명령하나로 제어부(9)의 랜덤로직 또는 마이크로프로그램에 따라서 상기 ①~⑤(5머신사이클)의 짧은 머신사이클의 기간에 외부메모리(2)와 마이크로프로세서(1)사이의 4비트데이타의 고속전송을 실행할 수 있다.

    [실시예3]

    다음에 본 발명의 제3의 실시예에 대해서 설명한다. 이 실시에서는 제1도의 마이크로프로세서(1)에 있어서 제5도에 도시한 바와 같이 레지스터 R0에 기억되어 있는 데이타8비트의 하위4비트를 외부메모리(2)의 임의의 어드레스의 8비트의 영역의 상위4비트의 기억위치로 전송하는 4비트전송명령에 대해서 설명한다. 그 명령을 다음에 기술한다.

    MOVLH R0, [외부메모리어드레스](MMVLH는 MOVe Low to High nibble)

    제5도의 ①~⑨는 MOVLH명령의 동작을 나타내는 것으로 마이크로프로세서(1) 내에서의 1머신사이클마다의 동작을 나타내고 있다. 다음의 ①~⑨의 번호는 제5도의 동일번호에 대응한다.

    ① 레지스터R0에 기억되어 있는 8비트데이타를 제1오퍼랜드버스(5)를 거쳐서 ALU(4)에 입력시키고 ALU(4)에 있어서, 좌측으로 1비트회전시켜 그 결과를 디스티네이션버스(7)을 거쳐서 레지스터R3(일시레지스터)에 기억시킨다. 좌측으로 1비트회전시킨다는 것은 모든 비트를 좌측으로 이동시켜 오버플로우된 비트7을 비트0으로 이동시키는 것이다. 또 모든 비트를 좌측으로 회전시켜 캐리플래그의 내용이 비트0으로 이동하여 오버플로우된 비트7이 캐리플래그에 입력되는 것이다.

    ② 레지스터R3에 기억되어 있는 내용을 제1오퍼랜드버스(5)를 거쳐서 ALL(4)에 입력시키고, ALU(4)에 있어서 8비트에이타를 좌측으로 1비트회전시켜 디스티네이션버스(7)을 거쳐서 레지스터R3에 기억시킨다.

    ③ 상기②와 동일한 동작을 실행한다.

    ④ 상기②와 동일한 동작을 실행한다.

    ⑤ 레지스터R3에 기억되어 있는 4회 좌회전된 8비트데이타를 제1오퍼랜드버스(5)를 거쳐서 또 마스크 R0M(17)로 부터의 데이타 F0 (16) 을 제2오퍼랜드버스(6)을 거쳐서 각각 ALU(4)에 입력시켜 논리곱연산을 실행하고, 그 연산결과를 디스티네이션버스(7)에서 레지스터R3에 기억시킨다.

    ⑥ 레지스터R0의 하위4비트를 기억(전송)시키고자 하는 외부메모리(2)의 어드레스에서 8비트데이타를 메모리데이타레지스터(8)에 기억시킨다.

    ⑦ 메모리데이타레지스터(8)에 기억된 상기 8비트데이타를 제1오퍼랜드버스(5)를 거쳐서 또 마스크R0M(17)에서 데이타0F (16) 을 제2오퍼랜드버스(6)을 거쳐서 각각 ALU(4)에 입력시켜 논리곱연산을 실행하고, 그 연산결과를 디스티네이션버스(7)을 거쳐서 메모리데이타레지스터(8)에 기억시킨다.

    ⑧ 레지스트R3에 기억되어 있는 8비트데이타를 제1오퍼랜드버스(5)를 거쳐서 또 메모리데이타레지스터(8)에 기억되어 있는 8비트데이타를 제2오퍼랜드버스(6)을 거쳐서 각각 ALU(4)에 입력시켜 논리합연산을 실행하고, 디스티네이션버스(8)을 거쳐서 메모리데이타레지스터(8)에 기억시킨다.

    ⑨ 메모리데이타레지스터(8)에 기억되어 있는 8비트데이타를 상기 ⑥의 외부메모리(2)의 어드레스에 기억시킨다.

    이상와 같이 레지스터에 기억되어 있는 데이타8비트의 하위4비트를 외부메모리(2)의 임의의 어드레스의 8비트의 영역의 상위4비트의 기억위치로 전송하는 MOVLH명령하나로 제어부(9)의 랜덤로직 또는 마이크로프로그램에 따라서 상기 ①~⑨(9머신사이클)의 짧은 머신사이클의 기간에 외부메모리(2)와 마이크로프로세서(1)사이의 4비트데이타의 고속전송을 실행할 수 있다.

    [실시예4]

    다음에 본 발명의 제4의 실시예에 대해서 설명한다. 이 실시예에서는 제1도의 마이크로프로세서(1)에 있어서, 제6도에 도시한 바와 같이 레지스터R0에 기억되어 있는 데이타8비트의 하위4비트를 외부메모리(2)의 임의의 어드레스의 8비트의 영역의 하위4비트의 기억위치로 전송하는 4비트전송명령에 대해서 설명한다. 그 명령을 다음에 기술한다.

    MOVLL R0, [외부메모리어드레스](MOVLL은 MOVe Low to Low nibble).

    제6도의 ①~⑤는 MOVLL명령의 동작을 나타낸 것으로 마이크로프로세서(1)내에서의 1머신사이클마다의 동작을 나타내고 있다.

    다음의 ①~⑤의 번호는 제6도의 동일번호에 대응한다.

    ①레지스터R0에 기억되어 있는 8비트데이타를 제1오퍼랜드버스(5)를 거쳐서 또 마스크R0M17로 부터의 데이타0F (16) 을 제2오퍼랜드버스(6)을 거쳐서 각각 ALU(4)에 입력시켜 논리곱연산을 실행하고, 그 연산결과를 디스티네이션버스(7)을 거쳐서 레지스터R3에 기억시킨다.

    ②레지스터R0의 하위4비트를 기억(전송)시키고자 하는 외부메모리(2)의 어드레스에서 8비트데이타를 메모리데이타레지스터(8)에 기억시킨다.

    ③메모리데이타레지스터(8)에 기억된 상기의 8비트데이타를 제1오퍼랜드버스(5)를 거쳐서 또 마스크R0M17에서 데이타F0 (16) 을 제2오퍼랜드버스(6)을 거쳐서 각각 ALU(4)에 입력시켜 논리곱연산을 실행하고, 그 연산결과를 디스티네이션버스(7)을 거쳐서 메모리데이타레지스터(8)에 기억시킨다.

    ④레지스터R3에 기억되어 있는 8비트데이타를 제1오퍼랜드버스(5)를 거쳐서 또 메모리데이타레지스터(8)에 기억되어 있는 8비트데이타를 제2오퍼랜드버스(6)을 거쳐서 각각 ALU(4)에 입력시켜 논리합연산을 실행하고, 디스티네이션버스(7)을 거쳐서 메모리데이타레지스터(8)에 기억시킨다.

    ⑤메모리데이타레지스터(8)에 기억되어 있는 8비트데이타를 상기②의 외부메모리(2)의 어드레스에 기억시킨다.

    이상과 같이 레지스터에 기억되어 있는 데이타8비트의 하위4비트를 외부메모리(2)의 임의의 어드레스의 8비트의 영역의 하위4비트의 기억위치로 전송하는 MOVLL명령하나로 제어부(9)의 랜덤로직 또는 마이크로프로그램에 따라서 상기 ①~⑤(5머신사이클)의 짧은 머신사이클의 기간에 외부메모리(2)와 아미크로프로세서(1)사이의 4비트데이타의 고속전송을 실행할수 있다.

    상기 각 실시예에 있어서는 우측 또는 좌측으로 1비트씩의 회전처리를 실행하고 있었지만 4비트를 한번에 회전시켜도 좋다. 4비트를 한번에 회전시키는 것에 의해 머신사이클수를 더욱 적게 할 수 있다.

    이상과 같이 본 발명에 의하면 제어수단에 의해 하나의 전송명령으로 마이크로프로세서내에서 처리되는 데이타의 단위보다도 적은 비트수의 데이타를 제1기억수단에서 제2기억수단으로 전송시키도록 하였으므로 메모리에 기억되는 전송명령을 위한 메모리기억영역이 적어지므로 메모리를 다른 데이타처리를 위해서 사용할 수 있어 메모리의 사용효율을 높일 수 있다고 하는 효과가 얻어진다.

    또 제어수단은 전송명령의 실행중의 중간처리결과를 모두 제1기억수단에 기억시켜서 마이크로프로세서에 있어서의 최종의 처리결과(논리합결과)만을 메모리로 출력시키도록 하고 있으므로 마이크로프로세서와 메모리 사이의 데이타전송을 위한 머신사이클수가 감소하여 마이크로프로세서에 있어서의 데이타전송을 위한 실행시간(머신사니클수)를 단축할 수 있다고 하는 효과가 얻어진다.

    QQ群二维码
    意见反馈