KR20070097680A - Cpu의 데이터 리드 방법 및 이를 구현하기 위한프로그램이 기록된 기록매체 - Google Patents

Cpu의 데이터 리드 방법 및 이를 구현하기 위한프로그램이 기록된 기록매체 Download PDF

Info

Publication number
KR20070097680A
KR20070097680A KR1020060027903A KR20060027903A KR20070097680A KR 20070097680 A KR20070097680 A KR 20070097680A KR 1020060027903 A KR1020060027903 A KR 1020060027903A KR 20060027903 A KR20060027903 A KR 20060027903A KR 20070097680 A KR20070097680 A KR 20070097680A
Authority
KR
South Korea
Prior art keywords
data
cpu
bit
peripheral device
bits
Prior art date
Application number
KR1020060027903A
Other languages
English (en)
Inventor
최병호
Original Assignee
엠텍비젼 주식회사
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 엠텍비젼 주식회사 filed Critical 엠텍비젼 주식회사
Priority to KR1020060027903A priority Critical patent/KR20070097680A/ko
Publication of KR20070097680A publication Critical patent/KR20070097680A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/491Computations with decimal numbers radix 12 or 20.
    • G06F7/498Computations with decimal numbers radix 12 or 20. using counter-type accumulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Bus Control (AREA)

Abstract

m비트 처리 단위의 CPU가 m비트를 초과하는 대역폭을 갖는 주변 장치로부터 데이터를 읽는 방법이 개시된다. 본 발명의 바람직한 일 실시예에 따르면, 연결된 주변 장치의 대역폭에 따라 m비트 처리 단위의 CPU의 제어 출력을 조정하고, 읽어올 데이터가 저장된 주변 장치 내의 주소 및 데이터가 저장될 기록 주소를 상기 주변 장치로 전송하여, 주변 장치로부터 m비트 단위로 각각 입력되는 데이터를 상응하는 기록 주소의 m비트 단위의 누산기에 각각 저장한다. 본 발명에 따르면 8비트 CPU를 8비트보다 큰 대역폭을 가진 주변장치에서 데이터를 읽어 오는 경우에도 래퍼가 필요 없으며, 8비트보다 큰 대역폭의 주변장치에서 데이터를 읽어 오기 위해 명령어를 변화시켜도 기존의 컴파일러를 그대로 사용할 수 있는 장점이 있다.
8비트, CPU, 누산기, 레지스터, 주변장치

Description

