KR20070093041A - 8비트보다 큰 대역폭을 갖는 주변장치와 같은 대역폭을사용하는 8비트 cpu 및 8비트 cpu에서 8비트보다 큰대역폭을 갖는 주변 장치와 동일한 대역폭을 가지게 하는방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체 - Google Patents
8비트보다 큰 대역폭을 갖는 주변장치와 같은 대역폭을사용하는 8비트 cpu 및 8비트 cpu에서 8비트보다 큰대역폭을 갖는 주변 장치와 동일한 대역폭을 가지게 하는방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체 Download PDFInfo
- Publication number
- KR20070093041A KR20070093041A KR1020070087129A KR20070087129A KR20070093041A KR 20070093041 A KR20070093041 A KR 20070093041A KR 1020070087129 A KR1020070087129 A KR 1020070087129A KR 20070087129 A KR20070087129 A KR 20070087129A KR 20070093041 A KR20070093041 A KR 20070093041A
- Authority
- KR
- South Korea
- Prior art keywords
- bit
- peripheral device
- bandwidth
- cpu
- bit cpu
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/509—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
- G06F7/5095—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators word-serial, i.e. with an accumulator-register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Executing Machine-Instructions (AREA)
Abstract
본 발명은 8비트보다 큰 대역폭을 갖는 주변장치와 같은 대역폭을 사용하게 하는 8비트 CPU에 관한 것으로, 8비트 CPU 내에 누산기를 추가하고 추가된 누산기에 출력 포트를 구비하며, 추가된 누산기를 제어하는 레지스터를 포함하는 8비트 CPU를 8비트보다 큰 대역폭을 갖는 주변장치에 직접 연결할 수 있는 8비트 CPU가 제공된다.
본 발명에 따르면 8비트 CPU를 8비트 이상의 대역폭을 가진 주변장치에 연결하는 경우에도 CPU와 주변장치를 직접 연결할 수는 있는 장점이 있으며, 8비트 CPU를 8비트보다 큰 대역폭을 갖는 주변장치에 연결하는 경우에도 처리 속도가 빠르며, 명령어들이 프로그램 메모리에서 많은 영역을 차지하지 않는 장점이 있다.
8비트, CPU, 누산기, 레지스터, 주변장치
Description
본 발명은 8비트 CPU 및 8비트 CPU와 주변장치와의 연결 방법에 관한 것으로서, 보다 상세하게는 8비트보다 큰 대역폭을 갖는 주변장치와 같은 대역폭을 사용하는 8비트 CPU 및 8비트 CPU에서 8비트보다 큰 레지스터를 갖는 주변 장치와 동일한 대역폭을 가지게 하는 방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체에 관한 것이다.
CPU(Computer Central Processing Unit : 이하 CPU라 함)는 컴퓨터 중앙 처리 장치로서 컴퓨터의 가장 중요한 부분으로 명령을 해독하고 산술, 논리, 연산이나 데이터 처리를 실행하는 장치이다.
현재 계측기, 제어기, 프린터 등의 산업 기기 뿐만 아니라 휴대 단말, 디지 털 카메라 등의 가전 디지털 처리 장치 등 거의 모든 전기전자 관련 제품은 컴퓨팅 기능을 구비하고 있으므로 제품 내에 CPU를 포함하고 있다.
이러한 CPU는 처리 단위에 따라 4비트, 8비트, 16비트, 32비트, 64비트 등으로 구분되며, 처리 방식에 따라 CISC(Complex Instruction Set Computer), RISC(Reduced Instruction Set Computer), SIMD(Single Instruction Multiple Data) 등으로 구분된다.
현재 컴퓨팅 기능을 구비한 전기전자 관련 제품의 경우 8비트 CPU가 가장 널리 사용되고 있다. 이는 8비트 CPU는 가격대비 성능이 우수하고 특히 비교적 구조가 단순하여 쉽게 응용이 가능하다는 이점이 있으며, 특히 최근에 전자제품에서 임베디드(Embeded) 시스템이 일반화되면서 더욱 널리 사용되고 있다.
그러나, CPU와 연결되는 다양한 주변 장치들은 8비트보다 큰 대역폭을 가지는 다양한 기기들이 개발되어 사용되고 있다. 따라서, 중심이 되는 전자 기기들의 경우 8비트 CPU임에 비해 주변기기들은 8비트 보다 큰 대역폭을 가지는 경우가 빈번하게 발생되고 있다.
도 1과 도 2를 참조하여 종래의 8비트 CPU의 구조와 8비트 CPU를 8비트보다 큰 대역폭을 가지는 주변장치와 연결하는 경우의 문제점에 대해 살펴본다.
도 1에 도시된 바와 같이, 종래의 8비트 CPU(100)는 CU(110), ALU(120), SFR(130), ICB(160) 등을 포함하며 SFR(130)은 DPTR(140), ACC(150)를 포함한다.
CU(110)는 Control Unit(이하 CU라 함)의 약어로 일반적으로 제어 장치로도 불리우며, 명령어의 해석과 실행을 담당한다.
ALU(120)는 Arithmetic and Logic Unit(이하 ALU라 함)의 약어로 산술논리연산장치(이하 ALU라 함)로도 불리우며 비교, 판단, 연산을 담당한다.
SFR(130)는 Special Function Register(이하 SFR이라 함)의 약어로 레지스터의 한 종류이며, 레지스터는 CPU가 반복적 또는 주기적으로 처리하는 동안 일시적으로 정보를 저장한다. SFR(130)은 특히 가장 널리 사용되는 Intel사의 8비트 CPU인 8051에서 Input/Output의 기능 전반을 제어한다.
SFR(130)은 DPTR(140)과 ACC(150)를 포함한다.
DPTR(140)은 Data PoinTer Register(이하 DPTR이라 함)의 약어로 16비트 길이를 갖고 있으며, 8비트 단위로 상위(DPH), 하위(DPL)로 나누어질 수 있다. 이 레지스터는 외부 데이터 메모리와 데이터 전송시 어드레스 포인터로서 사용되며, 프로그램 메모리(ROM : Read Only Memory)에서 정수 연산 혹은 ACC(150)와 조합해서 테이블 분기로 사용된다.
ACC(150)는 Accumulater(이하 ACC라 함)의 약어로 누산기로도 불리우며 산술과 의 결과를 일시적으로 기억하는 레지스터이다.
ICB(160)는 Internal CPU Bus(이하 ICB라 함)의 약어로 CPU 내부의 전기적 신호를 전달하는 통로이다.
이러한 구성을 가지는 종래의 8비트 CPU(100)를 8비트보다 큰 대역폭을 갖는 주변장치와 연결하는 경우의 제어 신호 또는 데이터 등의 흐름에 대해 도 2를 참조하여 살펴본다.
도 2에 도시된 바와 같이, 8비트 CPU(100)는 프로그램 메모리(200)와 결합되 며, 데이터 버스(220)와 어드레스 버스(230)에 연결되어 주변장치와 연결된다.
프로그램 메모리(200)는 명령어가 저장되는 메모리이며, 도 2에서는 CPU의 외부에 구성되는 것으로 도시하였으나 CPU의 내부에 포함되어 구성될 수도 있다.
데이터 버스(220)는 CPU에서 메모리나 입출력 기기 등의 주변장치에 데이터를 송출하거나 반대로 주변장치에서 CPU에 데이터를 읽어 들일 때 필요한 전송 선로이다. 데이터 버스(220)는 CPU와 메모리 또는 입출력기 간에 어떤 곳으로도 데이터를 전송할 수 있으므로 쌍방향 버스라고도 한다. 데이터 버스는 CPU 내의 ICB(160)와 연결되어 데이터를 주고 받는다.
8비트 CPU를 8비트보다 큰 대역폭을 갖는 주변 장치와 연결하는 경우 CPU와 주변 장치의 대역폭 즉 통신 회선과 채널을 통해 정보를 가져오는데 소요되는 용량이 다르므로 래퍼(Wrapper)(210)를 사용하여 CPU와 주변장치를 연결한다.
래퍼(210)는 양쪽 장치가 서로 대역폭이 맞지 않을 경우 대역폭을 맞춰주는 역할을 하는 하드웨어 또는 프로그램이다.
즉, 예를 들면 8비트로 전송되는 데이터를 32비트 레지스터로 전송하기 위해 8비트를 데이터가 4번 전송되기를 기다렸다가 32비트가 되면 비로소 32비트 레지스터로 데이터를 전송하는 것이다.
어드레스 버스(230)는 CPU가 메모리나 입출력 기기의 주소를 지정할 때 사용되는 전송 선로이다. 어드레스 버스(230)는 CPU에서만 주소를 지정할 수 있기 때문에 단방향 버스라고도 한다. 어드레스 버스는 CPU내의 SFR(130)에 포함된 DPTR(140)과 연결되어 DPTR(140)에서 지정한 주소를 전송하는 통로 역할을 수행한 다.
이러한 구성과 연결을 가지는 8비트 CPU와 주변 장치의 연결을 참조하여 종래의 8비트 CPU와 8비트보다 큰 대역폭을 가진 주변 장치와의 연결의 문제점을 살펴본다.
먼저 전술한 바와 같이, 8비트 CPU와 8비트보다 큰 대역폭을 가진 주변장치를 연결하기 위해서는 직접 연결할 수는 없고 래퍼를 사용하여 연결하여야 하는 문제점이 있다.
또한, 8비트 CPU에 32비트 주변 장치를 연결하는 경우를 예를 들어 설명하면 누산기에 데이터를 넣는 명령어 4개, 어드레스 관련 명령어 4개, 주변 장치에 쓰이는 명령어 4개로 모두 12개의 명령어가 필요하게 된다. 따라서 32비트를 전송하기 위한 총 실행 클럭(clock)수는 아래 수학식 1에 의해 계산된다.
[수학식 1]
명령어의 개수 X 머신 사이클수 = 총 실행 클럭수
한 머신 사이클은 현재까지 개발된 Intel사의 8051인 경우를 기준으로 12클럭이지만 현재 산업에서 IP로 사용하는 8051은 SoC(System on Chip)용으로 많이 사용하므로 다른 IP와의 대역폭 감소를 최소로 하기 위하여 4클럭짜리 머신 사이클의 8051을 주로 사용한다. 그러므로 이러한 산업에서 널리 사용되는 8비트 CPU로 32비트 주변 장치로 32비트를 전송하기 위해서는 모두 48클럭이 소요된다.
이러한 어셈블코드를 어셈블링하면 명령어가 프로그램 메모리에서 차지하는 용량을 알 수 있으며 실제 구현을 통해 확인하면 명령어가 프로그램 메모리에서 18 바이트를 차지한다.
만약 128개의 32비트를 8비트 CPU에서 처리한다면 6144클럭이 소요되고 프로그램 메모리에서 차지하는 영역은 2.3K바이트를 차지한다.
그러므로, 클럭이 많이 소요되므로 결국 처리 속도가 느린 문제점이 있으며, 명령어들이 프로그램 메모리에서 많은 영역을 차지하므로 프로그램 메모리의 용량을 크게 해주어야 하는 문제점이 있다.
상기한 바와 같은 종래의 문제점을 해결하기 위해, 본 발명은 8비트 CPU를 8비트보다 큰 대역폭을 갖는 주변장치에 연결하는 경우도 8비트 CPU와 8비트보다 큰 대역폭을 갖는 주변장치와 직접 연결할 수는 있는 8비트 CPU 및 8비트 CPU를 이용하여 8비트보다 큰 대역폭을 갖는 주변 장치와 동일한 대역폭을 가지게 하는 방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체를 제안하는 것이다.
또한, 8비트 CPU를 8비트보다 큰 대역폭을 가진 주변장치에 연결하는 경우에도 처리 속도가 빠르며, 명령어들이 프로그램 메모리에서 많은 영역을 차지하지 않는 8비트 CPU 및 8비트 CPU를 이용하여 8비트보다 큰 대역폭을 갖는 주변 장치와 동일한 대역폭을 가지게 하는 방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체를 제안하는 것이다.
본 발명의 또 다른 목적들은 이하의 실시예에 대한 설명을 통해 쉽게 이해될 수 있을 것이다.
상기한 바와 같은 목적을 달성하기 위해, 본 발명의 일 측면에 따르면 8비트 CPU가 제공된다.
본 발명의 바람직한 일 실시예에 따르면, 복수개의 누산기; 상기 복수개의 누산기에 연결되는 출력 포트; 및 상기 누산기들을 제어하는 레지스터를 포함하는 것을 특징으로 하는 8비트 CPU가 제공된다.
본 발명의 다른 측면에 의하면, 8비트 CPU를 8비트보다 큰 대역폭을 갖는 주변 장치와 동일한 대역폭으로 연결하는 방법이 제공된다.
본 발명의 바람직한 일 실시예에 따르면, 8비트 CPU를 8비트보다 큰 대역폭을 갖는 주변 장치와 동일한 대역폭으로 연결하는 방법에 있어서, 연결된 주변 장치의 대역폭에 따라 8비트 CPU의 제어출력을 조정하는 단계; 상기 조정된 제어 출력에 따라 연산을 수행하는 단계; 상기 연산 결과를 8비트 단위로 나누어 저장하는 단계; 상기 나누어진 연산 결과들이 저장된 곳들의 주소들을 전송하는 단계; 및 상기 전송된 주소들에 따라 상기 8비트 단위로 나누어 저장된 연산 결과를 동시에 주변 장치로 전송하는 단계를 포함하는 것을 특징으로 하는 8비트 CPU를 비트보다 큰 대역폭을 갖는 주변 장치와 동일한 대역폭으로 연결하는 방법이 제공된다.
본 발명의 다른 측면에 의하면, 8비트 CPU를 8비트보다 큰 대역폭을 갖는 주변 장치와 동일한 대역폭으로 연결하는 프로그램을 기록한 기록매체가 제공된다.
본 발명의 바람직한 일 실시예에 따르면, 8비트 CPU에서 8비트보다 큰 대역폭을 갖는 주변 장치와 동일한 대역폭을 가지게 하도록 디지털 처리 장치에 의해 실행될 수 있는 명령어들의 프로그램이 유형적으로 구현되어 있으며 디지털 처리 장치에 의해 판독될 수 있는 프로그램을 기록한 기록 매체에 있어서, 연결된 주변 장치의 대역폭에 따라 CPU의 제어 출력을 조정하는 단계; 상기 조정된 제어 출력에 따라 연산을 수행하는 단계; 상기 연산 결과를 8비트 단위로 나누어 저장하는 단계; 상기 나누어진 연산 결과들이 저장된 곳들의 주소들을 전송하는 단계; 및 상기 전송된 주소들에 따라 상기 8비트 단위로 나누어 저장된 연산 결과를 동시에 주변 장치로 전송하는 단계를 포함하는 것을 특징으로 하는 8비트 CPU를 8비트보다 큰 대역폭을 갖는 주변 장치와 동일한 대역폭으로 연결하는 프로그램을 기록한 기록매체가 제공된다.
이상에서 설명한 바와 같이, 본 발명에 의한 8비트 CPU를 8비트보다 큰 대역폭을 가진 주변장치와 연결하는 경우에도 래퍼가 필요 없이 주변장치를 직접 연결할 수는 있는 장점이 있다.
8비트 CPU를 8비트보다 대역폭이 큰 주변장치와 연결하는 경우 본 제안의 8비트 CPU는 처리 속도가 빠르며, 명령어들이 프로그램 메모리에서 많은 영역을 차지하지 않는 장점이 있다.
또한, 8비트보다 큰 대역폭의 주변장치에 8비트 CPU를 직접 연결하기 위해 명령어를 변화시켜도 기존의 컴파일러를 그대로 사용할 수 있는 장점이 있다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
제1, 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다.
일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 대응하는 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
도 3은 본 발명의 바람직한 일 실시예에 따른 8비트 CPU의 구조를 도시한 블록도이다.
도 3에 도시된 바와 같이, 본 발명의 바람직한 일 실시예에 따른 8비트 CPU(300)에는 CU(310), ALU(320), SFR(330), ICB(360) 등을 포함할 수 있다.
CU(310)는 Control Unit(이하 CU라 함)의 약어로 일반적으로 제어 장치로도 불리우며, 명령어의 해석과 실행을 담당한다.
ALU(320)는 Arithmetic and Logic Unit(이하 ALU라 함)의 약어로 산술논리연산장치(이하 ALU라 함)로도 불리우며 비교, 판단, 연산을 담당한다.
SFR(330)는 Special Function Register(이하 SFR이라 함)의 약어로 레지스터의 한 종류이며, 레지스터는 CPU가 반복적 또는 주기적으로 처리하는 동안 일시적으로 정보를 저장한다. SFR(330)은 특히 가장 널리 사용되는 Intel사의 8비트 CPU인 8051에서 Input/Output의 기능 전반을 제어한다. SFR(330)은 DPTR(340), ACC(350), ACC1(352), ACC2(354), ACC3(356) 및 EBR(358)을 포함한다.
DPTR(340)은 Data PoinTer Register(이하 DPTR이라 함)의 약어로 16비트 길이를 갖고 있으며, 8비트 단위로 상위(DPH), 하위(DPL)로 나누어질 수 있다. 이 레 지스터는 외부 데이터 메모리와 데이터 전송시 어드레스 포인터로서 사용되며, 프로그램 메모리(ROM: Read Only Memory)에서 정수 연산 혹은 ACC(350)와 조합해서 테이블 분기로 사용된다.
ACC(350)는 Accumulater(이하 ACC라 함)의 약어로 누산기로도 불리우며 산술과 의 결과를 일시적으로 기억하는 레지스터이다.
본 발명에 의한 8비트 CPU는 종래의 8비트 CPU와 달리 하나의 8비트의 정보를 저장하는 하나의 ACC를 포함하는 것이 아니라 다수의 ACC(ACC(350), ACC1(352), ACC2(354) 및 ACC3(356))를 포함할 수 있다.
도 3에서는 8비트 CPU를 기준으로 32비트 주변 장치와 연결되는 것을 기준으로 ACC를 종래와 달리 3개의 ACC를 더 포함하여 모두 4개의 ACC를 포함하는 것으로 도시하였으나 주변 장치의 비트 수에 따라 종래와 달리 추가되는 ACC의 개수는 달라질 수 있다. 즉, 예를 들어 8비트 CPU를 16비트의 주변장치에만 연결하는 경우라면 이 경우 ACC는 하나만을 더 추가시켜 모두 2개의 ACC를 포함하게 하거나 24비트 주변장치만 사용하는 경우 3개의 ACC 등이 가능하다.
또한 본 설명과 같이 32비트를 기준으로 모두 ACC를 4개를 포함하고 16비트 또는 24비트와 연결하는 경우 ACC를 선택적으로 사용하는 것도 가능함은 자명하다.
추가된 ACC는 각각 별도의 고유 주소를 가지게 되며 별도의 고유 주소를 이용하여 DPTR에서 주변장치의 어드레스 버스를 통해 주변장치에 ACC의 주소를 전달한다.
또한 증가된 ACC들은 별도의 출력포트를 가지며 데이터 버스와 직접 연결된 다.
따라서 ICB를 통해 8비트 증가된 ACC들의 출력포트를 통해 각각 8비트를 데이터 버스와 통해 연결하게 되므로 증가되는 ACC의 수에 따라 16, 24, 32 비트의 대역폭을 갖는 주변장치와도 연결할 수 있다.
또한, 본 발명에서는 증가된 ACC에 정보를 저장하고 제어할 수 있는 기능을 수행할 수 있는 레지스터를 더 포함한다. 따라서 본 발명에 의한 8비트 CPU는 종래와 달리 SFR(330)에 EBR(358)이라는 확장 레지스터를 더 포함한다.
EBR(358)은 Extend BandWidth Register(이하 EBR이라 함)의 약어로 8비트를 초과하는 예를 들면, 16비트, 24비트, 32비트의 데이터 전송인지를 구별하기 위한 기능을 수행하는 레지스터이다.
아래 표 1은 발명에 의한 8비트 CPU에 포함되는 EBR(358)의 각 영역에서 수행되는 기능을 예시한 표이다. 아래 표는 본 발명에 의한 8비트 CPU가 32비트의 레지스터를 갖는 주변장치까지 연결할 수 있는 경우를 예시한 것이다.
[표 1]
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | - | - | - | - | EX32 | EX24 | EX16 |
표 1에 도시된 바와 같이 EBR(358)의 '0'영역에 정보가 저장되면 ACC(350), ACC1(352)에 연산된 결과를 저장하도록 한다. 따라서 두개의 ACC를 이용함으로 16비트를 저장할 수 있다.
EBR(358)의 '1'영역에 정보가 저장되면 ACC(350), ACC1(352), ACC2(354)에 연산된 결과를 저장하도록 하여 3개의 ACC를 이용함으로 24비트를 저장할 수 있다.
EBR(358)의 '2'영역에 정보가 저장되면 ACC(350), ACC1(352), ACC2(354), ACC3(356)에 연산된 결과를 저장하도록 하여 4개의 ACC를 모두 이용함으로 32비트를 저장할 수 있다.
이러한 EBR의 영역에 저장된 저장 된 정보에 따라 선택적으로 복수개의 ACC에 연산된 결과를 저장하고 복수개의 ACC는 각각의 주소를 가지고 있으므로 주소 정보를 이용하여 주변장치로 직접 데이터를 보낼 수 있게 된다.
ICB(360)는 Internal CPU Bus(이하 ICB라 함)의 약어로 CPU 내부의 전기적 신호를 전달하는 통로이다.
종래의 8비트 CPU에서와 같이 8비트 CPU내에 포함되는 ICB(360)를 통해서는 8비트 신호만을 전송한다.
그러나, 증가된 ACC들(ACC1, ACC2, ACC3)은 출력 포트(미도시)를 통해 직접 주변 장치의 데이터 버스에 연결되어 데이터를 전송한다.
따라서 추가되는 출력 포트는 추가되는 ACC의 개수에 따라 결정되며 추가되는 ACC는 전술한 바와 같이 연결하고자 하는 주변장치의 대역폭에 의해 결정될 수 있다.
이상의 구성을 참조하여 본 발명에 의한 8비트 CPU와 주변장치의 연결에 대해 살펴본다.
도 4는 본 발명의 바람직한 일 실시예에 따른 8비트 CPU와 주변장치와의 연결 구성을 도시한 도면이다.
도 4에 도시된 바와 같이, 8비트 CPU(300)는 프로그램 메모리(400)와 결합되 며, 데이터 버스(410)와 어드레스 버스(420)에 연결되어 주변장치와 연결된다.
프로그램 메모리(400)는 명령어가 저장되는 메모리이며, 도 4에서는 CPU의 외부에 구성되는 것으로 도시하였으나 CPU의 내부에 포함되어 구성될 수도 있다.
데이터 버스(410)는 CPU에서 메모리나 입출력 기기 등의 주변장치에 데이터를 송출하거나 반대로 주변장치에서 CPU에 데이터를 읽어 들일 때 필요한 전송 선로이다.
데이터 버스(220)는 CPU와 메모리 또는 입출력기 간에 어떤 곳으로도 데이터를 전송할 수 있으므로 쌍방향 버스라고도 한다. 데이터 버스는 CPU 내의 ICB(160)와 연결되어 데이터를 주고 받는다.
어드레스 버스(230)는 CPU가 메모리나 입출력 기기의 주소를 지정할 때 사용되는 전송 선로이다. 어드레스 버스(230)는 CPU에서만 주소를 지정할 수 있기 때문에 단 방향 버스라고도 한다. 어드레스 버스는 CPU내의 SFR(130)에 포함된 DPTR(140)과 연결되어 DPTR(140)에서 지정한 주소를 전송하는 통로 역할을 수행한다.
이러한 본 발명에 의한 8비트 CPU와 8비트보다 큰 대역폭을 갖는 주변장치의 연결을 참조하여 본 발명에 의한 8비트 CPU에서 8비트보다 큰 대역폭을 갖는 주변 장치와 동일한 대역폭을 가지게 하는 방법에 대해 살펴 본다.
먼저 본 발명에 의한 8비트 CPU에서 실행되는 명령어는 종래와 달리 8비트보다 큰 데이터도 한 번의 명령어로 수행할 수 있게 수정된다.
이하에서는 8051을 기준으로 예시하여 본 발명에 의한 8비트 CPU에서 8비트보다 큰 대역폭을 갖는 주변 장치와 동일한 대역폭을 가지게 하는 방법에 대해 설명한다.
먼저, 본 발명에 의한 8비트 CPU에서 실행되는 명령어에 대해 살펴본다.
종래의 8051에서는 'MOV A,#12H' 명령어는 12H라는 8비트 데이터를 ACC에 로드하라는 명령어이다.
기존의 명령어는 32비트 데이터 예를 들어 '12345678H'를 처리하려면 네 번 수행하여야 하지만 이를 한 명령어로 처리하게 한다. 이를 위하여 타이밍 카운터 수정한다.
'12H'다음의 데이터인'345678H'의 24비트를 처리하기 위해서는 '12H'를 ACC에 로드하는 2클럭에 3바이트를 넣기 위한 3클럭을 더하여 5클럭이 필요한 것이다. 이 명령어가 32 비트를 처리할 경우 타이밍 카운터는 5까지 타이밍을 만들어야 한다.
다시 말해 기존의 타이밍 출력은 'T1, T2, T3, T4'인데 수정 후는 'T1, T2, T3, T4, T5'이다. 또한 'T6, T7, T8'을 추가해서 두 머신 사이클로 한 명령어를 처리한다.
따라서 종래의 8051 CPU에서와 달리 제어 출력도 수정이 필요하다.
기존에는 T1에서 이 명령어를 가져와서 디코딩하고, T2에서 실행하고 T3, T4에서는 머신 사이클을 맞추기 위해서 쉬고 있다.
이에 반해 수정 후 제어 출력은 T3에서 추가된 'ACC1'에 '34H'를 로드하고, T4에서 추가된 'ACC2'에 '56H'를 로드하고, T5에서 추가된 'ACC3'에 '78H'를 로드한다. 그리고 머신 사이클을 맞추기 위해 T6, T7, T8을 쉰다.
이러한 명령어와 제어 출력의 수정 외에도 프로그램의 수정에 대해 살펴본다.
8051뿐 아니라 대부분의 컴파일러는 프로그램 메모리에 데이터를 잡는 'DB' 기능을 지원한다. 이는 '프로그램 메모리에 데이터를 바이트로 잡아라'라고 컴파일러에서 명령하는 기능을 수행한다.
따라서 8051을 기준으로 아래 식 1과 같이 기술하면 컴파일러는 ACC에 데이터를 넣으라는 명령어가 '74'로 번역된다.
[식 1]
MOV A,#12
DB 34
DB 56
DB 78
따라서 프로그램 메모리에는 '74 12 34 56 78'이 들어간다. 종래의 8비트 CPU에서는 '34, 56, 68'을 데이터가 아닌 명령어로 해석하여 원치 않는 동작을 하겠지만 본 발명에 의해 강화된 데이터 전송명령어(74H)로 인해 기존의 누산기와 ACC에 12H, 추가된 누산기에 ACC1, ACC2, ACC3에 각각 34H, 56H, 78H가 로드된다.
추가된 ACC로 데이터를 전송 명령어 1개, 다수의 ACC중 선택된 ACC에 저장된 데이터 전송 명령어 1개, 주소 지정 명령어 1개, 주변장치로 데이터를 쓰는 명령어 1개 총 4개의 명령어가 필요하다.
하지만 32비트 데이터 전송 명령어가 두 번의 머신 사이클을 사용하는 것을 고려하여 계산하면 20클럭이 사용되게 된다.
한편 실제 컴파일링을 통해 측정한 프로그램 메모리에서 차지하는 비중을 살펴본다.
본 발명에 의한 8비트 CPU에서 32비트 레지스터를 가진 주변장치와 직접 연결하는 경우 프로그램 메모리 사이즈는 컴파일 후 리스트 명령어를 확인한 결과 8 바이트가 사용됐다.
128개의 레지스터를 셋팅 한다면 25460 클럭이 들고, 프로그램 메모리도 1024바이트 약 1k 바이트가 든다.
이상에서 설명한 바와 같이 본 발명에 의한 8비트 CPU에서는 클럭수를 줄일 수 있어 처리 속도가 증가하고 또한 프로그램 메모리의 크기도 줄일 수 있게 된다.
이러한 본 발명에 의한 8비트 CPU를 실제 구현한 결과와 종래의 8비트 CPU에서의 구현 결과는 아래 표 2에서 확인된다.
아래 [표 2]는 CPU로 128개의 데이터를 32 비트 시스템 레지스터에 쓸 경우 본 제안을 적용했을 때 성능 향상을 나타내는 표로 클럭수는 2.4배 절약되고 프로그램 메모리 사이즈는 2.3배 적어짐을 알 수 있다.
[표 2]
구분 | 클럭 수 | 프로그램메모리크기(Bytes) |
종래8비트CPU | 6144 | 2.3K |
본 발명에 의한8비트CPU | 2560 | 1K |
향상된 배수 | 2.4배 | 2.3배 |
따라서, 본 발명에 의한 8비트 CPU에 의하면 8비트보다 큰 비트 수의 레지스터를 가진 주변장치를 연결하는 경우에도 종래보다 작은 클럭 수를 사용할 수 있고 또한 명령어들이 저장되는 프로그램 메모리의 크기도 줄일 수 있게 된다.
본 발명에 의한 8비트 CPU는 종래의 ACC 외에도 추가된 ACC와 비트 수에 따른 데이터 전송을 구별하기 위한 기능을 수행하는 레지스터를 더 포함하고 추가된 ACC는 별도의 출력 포트를 이용하여 주변장치의 데이터 버스에 직접 연결하여 데이터를 전송한다.
또한 ACC에 저장되는 데이터의 비트 수에 따라 CPU의 클럭에 따른 머신 사이클을 조정하여 제어출력을 수정함으로써 최소의 명령어를 사용하여 주변장치와 연결될 수 있게 한다.
상기한 본 발명의 바람직한 실시예는 예시의 목적을 위해 개시된 것이고, 본 발명에 대해 통상의 지식을 가진 당업자라면 본 발명의 사상과 범위 안에서 다양한 수정, 변경, 부가가 가능할 것이며, 이러한 수정, 변경 및 부가는 하기의 특허청구범위에 속하는 것으로 보아야 할 것이다.
도 1은 종래의 8비트 CPU의 구조를 도시한 블록도.
도 2는 종래의 8비트 CPU와 주변장치와의 연결 구성을 도시한 도면.
도 3은 본 발명의 바람직한 일 실시예에 따른 8비트 CPU의 구조를 도시한 블록도.
도 4는 본 발명의 바람직한 일 실시예에 따른 8비트 CPU와 주변장치와의 연결 구성을 도시한 도면.
Claims (7)
- 연결되는 주변장치의 대역폭에 의해 개수가 결정되는 복수개의 누산기;상기 복수개의 누산기에 각각 연결되는 8비트 대역폭의 출력 포트; 및상기 누산기들을 제어하는 레지스터를 포함하는 것을 특징으로 하는 8비트 CPU.
- 제1항에 있어서,상기 출력 포트는,상기 8비트 CPU가 연결되는 주변장치의 데이터 버스와 연결되는 것을 특징으로 하는 8비트 CPU.
- 제1항에 있어서,상기 8비트 CPU는,명령어의 해석 및 실행을 수행하는 제어장치; 및상기 복수개의 누산기의 주소를 지정하는 레지스터를 더 포함하는 것을 특징으로 하는 8비트 CPU.
- 제3항에 있어서,상기 8비트 CPU는,상기 명령어를 저장하는 프로그램 메모리를 더 포함하는 것을 특징으로 하는 8비트 CPU.
- 제3항에 있어서,상기 주소를 지정하는 레지스터는 상기 8비트 CPU가 연결되는 주변장치의 어드레스 버스와 연결되는 것을 특징으로 하는 8비트 CPU.
- 8비트 CPU를 8비트보다 큰 대역폭을 갖는 주변 장치와 동일한 대역폭으로 연결하는 방법에 있어서,연결된 주변 장치의 대역폭에 따라 8비트 CPU의 제어 출력을 조정하는 단계(a);상기 조정된 제어 출력에 따라 연산을 수행하는 단계(b);상기 연산 결과를 8비트 단위로 나누어 저장하는 단계(c);상기 나누어진 연산 결과들이 저장된 곳들의 주소들을 전송하는 단계(d); 및상기 전송된 주소들에 따라 상기 8비트 단위로 나누어 저장된 연산 결과를 동시에 주변 장치로 전송하는 단계(e)를 포함하는 것을 특징으로 하는 8비트 CPU를 8비트보다 큰 대역폭을 갖는 주변 장치와 동일한 대역폭으로 연결하는 방법.
- 8비트 CPU에서 8비트보다 큰 대역폭을 갖는 주변 장치와 동일한 대역폭을 가지게 하도록 디지털 처리 장치에 의해 실행될 수 있는 명령어들의 프로그램이 유형적으로 구현되어 있으며 디지털 처리 장치에 의해 판독될 수 있는 프로그램을 기록한 기록 매체에 있어서,연결된 주변 장치의 대역폭에 따라 CPU의 제어 출력을 조정하는 단계;상기 조정된 제어 출력에 따라 연산을 수행하는 단계;상기 연산 결과를 8비트 단위로 나누어 저장하는 단계;상기 나누어진 연산 결과들이 저장된 곳들의 주소들을 전송하는 단계; 및상기 전송된 주소들에 따라 상기 8비트 단위로 나누어 저장된 연산 결과를 동시에 주변 장치로 전송하는 단계를 포함하는 것을 특징으로 하는 8비트 CPU를 8비트보다 큰 대역폭을 갖는 주변 장치와 동일한 대역폭으로 연결하는 방법을 구현하기 위한 프로그램을 기록한 기록매체.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070087129A KR20070093041A (ko) | 2007-08-29 | 2007-08-29 | 8비트보다 큰 대역폭을 갖는 주변장치와 같은 대역폭을사용하는 8비트 cpu 및 8비트 cpu에서 8비트보다 큰대역폭을 갖는 주변 장치와 동일한 대역폭을 가지게 하는방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070087129A KR20070093041A (ko) | 2007-08-29 | 2007-08-29 | 8비트보다 큰 대역폭을 갖는 주변장치와 같은 대역폭을사용하는 8비트 cpu 및 8비트 cpu에서 8비트보다 큰대역폭을 갖는 주변 장치와 동일한 대역폭을 가지게 하는방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050130539A Division KR20070068664A (ko) | 2005-12-27 | 2005-12-27 | 8비트보다 큰 대역폭을 갖는 주변장치와 같은 대역폭을사용하는 8비트 cpu 및 8비트 cpu에서 8비트보다 큰대역폭을 갖는 주변 장치와 동일한 대역폭을 가지게 하는방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20070093041A true KR20070093041A (ko) | 2007-09-17 |
Family
ID=38687496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070087129A KR20070093041A (ko) | 2007-08-29 | 2007-08-29 | 8비트보다 큰 대역폭을 갖는 주변장치와 같은 대역폭을사용하는 8비트 cpu 및 8비트 cpu에서 8비트보다 큰대역폭을 갖는 주변 장치와 동일한 대역폭을 가지게 하는방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20070093041A (ko) |
-
2007
- 2007-08-29 KR KR1020070087129A patent/KR20070093041A/ko not_active Application Discontinuation
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8880855B2 (en) | Dual register data path architecture with registers in a data file divided into groups and sub-groups | |
US5907865A (en) | Method and data processing system for dynamically accessing both big-endian and little-endian storage schemes | |
US6567426B1 (en) | Preemptive timer multiplexed shared memory access | |
US5864704A (en) | Multimedia processor using variable length instructions with opcode specification of source operand as result of prior instruction | |
US7003763B2 (en) | Data processor | |
US20020069345A1 (en) | High performance VLIW processor | |
EP0855648A2 (en) | Data processing with parallel or sequential execution of program instructions | |
CN102262611B (zh) | 一种16位的risc cpu系统结构 | |
JP4323241B2 (ja) | バス帯域幅を増加させるためのメモリコントローラ、これを利用したデータ伝送方法及びこれを備えるコンピュータシステム | |
US7340591B1 (en) | Providing parallel operand functions using register file and extra path storage | |
GB2412767A (en) | Processor with at least two buses between a read/write port and an associated memory with at least two portions | |
EP4266185A1 (en) | Microcontroller chip containing multi-protocol communication interface peripheral and operation method therefor | |
EP1504349B1 (en) | Signal aggregation | |
KR20070093041A (ko) | 8비트보다 큰 대역폭을 갖는 주변장치와 같은 대역폭을사용하는 8비트 cpu 및 8비트 cpu에서 8비트보다 큰대역폭을 갖는 주변 장치와 동일한 대역폭을 가지게 하는방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체 | |
US7953938B2 (en) | Processor enabling input/output of data during execution of operation | |
US7613905B2 (en) | Partial register forwarding for CPUs with unequal delay functional units | |
KR20070068664A (ko) | 8비트보다 큰 대역폭을 갖는 주변장치와 같은 대역폭을사용하는 8비트 cpu 및 8비트 cpu에서 8비트보다 큰대역폭을 갖는 주변 장치와 동일한 대역폭을 가지게 하는방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체 | |
KR20080002423A (ko) | n 비트의 CPU 및 이를 이용한 데이터 버스트 라이트방법 | |
KR20070097680A (ko) | Cpu의 데이터 리드 방법 및 이를 구현하기 위한프로그램이 기록된 기록매체 | |
US20040193784A1 (en) | System and method for encoding processing element commands in an active memory device | |
KR20080002419A (ko) | n비트의 CPU 및 이를 이용한 데이터 버스트 리드 방법 | |
KR20080012467A (ko) | n 비트의 프로세서 및 이를 이용한 주변장치로의 연산데이터의 전송 방법 | |
US20020188771A1 (en) | Direct memory access controller for carrying out data transfer by determining whether or not burst access can be utilized in an external bus and access control method thereof | |
US20090228612A1 (en) | Flexible Bus Interface and Method for Operating the Same | |
CN114443528A (zh) | 一种dma二维数据传输/清零参数配置方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
WITN | Withdrawal due to no request for examination |