CPU의 데이터 리드 방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체{CPU incapable of reading data according to bandwidth of the peripherals}
도 1은 종래의 CPU의 구조를 도시한 블록도.
도 2는 종래의 CPU에서 주변장치에서 데이터를 읽기 위한 연결 구성을 도시한 도면.
도 3은 본 발명의 바람직한 일 실시예에 따른 CPU의 구조를 도시한 블록도.
도 4는 본 발명의 바람직한 일 실시예에 따른 CPU에서 주변장치에서 데이터를 읽기 위한 연결 구성을 도시한 도면.
본 발명은 CPU의 데이터 리드(read) 방법에 관한 것이다.
중앙 처리 장치(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는 가격대비 성능이 우수하고 특히 비교적 구조가 단순하여 쉽게 응용이 가능하다는 이점이 있으며, 특히 최근에 전자제품에서 임베디드(Embedded) 시스템이 일반화되면서 더욱 널리 사용되고 있다.
이러한 산업계 전반에서 널리 사용되는 8비트 CPU를 중심으로 종래의 CPU의 데이터 리드 방법의 문제점을 살펴본다.
먼저, CPU와 연결되는 다양한 주변 장치들은 8비트보다 큰 대역폭(bandwidth)을 가지는 다양한 기기들이 개발되어 사용되고 있다. 따라서, 중심이 되는 전자 기기들의 경우 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(100)의 외부에 구성되는 것으로 도시하였으나 CPU(100)의 내부에 포함되어 구성될 수도 있다.
데이터 버스(220)는 CPU(100)에서 메모리나 입출력 기기 등의 주변장치에 데이터를 송출하거나 반대로 주변장치에서 CPU(100)가 데이터를 읽어 들일 때 필요한 전송 선로이다. 데이터 버스(220)는 CPU(100)와 메모리 또는 입출력기 간에 어떤 곳으로도 데이터를 전송할 수 있으므로 쌍방향 버스라고도 한다. 데이터 버스(220)는 CPU(100) 내의 ICB(160)와 연결되어 데이터를 주고 받는다.
8비트 CPU(100)를 8비트보다 큰 대역폭을 갖는 주변 장치와 연결하여 주변 장치로부터 데이터를 읽는 경우 CPU(100)와 주변 장치의 대역폭 즉 통신 회선과 채널을 통해 정보를 가져오는데 소요되는 용량이 다르므로 래퍼(Wrapper)(210)를 사용하여 CPU(100)와 주변장치를 연결한다.
래퍼(210)는 실제 데이터의 앞에서 어떤 틀을 잡아 주는 데이터 또는 다른 프로그램이 성공적으로 실행되도록 설정하는 프로그램이다.
어드레스 버스(230)는 CPU(100)가 메모리나 입출력 기기의 주소를 지정할 때 사용되는 전송 선로이다. 어드레스 버스(230)는 CPU(100)에서만 주소를 지정할 수 있기 때문에 단방향 버스라고도 한다. 어드레스 버스(230)는 CPU(100)내의 SFR(130)에 포함된 DPTR(140)과 연결되어 DPTR(140)에서 지정한 주소를 전송하는 통로 역할을 수행한다.
이러한 구성과 연결을 가지는 8비트 CPU(100)와 주변 장치의 연결을 참조하여 종래의 8비트 CPU(100)와 8비트보다 큰 대역폭을 가진 주변 장치로부터 종래의 8비트 CPU(100)가 데이터를 읽어 오는 경우의 문제점을 살펴본다.
먼저 전술한 바와 같이, 8비트 CPU(100)가 8비트보다 큰 대역폭을 가진 주변장치에서 데이터를 읽어 오기 위해서는 래퍼(210)를 사용하여 연결하여야 하는 문제점이 있다.
즉, 예를 들면 8비트 CPU(100)가 32비트 레지스터를 가진 주변 장치로부터 데이터를 수신하여 수신된 데이터를 읽기 위해서는, 래퍼(210)가 먼저 32비트 데이터를 수신한 후 32비트 데이터를 8비트씩 나누어 4번에 걸쳐 8비트 CPU로 전송하여야 하는 문제점이 있다.
또한, 8비트 CPU(100)에서 32비트 주변 장치로부터 32비트 데이터를 읽어 오는 경우를 예로 들어 살펴보면, 하나의 ACC(150)에 8비트 데이터만이 저장 가능하므로 읽어온 데이터를 다시 CPU(100)의 내부 메모리(미도시)로 옮기기 위한 데이터 전송 명령어와 내부 메모리로 옮겨질 데이터의 주소 지정 명령어가 각각 3개가 필요하게 된다.
따라서 8비트 CPU(100)가 32비트 데이터를 읽어오기 위해서는, 래퍼(210)가 저장한 32비트 데이터를 ACC(150)에 8비트 데이터로 저장하기 위한 명령어 4개, ACC(150)에 저장된 데이터를 CPU(100)의 내부 메모리로 옮기는 전송 명령어 3개, 24비트의 데이터를 8비트 데이터로 내부 메모리의 임의의 영역에 저장되도록 하는 주소 지정 명령어 3개로 모두 10개의 명령어가 필요하게 된다. 따라서 32비트를 전송하기 위한 총 실행 클럭(clock)수는 아래 수학식 1에 의해 계산된다.
[수학식 1]
명령어의 개수 × 머신 사이클수 = 총 실행 클럭수
한 머신 사이클은 현재까지 개발된 Intel사의 8051인 경우를 기준으로 12클럭이지만 현재 산업에서 IP로 사용하는 8051은 SoC(System on Chip)용으로 많이 사용하므로 다른 IP와의 대역폭 감소를 최소로 하기 위하여 4클럭짜리 머신 사이클의 8051을 주로 사용한다. 그러므로 이러한 산업에서 널리 사용되는 8비트 CPU로 32비트 주변 장치로 32비트를 전송하기 위해서는 모두 40클럭(즉, 10개 x 4클럭)이 소요된다.
이러한 어셈블코드를 어셈블링하면 명령어가 프로그램 메모리에서 차지하는 용량을 알 수 있으며 실제 구현을 통해 확인하면 명령어가 프로그램 메모리에서 13바이트를 차지한다.
만약 128개의 32비트 데이터를 8비트 CPU에서 읽어 오는 경우라면 6144클럭이 소요되고 프로그램 메모리에서 차지하는 영역은 2.3K바이트를 차지한다.
그러므로, 클럭이 많이 소요되므로 결국 처리 속도가 느린 문제점이 있으며, 명령어들이 프로그램 메모리에서 많은 영역을 차지하므로 프로그램 메모리의 용량을 크게 해주어야 하는 문제점이 있다.
상기한 바와 같은 종래의 문제점을 해결하기 위해, 본 발명은 8비트 CPU로 8비트보다 큰 대역폭의 데이터를 읽어 오는 경우에도 처리 속도가 느려지지 않고, 명령어들이 프로그램 메모리에서 많은 영역을 차지하지 않는 8비트 CPU의 데이터 리드 방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체를 제안하는 것이다.
또한, 8비트 CPU로 8비트보다 큰 대역폭을 갖는 주변장치에서 데이터를 읽어 올 수 있어 8비트 CPU를 8비트보다 큰 대역폭을 갖는 주변장치에 직접 연결할 수 있는 8비트 CPU의 데이터 리드 방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체를 제안하는 것이다.
본 발명의 또 다른 목적들은 이하의 실시예에 대한 설명을 통해 쉽게 이해될 수 있을 것이다.
상기한 바와 같은 목적을 달성하기 위해, 본 발명의 일 측면에 따르면 CPU가 제공된다.
본 발명의 바람직한 일 실시예에 따르면, n(2이상인 임의의 자연수)개의 m(임의의 자연수) 비트 누산기; 상기 누산기 각각에 연결되는 입력 포트; 및 상기 입력 포트를 통해 입력되는 데이터가 m 비트 단위로 각 누산기에 연속적으로 저장되도록 k(임의의 자연수)개의 누산기를 활성화하는 활성 제어부를 포함하는 것을 특징으로 하는 CPU가 제공된다.
상기 활성화되는 누산기의 수(k)는 상기 데이터의 크기/m 비트 이상인 최소의 자연수일 수 있다.
상기 누산기의 개수(n)는 수학식 n = 상기 데이터의 크기/m 비트를 만족할 수 있다.
상기 입력 포트는 상기 CPU가 연결되는 주변장치의 데이터 버스와 연결될 수 있다.
상기 CPU는 명령어의 해석 및 실행을 수행하는 제어장치; 및 상기 n개의 누산기의 주소를 지정하는 레지스터를 더 포함할 수 있다.
또한, 상기 CPU는 상기 명령어를 저장하는 프로그램 메모리를 더 포함할 수 있으며, 상기 주소를 지정하는 레지스터는 상기 CPU가 연결되는 주변장치의 어드레스 버스와 연결될 수 있다.
그리고, 상기 CPU는 m비트의 처리 단위를 가질 수 있으며, 상기 데이터는 m비트 단위의 부분 데이터로 각 누산기에 동시 저장될 수 있다.
본 발명의 다른 측면에 의하면, CPU의 데이터 리드 방법이 제공된다.
본 발명의 바람직한 일 실시예에 따르면, m비트 처리 단위의 CPU가 m비트를 초과하는 대역폭을 갖는 주변 장치로부터 데이터를 읽는 방법에 있어서, 연결된 주변 장치의 대역폭에 따라 m비트 처리 단위의 CPU의 제어 출력을 조정하는 단계(a); 읽어올 데이터가 저장된 주변 장치 내의 주소 및 상기 데이터가 저장될 기록 주소를 상기 주변 장치로 전송하는 단계(b); 및 상기 주변 장치로부터 m비트 단위로 각각 입력되는 상기 데이터를 상응하는 기록 주소의 m비트 단위의 누산기에 각각 저장하는 단계(c)를 포함하는 CPU의 데이터 리드 방법이 제공된다.
본 발명의 또 다른 측면에 의하면, CPU의 데이터 리드 방법을 기록한 기록매체가 제공된다.본 발명의 바람직한 일 실시예에 따르면, m비트 CPU로 m비트보다 큰 대역폭을 갖는 주변 장치에서 데이터를 읽을 수 있도록 디지털 처리 장치에 의해 실행될 수 있는 명령어들의 프로그램이 유형적으로 구현되어 있으며 디지털 처리 장치에 의해 판독될 수 있는 프로그램을 기록한 기록 매체에 있어서, 연결된 주변 장치의 대역폭에 따라 m비트 처리 단위의 CPU의 제어 출력을 조정하는 단계(a); 읽어올 데이터가 저장된 주변 장치 내의 주소 및 상기 데이터가 저장될 기록 주소를 상기 주변 장치로 전송하는 단계(b); 및 상기 주변 장치로부터 m비트 단위로 각각 입력되는 상기 데이터를 상응하는 기록 주소의 m비트 단위의 누산기에 각각 저장하는 단계(c)를 포함하는 CPU의 데이터 리드 방법을 기록한 기록매체가 제공된다.
상기 데이터는 m비트 단위의 부분 데이터로서 동시에 각 누산기에 저장될 수 있다.
상기 누산기의 개수(n)는 수학식 n = 상기 데이터의 크기/m 비트를 만족할 수 있다.
상기 연결된 주변 장치의 대역폭에 따라 m비트 처리 단위의 CPU의 제어 출력을 조정하는 단계는 상기 CPU의 클럭(clock) 수의 조절에 의해 수행될 수 있다.
이하, 본 발명의 바람직한 실시예를 첨부한 도면들을 참조하여 상세히 설명하기로 한다.
이하에서는 현재 산업계에서 널리 사용되는 8비트 CPU를 중심으로 본 발명을 설명하기로 하나, 본 발명에 의한 CPU와 CPU의 데이터 리드 방법은 8비트 이외의 다른 CPU(예를 들어, 4비트, 16비트, 32비트, 64비트 등과 같이 8비트 이외의 처리 단위를 가지는 모든 CPU)의 경우에도 적용될 수 있음은 자명하다.
먼저 도 3을 참조하여 본 발명의 바람직한 일 실시예에 따른 8비트 CPU의 구조를 살펴본다.
도 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라 함)의 약어로 산술논리연산장치로도 불리우며 명령어 내에 있는 연산자들에 의해 비교, 판단, 연산을 수행 한다.
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) 및 ENHNC(358)을 포함한다.
DPTR(340)은 Data PoinTer Register(이하 DPTR이라 함)의 약어로 16비트 길이를 갖고 있으며, 8비트 단위로 상위(DPH), 하위(DPL)로 나누어질 수 있다. 이 레지스터는 외부 데이터 메모리와 데이터 전송시 어드레스 포인터로서 사용되며, 프로그램 메모리(ROM: Read Only Memory)에서 정수 연산 혹은 ACC(350)와 조합해서 테이블 분기로 사용된다. DPTR(340)은 데이터를 읽어 올 주변 장치의 주소와 읽어 온 데이터가 저장될 ACC(350)의 주소를 데이터를 읽어 올 주변 장치로 전송한다.
ACC(350)는 Accumulater(이하 ACC라 함)의 약어로 누산기로도 불리우며 산술과 논리연산의 결과를 일시적으로 기억하는 레지스터로 주변 장치로부터 읽어 온 데이터가 저장된다.
본 발명에 의한 8비트 CPU는 종래의 8비트 CPU와 달리 하나의 8비트의 정보를 저장하는 하나의 ACC를 포함하는 것이 아니라 다수의 ACC(ACC(350), ACC1(352), ACC2(354) 및 ACC3(356))를 포함할 수 있다. 이는 8비트를 초과하는 대역폭의 데이터를 CPU(300)가 독출할 수 있도록 하기 위함이다.
도 3에서는 8비트 CPU를 기준으로 32비트 주변 장치로부터 32비트 데이터를 읽어 오는 경우를 기준으로 ACC를 종래와 달리 3개의 ACC를 더 포함하여 모두 4개의 ACC를 포함하는 것으로 도시하였다. 그러나, 읽어오는 주변 장치의 데이터 비트 수에 따라 종래와 달리 추가되는 ACC의 개수는 달라질 수 있다.
즉, 예를 들어 8비트 CPU를 16비트의 주변장치에만 연결하는 경우라면 이 경우 ACC는 하나만을 더 추가시켜 모두 2개의 ACC를 포함하게 하거나 24비트 주변장치만 사용하는 경우 3개의 ACC 등이 가능하다. 물론, CPU(300)는 둘 이상의 ACC를 이미 구비한 상태에서 결합된 주변 장치의 처리 단위에 상응하는 개수의 ACC만이 활성화되도록 제어할 수도 있음은 당연하다.
또한 본 설명과 같이 32비트를 기준으로 모두 ACC를 4개를 포함하고 16비트 또는 24비트 등과 연결하는 경우 ACC를 선택적으로 사용하는 것도 가능함은 자명하다.
증가된 ACC는 각각 별도의 고유의 주소를 가지게 되며 별도의 고유 주소를 이용하여 DPTR(340)에서 주변장치의 어드레스 버스를 통해 지정된 주소에서 지정된 ACC로 데이터를 읽어 온다.
그리고 증가된 ACC들은 별도의 입출력포트를 가지며 데이터 버스()와 직접 연결된다.
본 발명에서는 증가된 ACC에 정보를 저장하고 제어할 수 있는 기능을 수행할 수 있는 레지스터를 더 포함한다. 따라서 본 발명에 의한 8비트 CPU는 종래와 달리 SFR(330)에 ENHNC(358)이라는 확장 레지스터를 더 포함한다.
ENHNC(358)는 ENHaNCe function register into SFR(이하 ENHNC이라 함)의 약어로 8비트를 초과하는 예를 들면, 16비트, 24비트, 32비트의 데이터 읽기인지 여부를 구별하기 위한 기능을 수행하는 레지스터이다.
ENHNC(358)는 주변 장치의 처리 단위에 상응하는 수량의 ACC를 활성화시키거나, 주변 장치의 처리 단위에 상응하도록 미리 구비된 모든 ACC가 데이터 기록을 수행할 수 있도록 한다는 점에서 활성 제어부라 칭해질 수도 있다.
즉, ENHNC(358)는 예를 들어 32비트의 데이터 읽기인 것으로 판단하면, 주변장치로부터 DPTR(340)가 읽어온 32비트 데이터가 각 ACC에 8비트씩 저장될 수 있도록 상응하는 수량의 ACC를 활성화시킬 수 있는 활성 제어부이다. 물론, CPU(300)는 결합된 주변 장치의 처리 단위에 상응하는 수량의 ACC만을 미리 구비할 수도 있으며, 이 경우 해당 ACC는 데이터 기록을 위해 미리 지정된 동작을 수행하거나 ENHNC(358)에 의해 활성화된 후 데이터 기록을 위한 동작을 수행할 수도 있다.
DPTR(340)은 지정하는 주소에 상응하는 데이터가 상응하는 ACC에 저장되도록 해당 데이터를 제공하는 주변 장치로 요청한다. 그러나 일반적인 8비트 CPU에서는 8비트 데이터만을 읽어와서 ACC에 저장하므로 물리적으로 추가된 3개의 ACC에 데이터를 저장할 수 있는 기능을 수행할 수 있도록 하여야 한다.
이를 위해 외부 데이터 메모리로의 접근 명령어와 데이터 접근을 위한 주소 명령어 기능을 추가한다.
아래 표 1은 발명에 의한 8비트 CPU에 포함되는 ENHNC(358)의 각 영역에서 수행되는 기능을 예시한 표이다.
[표 1]
7 6 5 4 3 2 1 0
- - - - - BADDR ENRD32 ENWR32
ENHNC(358)의 '0'영역이 활성화되면 ENWR32 즉, 32비트 데이터를 쓰기위한 쓰기(write) 레지스터로 기능을 수행하고, '1'의 영역이 활성화되면 ENRD32 즉, 32비트 데이터를 읽기위한 읽기(read) 레지스터로 기능을 수행한다.
'2'영역이 활성되면 BADDR 즉, 데이터 주소를 읽기 위한 주소를 4씩 증가시킨다.
본 발명에 의한 8비트 CPU에서 8비트보다 대역폭이 큰 주변 장치로부터 데이터를 읽어오기 위해서는 추가된 외부 데이터 메모리로의 접근 명령어와 데이터 접근을 위한 주소 명령어 기능은 명령어 'MOVX A @DPTR'와 'MOVX A @Rn'에 의해 수행된다.
일반 8비트 데이터 읽기와 32 비트 데이터 읽기 기능을 구분하기 위한 레지스터 ENHNC(358)의 1비트를 ENRD32(enable 32 bit read)를 high로 셋팅하며 32 비트 데이트를 8비트 ACC 4개에 적재한다.
일반 8비트 CPU는 바이트 단위로 데이터를 읽거나 쓰므로 'INC DPTR' 명령어를 수행하면 주소가 1씩 증가한다. 그러나 본 발명에 의한 8비트 CPU(300)는 예를 들면 주변 장치의 데이터 처리 단위(32 비트)로 데이터를 읽음으로 데이터 포인트 명령어가 다음 주소를 지시하기 위해서 는 4씩 증가하여야 한다.
마찬가지로 일반적인 8비트 데이터 읽기 기능과의 구별은 레지스터 ENHNC(358)의 2번 비트 BADDR(DPTR Byte address mode(+4))를 1로 설정하면 된다.
ICB(360)는 Internal CPU Bus(이하 ICB라 함)의 약어로 CPU 내부의 전기적 신호를 전달하는 통로이다.
종래의 8비트 CPU에서와 같이 8비트 CPU내에 포함되는 ICB(360)를 통해서는 8비트 신호만을 전송한다.
그러나, 증가된 ACC들(ACC1, ACC2, ACC3)은 입력 포트를 통해 직접 주변 장치의 데이터 버스(410)에 연결되어 데이터를 수신한다.
따라서 추가되는 입력 포트는 추가되는 ACC의 개수에 따라 결정되며 추가되는 ACC는 전술한 바와 같이 연결하고자 하는 주변장치의 대역폭에 의해 결정될 수 있다.
이상의 구성을 참조하여 본 발명에 의한 8비트 CPU와 주변장치의 연결에 대해 살펴본다.
도 4는 본 발명의 바람직한 일 실시예에 따른 8비트 CPU와 주변장치와의 연결 구성을 도시한 도면이다.
도 4에 도시된 바와 같이, 8비트 CPU(300)는 프로그램 메모리(400)와 결합되며, 데이터 버스(410)와 어드레스 버스(420)에 연결되어 주변장치와 연결된다.
프로그램 메모리(400)는 명령어가 저장되는 메모리이며, 도 4에서는 CPU(300)의 외부에 구성되는 것으로 도시하였으나 CPU(300)의 내부에 포함되어 구성될 수도 있다.
데이터 버스(410)는 CPU(300)에서 메모리나 입출력 기기 등의 주변장치에 데이터를 송출하거나 반대로 주변장치에서 CPU(300)에 데이터를 읽어 들일 때 필요한 전송 선로이다. 데이터 버스(220)는 CPU(300)와 메모리 또는 입출력기 간에 어떤 곳으로도 데이터를 전송할 수 있으므로 쌍방향 버스라고도 한다. 데이터 버스(410)는 CPU(300) 내의 ICB(160)와 연결되어 데이터를 주고 받는다.
어드레스 버스(230)는 CPU(300)가 메모리나 입출력 기기의 주소를 지정할 때 사용되는 전송 선로이다. 어드레스 버스(230)는 CPU(300)에서만 주소를 지정할 수 있기 때문에 단방향 버스라고도 한다. 어드레스 버스(420)는 CPU(300)내의 SFR(130)에 포함된 DPTR(140)과 연결되어 DPTR(140)에서 지정한 주소를 전송하는 통로 역할을 수행한다.
이러한 본 발명에 의한 8비트 CPU와 8비트보다 큰 대역폭을 갖는 주변장치의 연결을 참조하여 본 발명에 의한 8비트 CPU에서 8비트보다 큰 대역폭을 갖는 주변 장치에서 데이터를 읽어 오는 방법에 대해 살펴 본다.
이하에서는 INTEL사의 8비트 CPU인 8051을 기준으로 예시하여 본 발명에 의한 8비트 CPU로 8비트보다 큰 대역폭을 갖는 주변 장치에서 데이터를 읽어 오는 방법에 대해 설명한다.
기존에는 T1에서 이 명령어를 가져와서 디코딩하고, T2에서 실행하고 T3에서 누산기(ACC)에 외부 데이터를 적재하고 T4에서는 머신 사이클을 맞추기 위해서 쉬 고 있다.
이에 반해 수정 후의 제어 출력은 T1에서 이 명령어를 가져와서 디코딩하고, T2에서 실행하고 T3에서 ACC에 외부 데이터를 로드(load)하고 T4에서 추가된 'ACC1'에, T5에서 추가된 'ACC2'에, T6에서 추가된 'ACC3'에 데이터를 로드한다. 그리고 머신 사이클을 맞추기 위해 T7, T8을 쉰다.
이러한 제어 출력의 수정과 함께 본 발명에 의한
8비트 CPU에서 32비트 데이터를 읽기 위해 실행되는 명령어에 대해 살펴본다.
8비트 CPU에서 32비트 데이터를 주변장치로부터 읽어오는 경우 본 발명에 필요한 명령어들을 그 순서에 따라 간단히 살펴본다.
먼저 'MOV DPTR #5000H'은 5000H 번지를 가리키기 위한 데이터를 DPTR(340)에 적재한다.
'SETB ENRD32'은 32 비트 리드 레지스터(ENRD32)를 활성화시키고, 'SETB BADDR'는 데이터 주소를 읽기 위해 주소를 4씩 증가시킨다.
'MOVX A @DPTR'는 32 비트 데이터를 4개의 ACC(350, 352, 354 및 356)에 각각 8비트 데이터를 적재하고, 'INC DPTR' 다음 32 비트 데이터를 지정하기 위해 데이터 지정 레지스터인 DPTR(340)을 4를 증가시켜준다.
이러한 명령어들을 실제 컴파일링(compiling)을 통해 측정한 프로그램 메모리(400)에서 차지하는 비중을 살펴본다.
본 발명에 의한 8비트 CPU에서 32비트 레지스터를 가진 주변장치에서 데이터 를 읽어 오기 위해서 앞서 살펴 본 바와 같이 5개의 명령어가 사용된다.
5개의 명령어를 수행하기 위해서 8051을 기준으로 할 때 4클럭 * 5개 명령어로 20클럭이 소요되는 것이 원칙이지만, 'MOVX A @DPTR' 명령어는 읽어 올 데이터의 위치 주소와 읽어 온 데이터가 저장될 주소를 모두 나타내어야 하므로 2머신 사이클 즉 8클럭을 사용하게 된다.
따라서, 총 소요되는 클럭수는 8클럭 + 4클럭*4개 명령어 = 24클럭이 된다.
128개의 연속된 32 비트 레지스터를 읽는다면 'MOV DPTR #5000H', 'SETB BADDR' 명령어는 처음에만 설정되고 'SETB ENRD32', 'MOVX A @DPTR', 'INC DPTR'는 128번 반복된다.
따라서 총 클럭은 4 + 4 + 128 * 12 + 128 * 4= 2054 클럭이 소요되고, 프로그램 메모리도 266 바이트가 소요된다.
이러한 본 발명에 의한 8비트 CPU를 실제 구현한 결과와 종래의 8비트 CPU에서의 구현 결과는 아래 표 2에서 확인된다.
아래 표 2는 CPU로 128개의 데이터를 32 비트 시스템 레지스터로 읽어 오는 경우 본 발명에 의할 때 성능 향상을 나타내는 표로 클럭 수는 약 3배 절약되고 프로그램 메모리 사이즈는 약 6.2배 적어짐을 알 수 있다.
[표 2]
구분 클럭 수 프로그램메모리크기(Bytes)
종래8비트CPU 6144 1644
본 발명에 의한8비트CPU 2054 266
향상된 배수 3배 6.2배
따라서, 본 발명에 의한 8비트 CPU(300)에 의하면 8비트보다 큰 대역폭을 가진 주변장치에서 데이터를 읽어 오는 경우에도 종래보다 작은 클럭 수를 사용할 수 있고 또한 명령어들이 저장되는 프로그램 메모리(400)의 크기도 줄일 수 있게 된다.
본 발명에 의한 8비트 CPU(300)는 종래의 ACC 외에도 추가된 ACC와 비트 수에 따른 데이터 전송을 구별하기 위한 기능을 수행하는 레지스터를 더 포함하고 추가된 ACC는 별도의 입력 포트를 이용하여 주변장치의 데이터 버스(410)에 직접 연결하여 데이터를 수신한다.
또한 ACC에 저장되는 데이터의 비트 수에 따라 CPU(300)의 클럭에 따른 머신 사이클을 조정하여 제어출력을 수정함으로써 명령어들이 저장되는 프로그램 메모리(400)의 크기를 줄이면서도 8비트보다 큰 대역폭을 가지는 주변장치로부터 데이터를 읽어 올 수 있게 된다.
한편, 주변 장치로부터 읽어 와서 CPU내의 각각의 누산기에 저장된 데이터는 제어 장치인 CU(310)에서 데이터를 출력하는 제어 신호에 따라 각각의 누산기에 연결된 출력 포트를 통해 한 번에 CPU와 연결되어 데이터를 처리하는 장치 예를 들면, 데이터를 저장하는 메모리 장치 등으로 데이터를 출력할 수 있다.
따라서 8비트 CPU로 32비트의 대역폭을 가지는 주변 장치에서 데이터를 읽어오는 경우에도 한 번에 32비트 데이터를 읽어 오고, 읽어 온 데이터를 처리할 수 있다.
상기한 설명에서는 현재 산업계 전반에서 가장 널리 사용되는 8비트 CPU를 중심으로 설명하였으나 m비트 처리 단위의 CPU가 m비트를 초과하는 대역폭을 갖는 주변 장치로부터 데이터를 읽기 위한 방법에도 본 발명이 적용될 수 있음은 자명하다.
예를 들어 16비트의 CPU로 32비트의 주변 장치에서 데이터를 읽어 오는 경우라면 2개의 누산기와 누산기에 각각 연결되는 입력 포트를 더 포함하여 2개의 누산기에 16비트 단위로 각각 데이터가 저장되도록 함으로써 한번에 16비트 CPU로 32 비트의 주변 장치에서 데이터를 읽어 오도록 CPU를 구성할 수도 있다.
따라서 본 발명에 의한 CPU는 CPU의 데이터 처리 단위와 CPU가 연결되는 주변 장치의 대역폭에 따라 CPU가 한 번에 데이터를 읽어 오기에 적합하도록 CPU를 구성할 수 있다.
상기한 본 발명의 바람직한 실시예는 예시의 목적을 위해 개시된 것이고, 본 발명에 대해 통상의 지식을 가진 당업자라면 본 발명의 사상과 범위 안에서 다양한 수정, 변경, 부가가 가능할 것이며, 이러한 수정, 변경 및 부가는 하기의 특허청구범위에 속하는 것으로 보아야 할 것이다.
이상에서 설명한 바와 같이, 본 발명에 의한 m비트 처리 단위의 CPU가 m비트를 초과하는 대역폭을 갖는 주변 장치로부터 데이터를 읽는 경우에도 래퍼가 필요 없는 장점이 있다.
m비트 처리 단위의 CPU가 m비트를 초과하는 대역폭을 갖는 주변 장치로부터 데이터를 읽는 경우에도 처리 속도가 빠르며, 명령어들이 프로그램 메모리에서 많은 영역을 차지하지 않는 장점이 있다.
또한, m비트 처리 단위의 CPU가 m비트를 초과하는 대역폭을 갖는 주변 장치로부터 데이터를 읽어 오기 위해 명령어를 변화시켜도 기존의 컴파일러를 그대로 사용할 수 있는 장점이 있다.

Claims (17)

  1. n(2이상인 임의의 자연수)개의 m(임의의 자연수) 비트 누산기;
    상기 누산기 각각에 연결되는 입력 포트; 및
    상기 입력 포트를 통해 입력되는 데이터가 m 비트 단위로 각 누산기에 연속적으로 저장되도록 k(임의의 자연수)개의 누산기를 활성화하는 활성 제어부를 포함하는 것을 특징으로 하는 CPU.
  2. 제1항에 있어서,
    상기 활성화되는 누산기의 수(k)는 상기 데이터의 크기/m 비트 이상인 최소의 자연수인 것을 특징으로 하는 CPU.
  3. 제1항에 있어서,
    상기 누산기의 개수(n)는 하기 수학식
    n = 상기 데이터의 크기/m 비트
    를 만족하는 것을 특징으로 CPU.
  4. 제1항에 있어서,
    상기 입력 포트는,
    상기 CPU가 연결되는 주변장치의 데이터 버스와 연결되는 것을 특징으로 하는 CPU.
  5. 제1항에 있어서,
    상기 CPU는,
    명령어의 해석 및 실행을 수행하는 제어장치; 및
    상기 n개의 누산기의 주소를 지정하는 레지스터를 더 포함하는 것을 특징으로 하는 CPU.
  6. 제5항에 있어서,
    상기 CPU는,
    상기 명령어를 저장하는 프로그램 메모리를 더 포함하는 것을 특징으로 하는 CPU.
  7. 제5항에 있어서,
    상기 주소를 지정하는 레지스터는 상기 CPU가 연결되는 주변장치의 어드레스 버스와 연결되는 것을 특징으로 하는 CPU.
  8. 제1항에 있어서,
    상기 CPU는 m비트의 처리 단위를 가지는 것을 특징으로 하는 CPU.
  9. 제1항에 있어서,
    상기 데이터는 m비트 단위의 부분 데이터로 각 누산기에 동시 저장되는 것을 특징으로 하는 CPU.
  10. m비트 처리 단위의 CPU가 m비트를 초과하는 대역폭을 갖는 주변 장치로부터 데이터를 읽는 방법에 있어서,
    연결된 주변 장치의 대역폭에 따라 m비트 처리 단위의 CPU의 제어 출력을 조정하는 단계(a);
    읽어올 데이터가 저장된 주변 장치 내의 주소 및 상기 데이터가 저장될 기록 주소를 상기 주변 장치로 전송하는 단계(b); 및
    상기 주변 장치로부터 m비트 단위로 각각 입력되는 상기 데이터를 상응하는 기록 주소의 m비트 단위의 n개의 누산기에 각각 저장하는 단계(c)를 포함하는 CPU의 데이터 리드 방법.
  11. 제10항에 있어서,
    상기 데이터는 m비트 단위의 부분 데이터로서 동시에 각 누산기에 저장되는 것을 특징으로 하는 CPU의 데이터 리드 방법.
  12. 제10항에 있어서,
    상기 누산기의 개수(n)는 하기 수학식
    n = 상기 데이터의 크기/m 비트
    를 만족하는 것을 특징으로 CPU의 데이터 리드 방법.
  13. 제10항에 있어서,
    상기 단계(a)는,
    상기 CPU의 클럭(clock) 수의 조절에 의해 수행되는 것을 특징으로 하는 CPU의 데이터 리드 방법.
  14. m(임의의 자연수)비트 CPU로 m비트보다 큰 대역폭을 갖는 주변 장치에서 데이터를 읽을 수 있도록 디지털 처리 장치에 의해 실행될 수 있는 명령어들의 프로그램이 유형적으로 구현되어 있으며 디지털 처리 장치에 의해 판독될 수 있는 프로그램을 기록한 기록 매체에 있어서,
    연결된 주변 장치의 대역폭에 따라 m비트 처리 단위의 CPU의 제어 출력을 조정하는 단계(a);
    읽어올 데이터가 저장된 주변 장치 내의 주소 및 상기 데이터가 저장될 기록 주소를 상기 주변 장치로 전송하는 단계(b); 및
    상기 주변 장치로부터 m비트 단위로 각각 입력되는 상기 데이터를 상응하는 기록 주소의 m비트 단위의 n개의 누산기에 각각 저장하는 단계(c)를 포함하는 CPU의 데이터 리드 방법을 기록한 기록매체.
  15. 제14항에 있어서,
    상기 데이터는 m비트 단위의 부분 데이터로서 동시에 각 누산기에 저장되는 것을 특징으로 하는 CPU의 데이터 리드 방법을 기록한 기록매체.
  16. 제14항에 있어서,
    상기 누산기의 개수(n)는 하기 수학식
    n = 상기 데이터의 크기/m 비트
    를 만족하는 것을 특징으로 CPU의 데이터 리드 방법을 기록한 기록매체.
  17. 제14항에 있어서,
    상기 단계(a)는,
    상기 CPU의 클럭(clock) 수의 조절에 의해 수행되는 것을 특징으로 하는 CPU의 데이터 리드 방법을 기록한 기록매체.
KR1020060027903A 2006-03-28 2006-03-28 Cpu의 데이터 리드 방법 및 이를 구현하기 위한프로그램이 기록된 기록매체 KR20070097680A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060027903A KR20070097680A (ko) 2006-03-28 2006-03-28 Cpu의 데이터 리드 방법 및 이를 구현하기 위한프로그램이 기록된 기록매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060027903A KR20070097680A (ko) 2006-03-28 2006-03-28 Cpu의 데이터 리드 방법 및 이를 구현하기 위한프로그램이 기록된 기록매체

Publications (1)

Publication Number Publication Date
KR20070097680A true KR20070097680A (ko) 2007-10-05

Family

ID=38803837

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060027903A KR20070097680A (ko) 2006-03-28 2006-03-28 Cpu의 데이터 리드 방법 및 이를 구현하기 위한프로그램이 기록된 기록매체

Country Status (1)

Country Link
KR (1) KR20070097680A (ko)

Similar Documents

Publication Publication Date Title
KR960001273B1 (ko) 단일칩 마이크로컴퓨터
US6986029B2 (en) Micro-controller for reading out compressed instruction code and program memory for compressing instruction code and storing therein
JP4226085B2 (ja) マイクロプロセッサ及びマルチプロセッサシステム
KR100450680B1 (ko) 버스 대역폭을 증가시키기 위한 메모리 컨트롤러, 이를이용한 데이터 전송방법 및 이를 구비하는 컴퓨터 시스템
US5696957A (en) Integrated circuit comprising a central processing unit for executing a plurality of programs
US5680632A (en) Method for providing an extensible register in the first and second data processing systems
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
US6230238B1 (en) Method and apparatus for accessing misaligned data from memory in an efficient manner
US7254667B2 (en) Data transfer between an external data source and a memory associated with a data processor
KR20070097680A (ko) Cpu의 데이터 리드 방법 및 이를 구현하기 위한프로그램이 기록된 기록매체
KR20070068664A (ko) 8비트보다 큰 대역폭을 갖는 주변장치와 같은 대역폭을사용하는 8비트 cpu 및 8비트 cpu에서 8비트보다 큰대역폭을 갖는 주변 장치와 동일한 대역폭을 가지게 하는방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체
KR20080002419A (ko) n비트의 CPU 및 이를 이용한 데이터 버스트 리드 방법
KR20080002423A (ko) n 비트의 CPU 및 이를 이용한 데이터 버스트 라이트방법
KR20070093041A (ko) 8비트보다 큰 대역폭을 갖는 주변장치와 같은 대역폭을사용하는 8비트 cpu 및 8비트 cpu에서 8비트보다 큰대역폭을 갖는 주변 장치와 동일한 대역폭을 가지게 하는방법 및 이를 구현하기 위한 프로그램이 기록된 기록매체
KR20080010022A (ko) n 비트의 CPU 및 이를 이용한 n 비트보다 큰 대역폭을갖는 주변장치와의 연결 방법
US7213127B2 (en) System for producing addresses for a digital signal processor
KR20080012467A (ko) n 비트의 프로세서 및 이를 이용한 주변장치로의 연산데이터의 전송 방법
US5524259A (en) Processor system having an external arithmetic device for high speed execution of computation of data
US7133979B2 (en) Method of transferring data between a first device and a second device while manipulating at least one quantity in dependence on an address
CN114443528A (zh) 一种dma二维数据传输/清零参数配置方法
JPH01209535A (ja) マイクロコンピュータ・エミュレータ
JPH11120114A (ja) データ受渡装置
JPS602708B2 (ja) 単一チツプ・コンピユ−タのアドレス指定方式
JPS6354630A (ja) デ−タ処理装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
NORF Unpaid initial registration fee