KR100282107B1 - 정보처리장치와 방법 및 스케줄링 디바이스 - Google Patents

정보처리장치와 방법 및 스케줄링 디바이스 Download PDF

Info

Publication number
KR100282107B1
KR100282107B1 KR1019970010270A KR19970010270A KR100282107B1 KR 100282107 B1 KR100282107 B1 KR 100282107B1 KR 1019970010270 A KR1019970010270 A KR 1019970010270A KR 19970010270 A KR19970010270 A KR 19970010270A KR 100282107 B1 KR100282107 B1 KR 100282107B1
Authority
KR
South Korea
Prior art keywords
data
instruction
register
address
command
Prior art date
Application number
KR1019970010270A
Other languages
English (en)
Other versions
KR970066863A (ko
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 모리시타 요이찌
Publication of KR970066863A publication Critical patent/KR970066863A/ko
Application granted granted Critical
Publication of KR100282107B1 publication Critical patent/KR100282107B1/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)

Abstract

본 발명에 따라, 다수의 명령을 저장하는 명령 저장 수단과 그 명령 저장수단으로부터 명령들을 가져오는 중앙처리장치를 포함함으로써 명령을 실행할 수 있는 정보처리장치가 제공된다. 이 중앙처리장치는 동작에 필요한 제 1 데이터를 정하기 위한 제 1 명령과 동작에 의해서 얻어진 제 2 데이터를 가져오기 위한 제 2 명령을 각각 실행함으로써 중앙처리장치의 2 이상의 머신 주기를 필요로 하는 동작을 실행하는 처리를 실행한다. 그 머신 주기는 중앙처리장치에 의한 명령을 실행하기 위한 시간 단위이다. 그 중앙처리장치는 제 1 명령을 실행한 후, 제 2 명령을 실행하기 전에 제 2 데이터를 필요로 하지 않는 제 3 명령을 적어도 하나 실행한다.

Description

정보처리장치와 방법 및 스케줄링 디바이스
본 발명은 정보처리장치, 및 저장수단에 저장된 명령을 불러와서 명령을 실행하는 중앙처리장치(CPU)를 이용한 정보처리방법, 및 정보처리를 위한 명령을 정리하는 스케줄링 디바이스(Scheduling device)에 관한 것이다. 특히, 본 발명은 정보처리장치와 정보처리 방법, 및 비교적 장시간을 필요로 하는 처리를 실행하는 계획장치에 관한 것이다.
마이크로컴퓨터와 마이크로프로세서등과 같은 정보처리장치는 급증하여왔고, 전자기술의 최신 개발에 힘입어 다양한 분야에서 사용되고 있다. 특히, 최근 몇년동안 마이크로컴퓨터와 마이크로프로서등과 같은 중앙처리장치의 동작 주파수는 고속 회로기술의 개발과 반도체 장치 크기의 감소 때문에 증가되어왔다. 일부 CPU는 수백 MHz의 높은 주파수로 동작된다. CPU의 성능은 더 높은 동작 주파수에 의해서 개선되지만, CPU로부터, 실행될 명령코드와 데이터를 저장하는 외부 메모리로의 액세스 속도는 CPU 동작 주파수의 수배 내지 수십배로 비교적 느리다. 동작을 실행하도록 만들어진 CPU로부터 외부 메모리로 액세스하기 위해서는 비교적 장시간을 필요로하기 때문에, 정보처리장치의 성능은 대체적으로 개선되지 않은 실정이다.
외부 메모리로의 액세스 외에도, 비교적 장시간을 필요로 하는 동작(예를 들면 수치 연산)은 비교적 빠른 속도로 동작할 수 있는 CPU를 포함하는 정보처리장치에 의해서 실행된다. 그러한 동작을 실행할 때, CPU 내부와 외부 사이의 처리속도의 큰 차이가 정보처리 효율을 저하시키는 결과를 가져온다.
이하, 종래의 정보처리장치의 구조와 외부 메모리에 접근하는 그의 동작에 대해서 설명할 것이다.
도 9는 종래의 정보처리장치(800)의 주요부의 개략도이다. 도 9에 도시한 바와 같이, 정보처리장치(800)는 프로세서(810)가 외부 메모리(850)를 포함한다. 프로세서(810)와 외부 메모리(850)는 외부 어드레스 버스(851)(851a 및 851b)와 외부 데이터 버스(852)(852a 및 852b)를 통해서 서로 연결된다.
중앙처리장치(이하, CPU라고 칭한다)(820), 버스 제어 유닛(830), 및 ROM(840)을 포함한다. 버스 제어 유닛(830)은 어드레스 디코더(833), 제어 회로(834), 메모리 액세스 신호발생부(835), 어드레스 인터페이스부(836) 및 데이터 인터페이스부(837)를 포함한다. CPU(820) 및 버스제어유닛(830)은 어드레스를 보내기 위한 어드레스 버스(821)와 데이터를 보내기 위한 데이터 버스(822)를 통해서 서로 연결된다. ROM(840)으로부터, 명령 버스(841)를 통해서 프로그램과 명령은 CPU(820)에 보내진다.
도 9에 보여준 바와 같이, CPU(820)으로부터 출력된 어드레스는 어드레스 버스(820)를 통해서 디코더(833)와 어드레스 인터페이스부(836)에 공급된다. 데이터버스(822)는 데이터 인터페이스부(837)에 연결된다. 어드레스 인터페이스부(836)는 어드레스 버스(851a)를 통해서 외부 어드레스 버스(851)에 연결되고, 데이터 인터페이스부(837)는 데이터 버스(852a)를 통해서 외부 데이터 버스(852)에 연결된다. 판독 요청 신호(901)와 기입 요청 신호(902)는 버스 제어 유닛(830)의 제어회로(834)에 입력된다. 디코드 어드레스(903)는 어드레스 버스(821)의 일부를 통해서 어드레스 디코더(833)에 공급된다. 어드레스 디코더(833)는 디코드 어드레스(903)를 디코드하고, 디바이스 확인신호(904)로서 제어회로(834)에 그 결과를 출력한다. 디바이스 확인 신호(904)는 외부 메모리(850)가 CPU(820)로부터 액세스되어야 하는지, 아니면 프로세서(810)의 디바이스가 CPU(820)로부터 액세스되어야 하는지, 액세스의 표적을 나타낸다.
제어회로(834)는 외부 액세스 시작신호(905), 어드레스 인터페이스부(836)를 제어하는 어드레스 제어 신호(906)와 디바이스 확인 신호(904)에 기초해서 데이터 인터페이스부(837)를 제어하는 데이터 제어신호(907), 판독 요청 신호(901)와 기입 요청신호(902)를 출력한다. 제어회로(834)는 또한 CPU(820)로부터 판독 요청 신호(901)와 기입 요청 신호(902)에 응답하여 응답신호(908)를 출력한다. 메모리 액세스 신호 발생부(835)는 제어회로(834)로부터 공급된 외부 액세스 시작 신호(905)에 기초해서 외부 메모리(850)를 액세스하는 메모리 액세스 신호(909)를 출력한다. 외부 메모리(850)는 메모리 액세스 신호(909)를 수신하고, 액세스가 완료되면, 그 외부 메모리(850)는 액세스 동작의 완료의 프로세서를 통보하기 위해 외부 응답신호(910)를 출력한다. 외부 응답 신호(910)는 버스 제어 유닛(830)의 제어 신호(834)에 공급된다.
위에 설명한 구조를 갖는 종래의 정보처리장치(800)는 예를 들면 다음과 같은 방법으로 오퍼레이팅된다. 먼저, CPU(820)에 의해서 단독으로 실행된 명령과, CPU(820)와 버스 제어 유닛(830)에 의해서 공동으로 실행된 명령을 포함하는 ROM(840)에 저장된 프로그램의 일례를 설명하려고 한다. 다음과 같은 명령의 각각에 대해서, 명령에 의해서 지적된 동작은 괄호안에 기재되어있다. 예를 들면 명령 11 내지 13은 외부 메모리(850)를 액세스하고 그 액세스 동작의 결과로서 얻은 데이터를 사용하는 처리를 나타낸다. 명령 14 내지 17은 CPU(820)에 의해서 단독으로 수행된 처리를 나타낸다. 아래 명령들에 사용된 숫자와 계산 등을 간단히 설명한다. 다른 숫자와 계산이 사용될 수도 있다.
명령 11 : MOV @mem_loc1, DO
(데이터는 외부 메모리(850)의 어드레스 mem_loc1로부터 판독되고, CPU(820)에 있는 레지스터(register: DO)에 저장된다)
명령 12 : ADD #10, DO
(CPU(820)에 있는 레지스터(DO)의 내용에 10을 더하고, 그 결과는 다시 레지스터(DO)에 저장된다)
명령 13 : MOV @mem_loc2, D2
(데이터는 외부 메모리(850)의 어드레스 mem_loc2로부터 판독되고, CPU(820)에 있는 레지스터(D2)에 저장된다)
명령 14 : MUL DO, D2
(CPU(820)에 있는 레지스터(D2)의 내용은 레지스터(DO)에 있는 내용과 곱해지고, 그 결과는 다시 레지스터(D2)에 저장된다)
명령 15 : ADD #1, D1
(CPU(820)에 있는 레지스터(D1)의 내용에 1을 더하고, 그 결과는 다시 레지스터(D1)에 저장된다)
명령 16 : ADD #4, A0
(CPU(820)에 있는 레지스터(A0)의 내용에 4를 더하고, 그 결과는 다시 레지스터(A0)에 저장된다)
명령 17 : ADD #4, A1
(CPU(820)에 있는 레지스터(A1)의 내용에 4를 더하고, 그 결과는 다시 레지스터(A1)에 저장된다)
도 10a와 도 10b를 참고해서, 위에 설명한 프로그램을 실행하기 위한 정보처리장치(800)의 동작에 대해서 주기 t1부터 t13까지 설명하려고 한다. 도 10a와 도 10b는 정보처리장치(800)의 동작 타이밍도면이다. 주기 t1 내지 t6는 도 10a에 나타내어있고, 주기 t7 내지 t13은 도 10b에 나타내어있다. 이 예에서, 외부 메모리(850)의 판독시간, 즉 외부 메모리(850)로부터 메모리 액세스 신호(909)을 수신하고, 외부 메모리(850)가 그 데이터를 외부 데이터 버스(852)에 출력할 때까지 어드레스가 외부 어드레스 버스(851)에 출력하는 시간이 4 머신 주기(machine cycles)이다. 데이터 "데이터1"이 외부 메모리(850)의 어드레스 mem_loc1에 미리 저장되고, 데이터 "데이터2"는 외부 메모리(850)의 어드레스 mem_loc2에 미리 저장된다.
외부 메모리(850)로부터 데이터를 판독하기 명령(명령 11 또는 13)이 CPU에 의해서 처리되면, 판독될 데이터의 어드레스(mem_loc1 또는 mem_loc2)는 어드레스 인터페이스부(836)와 어드레스 버스(821)를 통해서 외부 어드레스 버스(851)에 출력된다(주기 t1 또는 t6). 그러나, 외부 메모리(850)의 판독시간은 4 주기인데 이것은 CPU(820)의 시간단위(1 머신 주기)보다 더 긴 것이다. 따라서, 외부 메모리(850)로부터 출력된 데이터(데이터1 또는 데이터2)로부터 출력된 데이터가 데이터 인터페이스부(837)과 외부 데이터 버스(852)를 통해서 데이터버스(822)에 도달할때까지(주기 t4 또는 t9). CPU(820)는 다음번 처리를 실행할 수 없다. 다시말하면, CPU(820)는 외부 메모리로부터 데이터의 판독 동작이 완료될 때까지 다음번 명령을 실행하기 전에 대기상태로 된다. 또한, 비교적 긴 처리시간을 필요로 하는 수치 연산을 실행하는 경우에, CPU(820)는 수치 연산이 완료될 때까지 다음번 명령을 실행하기 전 대기시간으로 간다.
그러한 종래의 정보처리장치에서, CPU는 비교적 장시간을 필요로 하는 수치연산 또는 외부 메모리로부터 데이터의 판독 동작 때문에 다음번 명령을 실행하기 전에 대기시간으로 간다. 그렇게 하여, 그 대기시간 때문에 생기는 단점(예를 들면 처리 효율 감소)을 최소화하는 것이 요구된다.
외부 메모리로의 명백한 액세스 시간을 단축시키기 위해서, 마이크로컴퓨터 또는 마이크로프로세서에서 외부 메모리로부터 데이터를 미리가져오는 프로페치(prefetch) 버퍼, 또는 한 번 판독된 데이터를 버퍼링하는 캐쉬 메모리를 실장하는 것이 제안되어왔다.
그러나, 그러한 단점을 감소시키더라도, 캐쉬 메모리 또는 프리페치 버퍼를 마이크로컴퓨터나 마이크로프로세서에 실장하려면 하드웨어의 크기를 크게 증가시켜야 한다. 또한, 복잡한 제어를 필요로 하는 시간과 캐쉬 메모리로의 액세스 시간은 오퍼레이팅 주파수를 감소시킨다.
제1도는 본 발명의 일 실시예에 따른 정보처리장치를 개략적으로 보여주는 블록도.
제2도는 외부 메모리로부터 데이터의 판독처리를 위해 적용할 때, 제1도에 나타낸 정보처리장치의 예시 구조를 개략적으로 보여주는 블록도.
제3a도와 제3b도는 예시 프로그램을 실행하기 위한 제2도에 나타낸 정보처리장치의 동작 타이밍도.
제4a도와 제4b도는 예시 프로그램을 실행하기 위한 제2도에 나타낸 정보처리장치의 동작 타이밍도.
제5도는 외부 메모리로부터 데이터의 판독처리를 위해 적용할 때, 제1도에 나타낸 정보처리장치의 또다른 예시 구조를 개략적으로 보여주는 블록도.
제6도는 수하적 연산에 적용할 때 제1도에 나타낸 정보처리장치의 예시 구조를 개략적으로 보여주는 블록도.
제7도는 본 발명에 따른 스케줄링 디바이스의 개략도.
제8도는 본 발명에 따른 스케줄링 디바이스의 동작을 설명하는 플로우챠트.
제9도는 종래의 정보처리장치의 구조를 개략적으로 보여주는 블록도.
제10a도와 제10b도는 제9도에 나타낸 종래의 정보처리장치의 동작 타이밍도.
〈도면의 주요부분에 대한 부호의 설명〉
3 : 디코더 5 : 메모리 액세스 신호발생부
6 : 어드레스 인터페이스부 7 : 데이터 인터페이스부
8 : 판독 버퍼 어드레스 레지스터 9 : 판독 버퍼 데이터 레지스터
10,140 : ROM 20,120,120' : CPU
31 : 제 1 데이터 32 : 제 2 데이터
30,41, 107 : 제어회로 40 : 제 1 레지스터
50 : 제 2 레지스터 60 : 프로세스 소자
100 : 정보처리장치 110, 110' : 프로세서
113 : 응답 신호 116 : 외부 응답 신호
121 : 어드레스 버스 122 : 데이터 버스
130 : 버스 제어 유닛 151, 151 : 외부 어드레스 버스
152, 152 : 외부 데이터 버스 150 : 외부 메모리
170 : 버스 제어 유닛 180 : 수치 연산 유닛
24 : 수치 연산 제어회로
71 : 프로그램(상위레벨 언어, 어셈블리 언어)
70 : 스케줄링 디바이스 72 : 프로그램 (기계언어)
820 : CPU 821 : 어드레스 버스
822 : 데이터 버스
본 발명의 일 양태에 따라, 다수의 명령을 저장하는 명령 저장 수단과, 그 명령 저장 수단으로부터 명령들을 가져오는 중앙처리장치를 포함함으로써 명령을 실행할 수 있는 정보처리장치가 제공된다. 이 중앙처리장치는 동작에 필요한 제 1 데이터를 정하는 제 1 명령과 동작에 의해서 얻어진 제 2 데이터를 가져오기 위한 제 2 명령을 각각 실행함으로써 중앙처리장치의 2이상의 머신 주기를 필요로 하는 동작을 실행하는 처리를 실행한다. 그 머신 주기는 중앙처리장치에 의한 명령을 실행하기 위한 시간 단위이다. 그 중앙처리장치는 제 1 명령을 실행한 후, 제 2 명령을 실행하기 전에 적어도 하나의 제 3 명령(여기서, 제 3 명령은 제 2 데이터를 필요로 하지 않는다)을 실행한다.
본 발명의 일 구체예에서, 정보처리장치는 기억장치를 포함한다. 동작은 기억장치에 저장된 정보의 판독 동작을 포함하고, 제 1 데이터는 기억장치에서 판독될 정보의 판독 어드레스이고, 판독 어드레스는 제 1 명령에 의해서 명시된 메모리 영역에 정해진다.
본 발명의 일 구체예에서, 제 1 명령은 메모리 영역에 정해진 판독 어드레스에 기초한 판독 동작을 시작하는 명령을 포함한다.
본 발명의 일 구체예에서, 동작은 수치 연산을 포함하며, 제 1 데이터는 수치 연산을 위한 연산 데이터이고, 그 연산 데이터는 제 1 명령에 의해서 명시된 메모리 영역에 정해진다.
본 발명의 일 구체예에서, 제 1 명령은 메모리 영역에 정해진 연산 데이터에 기초해서 수치 연산을 시작하라는 명령을 포함한다.
본 발명의 일 구체예에서, 정보처리장치는 데이터를 저장하는 제 1 및 제 2 레지스터와, 그 제 1 및 제 2 레지스터를 제어하는 제어회로를 포함한다. 제어회로는 제 1 명령에 기초해서 제 1 레지스터에 제 1 데이터를 기입하고, 제 1 레지스터에 기입된 제 1 데이터에 기초해서 동작을 수행하고, 그 동작에 의해서 얻은 제 2 데이터를 제 2 레지스터에 기입하고, 제 2 레지스터에 저장된 제 2 데이터를 제 2 명령에 기초해서 중앙처리장치에 보낸다.
본 발명의 일 구체예에서, 정보처리장치는 기억장치를 추가로 포함한다. 제어회로는 기억장치에 액세스하는 것을 제어하고, 그 동작은 기억장치에 저장된 정보의 판독 동작을 포함하고, 제 1 데이터는 판독될 정보의 기억장치 내의 판독 어드레스이고, 제 2 데이터는 기억장치로부터 판독된 정보이다.
본 발명의 일 구체예에서, 제 1 명령은 제 1 레지스터에 정해진 판독 어드레스를 기초로 판독 동작을 시작하라는 명령을 포함한다.
본 발명의 일 구체예에서, 중앙처리장치는 명령저장수단에서 제 1명령을 가져오고, 판독될 기억장치에서 정보의 판독 어드레스를 출력하고, 그 어드레스가 출력된 후, 기억장치로부터 판독된 정보를 필요로하지 않는 제 3 명령을 적어도 하나 실행하고, 적어도 하나의 제 3 명령을 실행한 후에, 명령 저장 수단으로부터 제 2 명령을 가져와서 제 2 명령을 수행한다. 제 1 레지스터는 제어회로의 제어하에 중앙처리장치로부터 출력된 판독 어드레스를 받아서 저장한다. 그 기억장치는 제 1 레지스터에 저장된 판독 어드레스를 받아서, 제 3 명령 중의 적어도 하나가 실행되는 동안 제어 회로의 제어하에 받은 판독 어드레스에 기초해서 정보를 출력한다. 제 2 레지스터는 제어회로의 제어하에 기억장치로부터 출력된 정보를 받아서 저장한다. 그 제어회로는 중앙처리장치에 의해서 실행된 제 2 명령에 의해서 제 2 레지스터에 저장된 정보를 보낸다.
본 발명의 일 구체예에서, 정보처리장치는 그 중앙처리장치로부터 출력되는 어드레스의 적어도 일부를 디코드하기 위한 어드레스 디코더를 포함한다. 제 1 어드레스 영역은 제 1 레지스터에 할당되고, 제 2 어드레스 영역은 제 2 레지스터에 할당되고, 제 1 명령은 제 1 어드레스 영역에 판독 어드레스를 기입하기 위한 기입 명령이고, 제 2 명령은 제 2 어드레스 영역에 저장된 정보를 판독하기 위한 판독 명령이다. 중앙처리장치는 제 1 명령에 기초해서 판독 어드레스에 기입될 어드레스를 출력하고, 제 2 명령에 기초해서 판독될 정보를 저장하는 어드레스를 출력한다. 제어 회로는 어드레스 디코더에 의해서 디코드된 어드레스가 제 1 명령의 실행중 제 1 명령 어드레스 영역의 어드레스와 동일한지를 검출하고, 그렇게 함으로써 제 1 레지스터에 기입 동작을 받았다고 알린다. 제어회로는 어드레스 디코더에 의해서 디코드된 어드레스가 제 2 명령의 실행중 제 2 명령 어드레스 영역의 어드레스와 동일한지를 검출하고, 그렇게 함으로써 제 2 레지스터에 기입 동작을 받았다고 알린다.
본 발명의 일 구체예에서, 동작은 수치 연산을 포함하고, 제 1 데이터는 수치 연산을 위한 연산 데이터이고, 제 2 데이터는 수치 연산에 의해서 연산 데이터를 처리하여 얻은 수학 연산 결과 데이터이다.
본 발명의 일 구체예에서, 제 1 명령은 제 1 레지스터에 정해진 연산 데이터에 기초해서 수치 연산을 시작하기 위한 명령을 포함한다.
본 발명의 일 구체예에서, 제 2 레지스터에 기입하는 동작을 완료하기 전에 제어회로가 제 2 명령의 실행을 검출하는 경우에, 제어회로는 제 2 명령의 실행을 중지하도록 중앙처리장치에 요청하며, 기입 동작이 완료되면, 제어 회로가 중지를 해제하고, 제 2 레지스터에 기입된 제 2 데이터를 중앙처리장치에 보낸다.
본 발명의 일 구체예에서, 중앙처리장치는 동작의 특성에 의해서 결정된 명시된 수의 제 3 명령을 실행하고, 그렇게 하여, 제 2 데이터를 제 2 레지스터에 기입하는 동작이 완료되기 전에 제 2 명령이 수행되지 못하도록 한다.
본 발명의 일 구체예에서, 정보처리장치는 상태 레지스터를 추가로 포함한다. 제어회로는 상태레지스터를 제 1 레지스터에 제 1 데이터를 기입하기 위한 제 1 상태로 맞추고, 제 2 레지스터에 제 2 데이터를 기입하기 위한 제 2 상태로 상태 레지스터를 맞춘다. 중앙처리장치는 그 상태 레지스터가 제 2 명령을 실행하기 전에 제 2 상태에 있음을 확인하기 위한 명령을 실행한다.
본 발명의 일 구체예에서, 제어회로는 제 2 레지스터에 기입하는 동작이 완료되기 전에 제 2 명령의 실행을 검출하는 경우, 제어회로는 서브루틴 프로그램을 수행하도록 중앙처리장치를 요청한다.
본 발명의 일 구체예에서, 서브루틴 프로그램은 인터럽트(interrupt) 프로그램이고, 제 2 명령은 인터럽트 프로그램에서 재실행된다.
본 발명의 또 다른 양태에 따라, 어셈블리 언어 또는 상위레벨 언어 중의 하나에 기입된 다수의 명령을 포함하는 제 1 프로그램을 기계언어로 기재된 제 2 프로그램으로 번역하고, 제 1 프로그램을 제 2 프로그램으로 번역하는 동안 다수의 제 1 프로그램의 순서를 정리기 위한 스케줄링 디바이스(scheduling device)가 제공된다. 그 스케줄링 디바이스는, 다수의 명령어들 각각에 의해서 수행된 처리를 완료하기 위해 필요한 처리를 결정하고, 장기간 처리로서 2 이상의 머신 주기를 필요로하는 처리를 검출하기 위한 제 1 검출기를 포함한다. 그 머신 주기는 프로그램을 실행하기 위한 중앙처리장치에 의한 명령을 실행하기 위한 시간 단위이다. 스케줄링 디바이스는 또한, 프로그램이 장시간 처리에 의해서 얻은 처리 결과에 의존 하지 않고 중앙처리장치에 의해서 실행될 수 있는 적어도 하나의 후속 명령을 포함하는지 아닌지를 검출하기 위한 제 2 검출기와, 제 1 검출기와 제 2 검출기의 검출 결과에 기초해서 다수의 명령의 순서를 정리하기 위한 순서 정리장치를 포함한다. 제 1 검출기가 장시간 처리를 검출하고, 제 2 검출기가 적어도 하나의 후속 명령을 검출하는 경우, 순서 정리 장치는 장시간 처리에서 수행된 동작에 필요한 제 1 데이터를 놓기 위한 제 1 명령과, 동작에 기초해서 얻은 제 2 데이터를 가져오라는 제 2 명령을 분리하고, 제 2 검출기에 의해서 검출된 적어도 하나의 명령을, 제 1 명령 후, 제 2 명령 전에 제 3 명령으로서 삽입한다.
본 발명의 또 다른 양태에 따라, 다수의 명령을 저장하기 위한 명령 저장수단과, 명령 저장수단으로부터 명령을 가져오기 위한 중앙처리장치를 사용하여, 명령을 실행하는 정보처리방법이 제공된다. 예를 들면, 2 이상의 머신 주기를 필요로 하는 처리가 수행된다. 그 머신 주기는 중앙처리장치에 의해 명령을 실행하기 위한 시간 단위이다. 그 처리는 제 1 데이터에 기초한 동작을 포함하고, 제 2 데이터는 그 동작에 의해서 얻어진다. 상기 방법은 동작에 필요한 제 1 데이터를 놓기위한 제 1 명령을 실행하는 단계와; 제 1 명령을 수행한 후에, 제 2 데이터를 필요로 하지 않는 제 3 명령을 적어도 하나 수행하는 단계 및 그 동작에 의해서 얻은 제 2 데이터를 가져오기 위한 제 2 명령을 실행하는 단계를 포함한다.
본 발명의 또 다른 양태에 따라, 다수의 명령을 저장하기 위한 명령 저장 수단과, 명령을 실행하도록 명령 저장 수단으로부터 명령을 가져오는 중앙처리장치, 및 데이터를 저장하기 위한 제 1 및 제 2 레지스터를 사용한 정보처리방법이 제공된다. 예를 들면, 2 이상의 머신 주기에 필요한 처리가 수행된다. 그 머신 주기는 중앙처리장치에 의해 명령을 수행하기 위한 시간 유닛이다. 그 처리는 제 1 데이터에 기초한 동작을 포함하고, 제 2 데이터는 동작에 의해 얻어진다. 상기 방법은 동작을 위해 필요한 제 1 데이터를 놓기 위한 제 1 명령을 실행하는 단계와 제 1 명령에 기초해서 제 1 레지스터에 제 1 데이터를 기입하는 단계와 제 1 명령을 실행한 후에, 제 2 데이터를 필요로 하지 않는 제 3 명령을 적어도 하나 실행하는 단계와 적어도 하나의 제 3 명령이 실행되는 동안 제 1 레지스터에 기입된 제 1 데이터에 기초해서 동작을 수행하고, 그 동작에 의해서 얻은 제 2 데이터를 제 2 레지스터에 기입하는 단계와 그 동작에 의해서 얻은 제 2 데이터를 가져오기위한 제 2 명령을 실행하는 단계 및 제 2 명령에 기초해서 제 2 레지스터에 저장된 제 2 데이터를 보내는 단계를 포함한다.
본 발명의 일 구체예에서, 상기 정보처리방법은, 제 2 레지스터에 제 2 데이터를 기입하는 동작이 완료되기 전에 제 2 명령을 가져오는 경우에, 제 2 명령의 실행을 중지하도록 중앙처리장치에게 요청하는 단계 및 제 2 레지스터에 제 2 데이터를 기입하는 동작이 완료되면, 상기 중지를 해제하고 제 2 레지스터에 기입된 제 2 데이터를 중앙처리장치에 보내는 단계를 추가로 포함한다.
본 발명의 일 구체예에서, 적어도 하나의 제 3 명령을 실행하는 단계는 동작의 특성에 의해서 결정된 다수개의 제 3 명령을 실행함으로써, 제 2 데이터를 제 2 레지스터에 기입하는 동작이 완료되기 전에 제 2 명령이 실행되지 못하도록 하는 단계를 포함한다.
따라서, 본 명세서에 개시된 발명은 (1) 여기에 기재된 발명은 정보처리장치, 및 외부 메모리로부터 데이터를 판독하는 동작과 같은 비교적 장시간을 요구하는 동작을 수행하기 위한 처리속도와 CPU에서 명령을 실행하기 위한 처리속도 사이의 차이를 흡수하기 위한 방법을 제공하는 이점과, (2) 정보처리장치, 및 상기 처리속도 차이를 흡수함으로써 CPU의 대기시간을 감소시키는 방법을 제공하는 이점, 및 (3) 상기 처리속도 차이를 흡수하도록 명령의 순서를 정리하기 위한 정보처리장치와 함께 사용할 수 있는 스케줄링 디바이스를 제공하는 이점을 가능케 한다.
[바람직한 구체예의 설명]
이하에 첨부된 도면을 참고하여 설명한 실시예에 의해서 본 발명을 설명하려고 한다.
도1은 본 발명에 따른 정보처리장치의 기본 구조를 개략적으로 보여주는 블록도이다. 도1에 나타낸 바와 같이, 정보처리장치(100)는 다수의 명령을 저장하기 위한 명령저장부(예를 들면, ROM)과 ROM(10)로부터 명령을 가져와서 그 명령을 실행하기 위한 중앙처리장치(이하, CPU라고 칭한다)를 포함한다. 수행될 처리는, 제 1 데이터에 기초해서 동작을 수행함으로써 제 2 데이터를 얻고 CPU(20)의 2 이상의 머신 주기를 필요로 하는 처리일 경우에, CPU는 제 1 명령과 제 2 명령의 두가지 명령으로 분리된 상태에서 그러한 처리를 수행한다. 제 1 명령에 의해서, 동작에 필요한 제 1 데이터가 설정되고, 제 2 명령에 의해서 동작에 의해서 얻은 제 2 데이터를 가져온다. 제 1 명령을 실행한 후, 제 2 명령의 실행을 시작하기 전에, 제 2 데이터를 필요로 하지 않는 제 3 명령을 적어도 하나 실행한다. 이 명세서에서, 1머신 주기는 CPU(20)에 의해서 명령을 실행하기 위한 시간 단위이다. 또한, 이 명세서에서, 2 이상의 머신 주기를 필요로 하는 처리는 "장시간 처리"라고 칭한다.
동작에 의해서 얻어진 제 2 데이터를 필요로하지 않는 제 3 명령은, 제 2 데이터를 얻기 위한 동작의 완료 전에 실행될 수 있다. 따라서, 장시간 처리 및 제 3 명령은 병행해서 수행될 수 있다. 그러므로, CPU(20)가 제 2 명령 실행 전, 제 1 명령 실행 후의 대기시간은 효과적으로 이용될 수 있다. 그러한 시스템 때문에, 장시간 처리에 필요한 시간과 CPU(20)의 1 머신 주기 사이의 차이는 흡수될 수 있다. 그러므로, 정보처리장치의 대기시간은 실질적으로 감소될 수 있다.
제 1 및 제 2 명령으로 나뉘어진 장시간 처리는 예를 들면 다음과 같은 방법으로 하드웨어에 의해서 수행된다. 도1에 나타낸 바와 같이, 정보처리장치(100)는 데이터를 저장하는 제 1 레지스터(40)와 제 2 레지스터(50), 및 그 제 1 레지스터(40)와 제 2 레지스터(50)를 제어하는 제어회로를 포함한다. 도 1로부터 명백해질 수 있듯이, 제어회로(30)는 CPU(20)에 의해서 실행된 제 1 명령에 기초해서 제 1 레지스터(40)에 제 1 데이터(31)를 기입한다. 다음에 제어회로(30)는 제 1 레지스터(40)에 기입된 제 1 데이터(31)에 기초한 프로세스 소자(60)를 사용한 동작을 수행하고, 그 동작에 의해서 얻어진 제 2 데이터(32)를 제 2 레지스터(50)에 기입한다. 제어회로(30)는 또한, 제 2 레지스터(50)에 저장된 제 2 데이터(32)를, CPU(20)에 의해서 실행된 제 2 명령에 기초한 CPU(20)로 보낸다. 처리소자(60), 제 1 레지스터(40) 및 제 2 레지스터(50)의 동작은 제어회로(30)로부터 출력된 명시된 제어 신호에 의해서 제어된다.
프로세스 소자(60)는 예를들어 외부 메모리, 또는 수학연산을 수행하기 위한 수치 연산 장치와 같은 기억장치이다. 아래 예에서, 외부 메모리로부터 데이터를 판독하는 처리와, 수치 연산을 사용해서 수행된 수치 연산의 처리를 장시간 처리의 예로서 설명할 것이다.
[실시예 1]
도 2는 본 발명의 실시예 1에 따른 정보처리장치(200)의 개략적인 블록도이다. 정보처리장치(200)는 프로세서(110)와 외부 메모리(150)를 포함한다. 실시예 1에서, 외부 메모리에 저장된 정보의 판독처리를 장시간 처리의 일례로서 설명하려고 한다. 판독 처리에서 수행된 판독 동작에 필요한 제 1 데이터는 판독될 정보 또는 데이터의 외부메모리(150)에 있는 어드레스(이하, "판독 어드레스"라고 칭한다)이다. 판독 동작의 결과로서 얻어진 제 2 데이터는 외부 메모리(150)로부터 판독되는 정보이다.
도 2에 나타낸 바와 같이, 프로세서(110)와 외부 메모리(150)는 외부 어드레스 버스(151)(151a 및 151b)와 외부 데이터 버스(152)(152a 및 152b)를 통해서 서로 연결된다.
프로세서(110)는 중앙처리장치(이하, "CPU"라고 칭한다), 버스 제어 유닛(130), 및 명령 저장부로서의 ROM(140)을 포함한다. 버스 제어 유닛(130)은 어드레스 디코더(3), 제어 회로(4), 메모리 액세스 신호발생부(5), 어드레스 인터페이스부(6), 및 데이터 인터페이스부(7)를 포함한다. 버스 제어 유닛(130)은 판독 버퍼 어드레스 레지스터(8) 및 판독 버퍼 데이터 레지스터(9)를 추가로 포함한다. CPU(120) 및 버스 제어 유닛(130)은 어드레스를 보내기 위한 어드레스 버스(121)와 데이터를 보내기 위한 데이터 버스(122)를 통해서 서로 연결된다. ROM(140)으로부터, 프로그램과 명령은 명령 버스(141)를 통해서 CPU(120)로 보내진다.
도 2에서 명백해질 수 있겠듯이, CPU(120)로부터 출력된 어드레스는 어드레스 버스(121)를 통해서 어드레스 인터페이스부(6)와 디코더(3)에 공급된다. 데이터 버스(122)는 데이터 인터페이스부(7)에 연결된다. 어드레스 인터페이스부(6)는 어드레스 버스(151a)를 통해서 외부 어드레스 버스(151)에 연결되고, 데이터 인터페이스부(7)는 데이터 버스(152a)를 통해서 외부 데이터 버스(152)에 연결된다. 판독 버퍼 어드레스 레지스터(8)로부터 나온 결과는 레지스터용 어드레스 버스(112)(이하, "어드레스 버스(112)라고 칭한다)를 통해서 어드레스 인터페이스부(6)으로 공급된다. 판독 버퍼 어드레스 레지스터(8)와 판독 버퍼 데이터 레지스터(9)는 레지스터용 데이터 버스(이하, "어드레스 버스(111)"로서 간단히 언급한다)를 통해서 데이터 인터페이스부(7)에 연결된다.
CPU(120)는 버스 제어 유닛(130)에 판독 동작을 요청하도록 판독 요청 신호(101)를 출력하고, 기입 동작을 요청하도록 버스 제어 유닛(130)에 판독 요청 신호(102)를 출력한다. 판독 요청 신호(101) 및 데이터 기입 신호(102)는 버스 제어 유닛(130)의 제어 회로(4)에 입력된다. 디코드 어드레스(103)는 어드레스 버스(121)의 일부를 통해서 어드레스 디코더(3)에 공급된다. 어드레스 디코더(3)는 디코더 어드레스(103)를 디코드하고, 디바이스 확인 신호(104)로서 제어 신호(4)에 그 결과를 출력한다. 디바이스 확인 신호(104)는, 예를 들면, 외부 메모리(150)가 CPU(120)에 의해서 액세스되어야 하는지, 아니면 프로세서(110)에 있는 디바이스가 CPU(120)에 의해서 액세스되어야 하는지, 액세스의 표적을 지시한다.
제어 회로(4)는 외부 액세스 시작 신호(105), 어드레스 인터페이스부(6)를 제어하는 어드레스 제어 신호(106), 데이터 인터페이스부(7)를 제어하는 데이터 제어 신호(107), 판독 버퍼 어드레스 레지스터(8)를 제어하는 어드레스 기입 신호(108), 및 디바이스 확인 신호(104), 판독 요청 신호(101) 및 기입 요청 신호(102)에 기초해서 판독 버퍼 데이터 레지스터(9)를 제어하는 데이터 기입 신호(109)를 출력한다. 제어 회로(4)는 또한 판독 요청 신호(101)에 응답하여 응답 신호(113)를 출력하고, CPU(20)로부터 기입 요청 신호(102)를 출력한다. 메모리 액세스 발생부(5)는 제어 회로(4)로부터 공급된 외부 액세스 시작 신호(105)에 기초해서 외부 메모리(150)를 액세스하는 메모리 액세스 신호(115)를 출력한다. 외부 메모리(150)는 메모리 액세스 신호(115)를 받고, 액세스 동작이 완료되면, 외부 메모리(150)는 그 액세스 동작의 완료의 프로세서(110)를 통보하기 위한 외부 응답 신호(116)를 출력한다. 외부 응답신호(116)는 버스 제어 유닛(130)의 제어 회로(4)에 공급된다.
상기 구조를 갖는 정보처리장치(200)는 예를 들면 다음과 같은 방법으로 작동한다. CPU(20)에 의해서 단독으로 수행되는 명령과, CPU(20)와 버스 제어 유닛(130)에 의해서 공동으로 실행되는 명령을 포함하는 ROM(140)에 저장된 프로그램의 예를 설명할 것이다. 명령 1 내지 명령 9의 각각에 대해서, 명령에 의해서 지시된 동작은 괄호안에 기재되어있다. 예를 들면, 명령 1 내지 명령 4 및 명령 8은 외부 메모리(150)를 액세스하고 그 액세스 동작의 결과로서 얻은 데이터를 사용한 처리를 나타낸다. 명령 1 내지 명령 4 및 명령 8은 CPU(20)와 버스 제어 유닛(130)에 의해서 공동으로 실행된다. 명령 5내지 7 및 명령 9는 CPU(20)에 의해서 단독으로 수행된 처리를 지시한다(예를 들면, 덧셈 및 곱셈).
ROM(140)에 저장된 프로그램은 "0"과 "1"의 비트 스트림으로 구성된 "기계어"로 기입된다. 이 명세서에서, 각 명령의 의미를 나타내기 위해서 프로그램은 니모닉 기호로 나타낸다. 종래의 정보처리장치(800)와 명료하게 비교하기 위해서, 종래의 정보처리장치(800)에 관해서 설명한 것과 같은 처리를 실행하기 위한 명령이 주어질 것이다. 숫작, 계산, 등 아래 명령에 사용된 것들을 간단히 설명한다. 다른 숫자와 계산이 사용될 수도 있다.
명령 1 : MOV @mem_loc1, DO
(데이터는 외부 메모리(150)의 어드레스 mem_loc1로부터 판독되고, CPU(120)에 있는 레지스터(DO)에 저장된다)
명령 2 : ADD #10, DO
(CPU(120)에 있는 레지스터(D0)의 내용에 10을 더하고, 그 결과는 다시 레지스터(DO)에 저장된다.)
명령 3 : MOV #mem_loc2, D2
(값 mem_loc2는 CPU(120)에 있는 레지스터(D3에 저장된다. 값 mem_loc2는 다음번에 판독될 데이터의 외부 메모리에 있는 어드레스이다)
명령 4 : MOV D3, @rb_addr
(CPU(120)에 있는 레지스터(D3)의 내용은 어드레스 rb_addr에 기입된다. 어드레스 rb_addr의 경우, 판독 버퍼 어드레스 레지스터(8)가 할당된다)
명령 5 : ADD #1. D1
(CPU(120)에 있는 레지스터(D1)의 내용에 1을 더하고, 그 결과는 다시 레지스터(D1)에 저장된다)
명령 6 : ADD#4, A0
(CPU(120)에 있는 레지스터(A0)의 내용에 4를 더하고, 그 결과는 다시 레지스터(A0)에 저장된다)
명령 7 : ADD#4, A1
(CPU(120)에 있는 레지스터(A1)의 내용에 4를 더하고, 그 결과는 다시 레지스터(A1)에 저장된다)
명령 8 : MOV @rb_data, D2
(어드레스 @rb_data에 있는 내용은 CPU(120)에 있는 레지스터(D2)에 기입된다. 어드레스 @rb_data의 경우, 판독 버퍼 데이터 레지스터(9)가 할당된다)
명령 9 : MUL D0, D2
(레지스터(D2)의 내용은 레지스터(D0)에 있는 내용과 곱해지고, 그 결과는 다시 레지스터(D2)에 저장된다)
외부 메모리(150)으로부터 판독하는 처리의 상기 예시 프로그램으로부터 명백해질 수 있듯이, 판독 동작을 요청한 후 즉시 판독 데이터가 사용되는 경우에, 그 판독처리는 종래의 명령과 동일한 판독명령을 사용하여 수행된다. 예를 들면, 외부 메모리(150)로부터 판독된 데이터가 판독 동작 후에 즉시 명령2에 의해서 처리되는 경우, 그 판독 처리는 명령 1을 사용하여 수행되는데, 이것은 종래의 판독 명령(명령 11)과 동일한 것이다.
다수개의 후속 명령들은 판독 동작 요청 후, 얻어진 데이터가 첫 번째로 사용되기 전에 실행될 수 있는 경우, 그 판독처리는 별도로 수행되도록 두가지 명령으로 나뉘어진다. 두가지 명령은, 판독 버퍼 어드레스 레지스터(8)에서의 판독 어드레스를 놓기 위한 명령(명령 4)과 판독 버퍼 데이터 레지스터(9)에 저장된 데이터를 가져오기 위한 명령(명령 8)이다. 예를들어, 외부 메모리(150)로부터의 판독 동작이 수행되고 있는 동안, 외부 메모리(150)로부터 판독되는 데이터를 필요로 하지 않는 명령 5 내지 7은 아래와 같이 CPU(120)에 의해서 단독으로 실행될 수 있다.
먼저, 명령 4의 실행에 의해서, 외부 메모리(150)에 있는 판독 어드레스는 CPU(120)로부터 출력된다. CPU(120)에 의해서 출력된 판독 어드레스는 판독 버퍼 어드레스 레지스터(8)에 놓인다. 명령 4를 실행한 후(즉, 판독 어드레스를 출력한후), 외부 메모리(150)로부터 판독된 데이터를 필요로 하지 않는 명령(즉, 명령 5 내지 명령 7)을 실행한다. 명령 5 내지 7이 실행되고 있는 동안, 제어 회로(4)는 판독 버퍼 어드레스 레지스터(8)에 저장된 판독 어드레스를 사용하여 외부 메모리(150)로부터 데이터를 판독한다. 예를 들면, 판독 버퍼 어드레스 레지스터(8)에 유지된 판독 어드레스는 제어 회로(4)에 의해서 외부 메모리(150)에 공급되고, 외부 메모리(150)는 받은 판독 어드레스에 상응하는 데이터를 출력한다. 외부 메모리(150)로부터 판독된 데이터는 제어회로(4)의 제어하에 판독 버퍼 데이터 레지스터(9)에 기입된다. 명령 5 내지 7을 실행한 후에, CPU(120)는 판독 버퍼 데이터 레지스터(9)에 유지된 데이터를 가져오기 위한 명령 8을 실행한다. 예를 들면, 판독 버퍼 데이터 레지스터(9)에 유지된 데이터는 제어회로(4)이 제어하에 CPU(120)로 보내진다.
위에 설명한 바와 같이, 외부 메모리(150)로부터의 판독 처리는 두 개의 분리된 명령 4 및 명령 8에 의해서 수행되고, 명령 5 내지 명령 7은 명령 4와 명령 8사이에 삽입된다. 그러한 명령 배치는 "명령의 스케줄 관리(scheduling of instructions)"이라고 언급된다.
다음에 도 3a 및 도 3b를 참고하여, 위에 설명한 프로그램을 실행하기 위한 정보처리장치(200)의 동작에 대해서 설명하려고 한다.
도 3a 및 도 3b는 정보처리장치(200)의 동작 타이밍도이다. 도 3a 및 도 3b는 CPU(120)에 의해서 실행된 명령, 어드레스 버스(121)와 데이터 버스(122) 상의 값, 응답신호(113)의 상태, 판독 버퍼 어드레스 레지스터(8)와 판독 버퍼 데이터 레지스터(9)에 유지된 값, 외부 어드레스 버스(151)와 외부 데이터 버스(152)의 값, 머신 주기를 기초로 한 외부 응답 신호(116)의 상태를 보여준다. 응답신호(113)와 외부 응답 신호(116)는 로우일 때 요구한 "액티브-로우"이다. 이 예에서, 외부 메모리(150)의 판독시간, 즉 외부 메모리(150)가 외부 데이터 버스(152)에 데이터를 출력할 때까지 외부 어드레스 버스(151)에 출력된 어드레스와 메모리 액세스 신호(115)를 받는 시간은 4 머신 주기이다. 데이터 "data1"는 외부 메모리(150)의 어드레스 mem_loc1에 미리 저장되고, 데이터 "date2"는 외부 메모리(150)의 어드레스 mem_loc2에 미리 저장된다. 이하, 정보처리장치(200)의 동작을 시간축에 따른 머신 주기에 기초해서 설명할 것이다. 주기 t1 내지 t6은 도 3a에 나타낸 바와 같고, 주기 t7 내지 t12은 도 3b에 나타내었다.
(주기 t1)
CPU(120)는 명령 1을 실행한다. 명령 1은 외부 메모리(150)의 어드레스를 어드레싱하고 외부 메모리(150)에 저장딘 데이터를 판독하기 위한 판독 명령이다. CPU(120)로부터, 판독될 데이터의 어드레스 mem_loc1은 어드레스 버스(121)를 통해서 버스 제어 유닛(130)에 출력된다. 동시에, 판독 요청 신호(101)를 요구한다. 버스 제어 유닛(130)에서, 디코더(4)는 어드레스 버스(121)의 일부를 통해서 공급된 디코드 어드레스(103)를 디코딩하고, 액세스될 디바이스를 확인한다. 명령1의 실행에 의해서, 디코더(4)는, 액세스될 디바이스가 외부 메모리(150)인지 검출하고, 액세스될 디바이스가 외부 메모리(150)임을 제어회로에 통보하기 위해 디바이스 확인 신호(104)를 출력한다.
제어 회로(4)는 CPU(120)로부터 판독 요청 신호(101)에 기초해서 외부 메모리(150)로부터 판독 동작을 수행하도록 위해 버스 제어 유닛(130)에 있는 소자들에게 명령한다. 먼저, 제어회로(4)는 외부 액세스 시작 신호(105)에게 메모리 액세스 신호발생부(5)을 요구한다. 메모리 액세스 신호발생부(5)은 메모리 액세스 신호(115)의 요구에 기초해서 외부 메모리(150)에 메모리 액세스 신호(115)를 출력한다. 제어회로(4)는, 외부 메모리(150)가 CPU(120)로부터 어드레스 버스(121)에게 출력되는 어드레스에 의해서 액세스됨을 통보하기 위해서 어드레스 인터페이스부(6)에 어드레스 제어 신호(106)를 출력한다. 어드레스 인터페이스부(6)은 CPU(120)로부터 어드레스 버스(151a)를 통해서 외부 어드레스에 출력된 어드레스 버스(121)위의 값 mem_loc1을 출력한다. 제어회로(4)는 또한, 외부 메모리(150)가 현재 CPU(120)으로부터 액세스되고 있는지를 통보하기 위해서 데이터 인터페이스부(7)에 데이터 제어신호(107)를 출력하고, 외부 메모리(150)로부터 외부 응답 신호(116)의 요구를 대기한다.
(주기 t2)
외부 응답 신호(116)가 요구하지 않기 때문에, 그 상태가 동일하게 남아있다. 어드레스 버스(121)와 외부 어드레스 버스(151)의 값은 여전히 mem_loc1이다. 제어회로(4)는 외부 응답 신호(116)의 요구를 아직도 대기하고 있다.
(주기 t3)
주기 t2에서와 같이, 외부 응답 신호(116)가 요구하지 않기 때문에, 그 상태는 여전히 남아있다. 어드레스 버스(121)와 외부 어드레스 버스(151)의 값은 여전히 mem_loc1이다. 제어회로(4)는 외부 응답 신호(116)의 요구를 아직도 대기하고 있다.
(주기 t4)
외부 메모리(150)는 외부 어드레스 버스(151)로부터 어드레스와 메모리 액세스 신호(115)를 받았기 때문에 4 머신 주기가 통과하였다. 따라서, 외부 메모리(150)로의 액세스 동작(즉, 판독 동작에 상응하는 데이터의 출력)이 완료되고, 외부 메모리(150)는 외부 응답 신호(116)를 요구한다. 외부 응답 신호(116)의 요구에 기초해서, 제어 회로(4)는 데이터 인터페이스부(7)을 제어함으로써, 데이터 인터페이스부(7)이 외부 메모리(150)로부터 판독된 데이터 "data1"를 데이터 버스(122)를 경유해서 CPU(120)로 보낸다. 동시에, 제어 회로(4)는 판독 동작의 완료의 CPU(120)를 통보하기 위해서 응답 신호(113)를 요구한다. CPU(120)는 CPU(120)에 있는 레지스터(DO)에서 데이터 버스(122)로부터 가져온 데이터 "data1"을 저장하고, 명령1의 실행을 완료한다.
(주기 t5)
CPU(120)는 명령 1을 실행한다. 즉, CPU(120)는 CPU(120)에 있는 레지스터(D0)의 내용(data1)에 10을 더하고, 레지스터(D0)에 그 결과(data1+10)를 다시 저장한다. 그렇게 하면, 명령2의 실행이 완료된다.
(주기 t6)
CPU(120)는 명령 3을 실행한다. 즉, CPU(120)는 CPU(120)에 있는 레지스터(D3)에 있는 값 mem_loc2를 저장한다. 그렇게 하면, 명령3의 실행이 완료된다.
(주기 t7)
CPU(120)는 명령 4를 실행한다. 명령 4 내지 명령 9는 판독 버퍼 어드레스 레지스터(8)와 판독 버퍼 데이터 레지스터(9)를 사용하여 CPU(120)에 의해서 외부 메모리(150)로부터 데이터를 판독하기 위한 처리를 지시한다. 명령4의 실행에 의해서, CPU(120)는 버스 제어 유닛(130)에 있는 판독 버퍼 레지스터(8)에 판독 어드레스로서 외부 메모리(150)에 있는 어드레스 mem_loc2를 기입한다. 이 지점에서, CPU(120)는 어드레스 버스(121)를 경유해서 버스 제어 유닛(130)에 판독 버퍼 어드레스 레지스터(8)에 할당된 어드레스 rb_addr을 출력하고, 동시에 기입 요청 신호(102)를 요구한다.
어드레스 디코더(3)는 디코드 어드레스(103)를 디코딩하고, 그 디코드된 어드레스가 판독 버퍼 어드레스 레지스터(8)에 할당된 어드레스와 동일함을 알린 후, 어드레스 디코더(3)는 디바이스 확인 신호(104)에 의해서 그 알린 결과의 제어 신호(4)를 통보한다. 제어 신호(4)는 판독 버퍼 어드레스 레지스터(8)의 어드레스가 액세스되어야 한다는 것을 디바이스 확인 신호(104)에 의해서 통보받는다. 기입 요청 신호(102)와 디바이스 확인 신호(104)에 기초해서, 제어 신호(4)는, 데이터(즉, 외부 메모리(150)를 위한 판독 어드레스)가 버스 제어 유닛(130) 내의 판독 버퍼 어드레스 레지스터(8)에 기입되었음을 통보하기 위해서, 데이터 인터페이스부(7)에 데이터 제어 신호(107)를 출력한다. 마찬가지로, 제어회로(4)는 판독 버퍼 어드레스 레지스터(8)에게 어드레스 기입 신호(108)를 요구한다. 제어회로(4)의 제어하에, CPU(120)로부터의 데이터 mem_loc2는 데이터 인터페이스부(7)을 통해서 데이터 버스(111)에 출력되고, 데이터 mem_loc2는 판독 버퍼 어드레스 레지스터(8)로 기입된다. 기입 동작이 완료되면, 제어 회로(4)는 응답 신호(113)에게, 기입 동작의 완료의 CPU(120)를 통보할 것을 요구한다. 그러면, CPU(120)는 명령 4의 실행을 완료하고, 다음번 주기에서 후속되는 처리를 시작한다.
버스 제어 유닛(130)에서, 판독 버퍼 어드레스 레지스터(8)로 기입하는 동작을 시작하면, 외부 메모리(150)로부터의 판독 동작은 판독 어드레스로서 판독 버퍼 어드레스 레지스터(8)의 내용(즉, mem_loc2)을 사용하여 동시에 시작한다. 상세히 말하면, 그 동작은 다음과 같다. 제어 회로(4)는 메모리 액세스 신호발생부(5)에 외부 액세스 시작 신호(105)를 요구한다. 외부 액세스 시작 신호(105)의 요구에 기초해서, 메모리 액세스 신호발생부(5)는 외부 메모리(150)에 메모리 액세스 신호(115)를 출력한다. 제어신호(4)는 또한 외부 메모리(150)가 판독 버퍼 어드레스 레지스터(8)에 저장된 어드레슬 사용하여 액세스됨을 어드레스 인터페이스부(6)에 통보하기 위해서 어드레스 제어 신호(106)에 메모리 액세스 신호(115)를 출력한다. 제어회로(4)의 제어하에서, 판독 버퍼 어드레스 레지스터(8)에 저장된 어드레스 mem_loc2는 어드레스 버스(112)를 통해서 어드레스 인터페이스부(6)에 공급되고, 다음에, 어드레스 버스(151a)를 경유해서 외부 어드레스 버스(151)에 출력된다. 제어 회로(4)는 외부 메모리(150)가 현재 판독 버퍼 어드레스 레지스터(8)로부터 액세스되고 있는지를 통보하기 위해서 데어터 제어신호(107)를 출력한다. 다음에 제어회로(4)는 회로 메모리(150)으로부터 외부 응답 신호(116)의 요구를 대기한다.
(주기 t8)
외부 응답 신호(116)가 요구하지 않기 때문에, 버스 제어 유닛(130)의 상태는 동일하게 남아있다. 어드레스 버스(121)와 외부 어드레스 버스(151)의 값은 여전히 mem_loc2이다. 제어회로(4)는 외부 응답 신호(116)의 요구를 여전히 대기하고 있다.
CPU(120)는 명령 5를 실행한다. 즉, CPU(120)는 그 CPU(120)에 있는 레지스터(D1)의 내용에 1을 더하고 그 결과를 다시 레지스터(D1)에 저장한다. 그러면, 명령5의 실행이 완료된다.
(주기 t9)
주기 t8에서와 같이, 외부 응답 신호(116)가 요구하지 않기 때문에, 버스 제어 유닛(130)의 상태는 동일하게 남아있다. 어드레스 버스(121)과 외부 어드레스 버스(151)의 값은 여전히 mem_loc2이다. 제어회로(4)는 외부 응답 신호(116)의 요구를 여전히 대기한다.
CPU(120)는 명령 6를 실행한다. 즉, CPU(120)는 그 CPU(120)에 있는 레지스터(A0)의 내용에 4를 더하고 그 결과를 다시 레지스터(A0)에 저장한다. 그러면, 명령6의 실행이 완료된다.
(주기 t10)
외부 메모리(150)는 외부 어드레스 버스(151)로부터 메모리 액세스 신호(115)와 어드레스를 받았기 때문에 4 머신 주기가 통과하였다. 따라서, 외부 메모리(150)로의 액세스 동작(즉, 판독 동작에 상응하는 데이터의 출력)이 완료되고, 외부 메모리(150)는 외부 응답 신호(116)를 요구한다.
요구받는 외부 응답신호(116)를 받았던 제어회로(4)의 제어하에, 버스 제어회로(130)의 데이터 인터페이스부(7)는 외부 메모리(150)로부터 외부 데이터 버스(152)(152a 및 152b)를 통해서 데이터 버스(111)에 데이터 "data2"를 출력한다. 동시에, 제어회로(4)는 판독 버퍼 데이터 레지스터(9)에 데이터 기입 신호(109)를 요구한다. 그러면, 데이터 "data2"가 그 판독 버퍼 데이터 레지스터(9)에 기입된다. 이 주기 후에, 데이터는 언제나 그 판독 버퍼 데이터 레지스터(9)로부터 판독될 수 있다.
위에 설명한 동작이 버스 제어 유닛(130)에서 수행되는 동안, CPU(120)는 명령7을 수행한다. 즉, CPU(120)는 RM CPU(120) 안에 있는 레지스터(A1)의 내용에 4를 더하기하고, 그 결과를 다시 레지스터(A1)에 저장한다. 그러면, 명령7의 실행이 완료된다.
(주기 t11)
CPU(120)는 명령 8을 실행한다. 명령 8을 실행함으로써, CPU(120)는 버스 제어 유닛(130)에 있는 판독 버퍼 데이터 레지스터(9)에 저장된 데이터 "data2"를 판독한다. 이 지점에서, CPU(120)는 어드레스 버스(121)를 경유해서 버스 제어 유닛(130)에 판독 버퍼 어드레스 레지스터(8)에 할당된 어드레스 rb_data를 출력하고, 동시에 판독 요청 신호(101)를 요구한다.
어드레스 디코더(3)는 어드레스 버스(121)에 의해서 공급된 디코드 어드레스(103)를 디코딩하고, 그 디코드된 어드레스가 판독 버퍼 데이터 레지스터(9)에 할당된 어드레스와 동일함을 알린 후, 어드레스 디코더(3)는 디바이스 확인 신호(104)에 의해서 그 알린 결과의 제어 신호(4)를 통보한다. CPU(120)로부터 판독요청 신호(101)와 어드레스 디코더(3)로부터의 디바이스 확인 신호(104)에 기초해서, 제어 회로(4)는 버스 제어 유닛(130)에 있는 판독 버퍼 데이터 레지스터(9)로부터 데이터가 판독됨을 통보하기 위해서 데이터 인터페이스부(7)에 데이터 제어 신호(107)를 출력한다. 데이터 인터페이스부(7)은 데이터 버스(111)를 통해서 판독 버퍼 데이터 레지스터(9)에 저장된 데이터 "data2"를 판독하고, 데어터 버스(122)를 통해서 데이터 "data2"를 CPU(120)에 보낸다. 제어신호(4)는 판독 동작의 완료의 CPU(120)를 통보하기 위해서 응답 신호(113)에게 요구한다. CPU(120)는 그 CPU(120)에 있는 레지스터(D2)의 데이터 버스(122)로부터 가져온 데이터 "data2"를 저장한다. 그러면, 명령8의 실행이 완료된다.
(주기 t12)
CPU(120)는 명령 9를 실행한다. 즉, CPU(120)는, CPU(120)에 있는 레지스터(D2)의 내용(데이터2)을, 레지스터(D0)의 내용(data1+10)과 곱하고, 그 결과를 레지스터(D2)에 다시 저장한다. 그러면, 명령9의 실행이 완료된다.
위에 설명한 바와 같이, 실시예 1에 따른 정보처리장치에 의해서, 장시간 처리(예를 들면, 외부 메모리(150)으로부터 데이터 판독 처리)는, 판독 동작에 필요한 외부 메모리(150)에 어드레스를 놓기위한 제 1 명령(예를 들면, 명령4)과, 외부 메모리(150)로부터 판독된 데이터를 가져오기 위한 제 2 명령(예를 들면 명령 8)의 두 개로 나뉘어진 명령을 실행함으로써 수행된다. 제 1 명령의 실행 후, 제 2 명령의 실행의 시작 전에, 그 판독 동작에 의해서 얻어진 데이터를 필요로 하지 않는 적어도 하나의 제 3 명령(예를 들면, 명령 5 내지 7)이 실행된다. 판독 동작에 의해서 얻어진 데이터를 필요로 하지 않는 제 3 명령은, 판독 동작과 동시에, 또는 판독 동작의 완료 전에 실행될 수 있다. 따라서, 제 1 명령의 실행 후, 제 2 명령의 실행까지 CPU(120)의 대기시간은 효과적으로 이용될 수 있다. 그러한 시스템 때문에, 장시간 처리에 필요한 시간과 CPU(120)의 머신 주기 사이의 차이는 흡수될 수 있다. 정보처리장치(200)의 대기시간은 전체로서 감소될 수 있다.
[실시예 2]
본 발명에 따른 실시예 2에서는, 실시예 1의 프로그램과 다른 프로그램을 실행하기 위한 정보처리장치(200)의 동작에 대해서 설명할 것이다. 정보처리장치(200)는 도 2의 실시예1에서와 같은 구조를 갖는다. 실시예2에서 설명된 예시 프로그램에서, 실시예1에서의 세 명령(명령 5 내지 7)과는 반대로, 단지 하나의 명령(명령 5)만이, 판독 버퍼 어드레스 레지스터(8)에 어드레스를 놓기 위한 명령 4와 판독 버퍼 데이터 레지스터(9)에 저장된 데이터를 가져오기 위한 명령 8 사이에 삽입될 수 있다. 그 프로그램의 명령은 아래와 같다.
명령 1 : MOV @mem_loc1, D0
명령 2 : ADD #10, D0
명령 3 : MOV #mem_loc2, D3
명령 4 : MOV D3, @rb_addr
명령 5 : ADD #1, D1
명령 8 : MOV :@rb_data, D2
명령 9 : MUL D0, D2
실시예2에 설명된 프로그램은 명령6과 명령7이 실시예2에서 제외된 것 외에는 실시예1에서와 같은 프로그램이다. 그 프로그램은, 외부 메모리(150)로부터 판독된 데이터를 판독 버퍼 데이터 레지스터(9)에 기입하는 동작이 완료된 후에, CPU(120)는, 판독 버퍼 데이터 등로기(9)로부터 데이터(명령 8)를 판독하기 위한 판독 명령의 실행을 시작한다.
이하에, 도 4a 및 4b를 참고해서, 위에 설명한 프로그램을 실행하기 위한 정보처리장치(200)의 동작을 설명할 것이다. 도 4a 및 도 4b는 정보처리장치(200)의 동작 타이밍도이다. 주기 t1 내지 t6은 도 4a에 나타낸 바와 같고, 주기 t7 내지 t13은 도 4b에 나타낸 바와 같다. 외부 메모리(150)의 판독시간은 4 머신 주기이다. 외부 메모리(150)에 저장된 데이터의 내용은 실시예1의 것과 같다. 이하에, 정보처리장치(200)의 동작을 시간축에 따른 머신 주기에 기초해서 설명하고자 한다.
(주기 t1 내지 t7)
주기 t1 내지 t7의 동작은 실시예 1것과 같기 때문에, 그의 설명은 생략한다.
(주기 t8)
외부 응답 신호(116)는 명령5가 주기 t7에서 수행된 후 요구하지 않기 때문에, 버스 제어 유닛(130)의 상태는 동일하게 남아있다. 어드레스 버스(121)와 외부 어드레스 버스(151)의 값은 여전히 mem_loc2이다. 제어회로(4)는 외부 응답 신호(116)의 요구를 아직도 대기한다.
CPU(120)는 명령 5를 실행한다. 즉, CPU(120)는 그 CPU(120)에 있는 레지스터(D1)의 내용에 1을 더하고 그 결과를 다시 레지스터(D1)에 저장한다. 그러면, 명령5의 실행이 완료된다.
(주기 t9)
CPU(120)는 명령 8을 실행한다. 명령 8을 실행함으로써, CPU(120)는 어드레스 버스(121)를 경유해서 버스 제어 유닛(130)에 판독 버퍼 데이터 레지스터(9)에 할당된 어드레스 "rb_data"를 출력하고, 동시에 판독 요청 신호(101)를 요구한다.
어드레스 디코더(3)는 어드레스 버스(121)의 일부에 의해서 공급된 디코드 어드레스(103)를 디코딩하고, 그 디코드된 어드레스가 판독 버퍼 데이터 레지스터(9)에 할당된 어드레스와 동일함을 알린 후, 어드레스 디코더(3)는 디바이스 확인 신호(104)에 의해서 그 알린 결과의 제어 신호(4)를 통보한다. CPU(120)로부터 판독요청 신호(101)와 어드레스 디코더(3)로부터의 디바이스 확인 신호(104)에 기초해서, 제어 회로(4)는 버스 제어 유닛(130)에 있는 판독 버퍼 데이터 레지스터(9)로부터 데이터가 판독됨을 통보하기 위해서 데이터 인터페이스부(7)에 데이터 제어신호(107)를 출력한다. 그러나, 데이터 "data2"는 주기 t9에서 판독 버퍼 데이터 레지스터(9)에 기입되지 않았다. 따라서 제어회로(4)는 판독 버퍼 데이터 레지스터(9)로부터 판독동작을 수행하지 않고, 응답 신호(113)를 요구하지 않고, 외부 메모리(150)에 액세스 동작의 완료를 지시하는 외부 응답 신호(116)의 요구를 대기한다. 마찬가지로, CPU(120)는 다른 동작을 수행하지 않고 응답신호(113)의 요구를 대기한다.
(주기 t10)
외부 메모리(150)는 외부 어드레스 버스(151)로부터 메모리 액세스 신호(115)와 어드레스를 받았기 때문에 4 머신 주기가 통과하였다. 따라서, 외부 메모리(150)로의 액세스 동작(즉, 판독 동작에 상응하는 데이터의 출력)이 완료되고, 외부 메모리(150)는 외부 응답 신호(116)를 요구한다.
버스 제어회로(130)의 데이터 인터페이스부(7)은 외부 메모리(150)로부터 외부 데이터 버스(152)(152a 및 152b)를 통해서 데이터 버스(111)에 데이터 "data2"를 출력한다. 동시에, 제어회로(4)는 판독 버퍼 데이터 레지스터(9)에 데이터 기입 신호(109)를 요구한다. 그러면, 데이터 "data2"가 그 판독 버퍼 데이터 레지스터(9)에 기입된다. 동시에, 제어회로(4)는 판독 동작의 완료의 CPU(120)를 통보하기 위해서 응답 신호(113)에게 요구한다. CPU(120)는 그 CPU(120)에 있는 레지스터(D2)의 데이터 버스(122)로부터 가져온 데이터 "data2"를 저장한다. 그러면, 명령8의 실행이 완료된다.
(주기 t11)
CPU(120)는 명령 9를 실행한다. 즉, CPU(120)는, CPU(120)에 있는 레지스터(D2)의 내용(데이터2)을, 레지스터(D0)의 내용(data1+10)과 곱하고, 그 결과를 레지스터(D2)에 다시 저장한다. 그러면, 명령9의 실행이 완료된다.
위에 설명한 바와 같이, 실시예 1의 동작 타이밍에 의해서(도 3a 및 도 3b), 제어신호(4)는 판독 버퍼 데이터 레지스터(9)로부터 데이터를 판독하기 위한 판독 명령을 검출하면(명령8의 실행), 외부 메모리(150)로부터 판독된 데이터는 판독 데이터 버퍼 레지스터(9)에 이미 기입되어있다. 그러한 경우에, 제어 회로(4)는 즉시 응답 신호(113)를 요구하고, CPU(120)는 판독 명령을 실행한다.
콘트라스트에 의해서, 실시예 2의 동작 타이밍에 의해서(도 4a 및 도 4b), 제어신호(4)는 판독 버퍼 데이터 레지스터(9)로부터 데이터를 판독하기 위한 판독 명령을 검출하면(명령8의 실행), 외부 메모리(150)로부터 판독된 데이터는 판독 데이터 버퍼 레지스터(9)에 이미 기입되어있다. 그러한 경우에, 제어 회로(4)는 응답 회로(113)의 요구를 정지함으로써 판독 명령의 실행을 중지하도록 CPU(120)에게 요청하고, 외부 메모리(150)로부터 판독된 데이터가 판독 버퍼 데이터 레지스터(9)에 기입될 때까지 대기한다. 필요한 데이터가 판독 버퍼 데이터 레지스터(9)에 기입되면, 제어신호(4)는 CPU(120)에게 중지상태로부터 해제하라고 응답신호(113)를 보내고 그 데이터를 CPU(120)에게 보낸다.
위에 설명한 바와 같이, 본 발명의 실시예1과 실시예2에 따른 정보처리장치(200)는, 판독 버퍼 어드레스 레지스터(8)에 판독 어드레스를 놓기위한 제 1 명령과 판독 버퍼 데이터 레지스터(9)에 저장된 데이터를 가져오기 위한 제 2 명령의 두가지 명령을 실행하고, 이 명령들의 스케줄을 이용함으로써 판독처리를 실행한다. 제 1 명령에 의해 판독 버퍼 어드레스 레지스터(8)에 외부 메모리(150)용 판독 어드레스를 놓음으로써, 버스 제어 유닛(130)은, CPU(120)와 독립적으로, 판독 버퍼 어드레스 레지스터(8)에 저장된 어드레스에 기초해서 외부 메모리(150)로부터 데이터를 판독할 수 있다. 따라서, CPU(120)는 제 1 명령과 제 2 명령 사이의 다른 명령들을 실행할 수 있다. 그러면 CPU(120)는 종래의 정보처리장치에서 했던 외부 메모리(150)를 액세스하는 긴 대기시간동안 기다리는 일을 할 필요가 없다. 그러한 시스템 덕택에, 정보처리장치(200)의 성능이 개선될 수 있다.
스케줄된 명령들은 판독 버퍼 어드레스 레지스터(8)와 판독 버퍼 데이터 레지스터(9)를 제공함으로써, 또 종래의 제어회로를 제어회로(4)로 약간 수정함으로써, 실행될 수 있다. 따라서, 정보처리장치(200)의 개선된 성능은 캐쉬 메모리 또는 프리페치 버퍼를 실장한 것에 비해서 하드웨어의 크기를 훨씬 작게 하는 것이 실현될 수 있다.
실시예 2에 따라, 위에 설명한 바와 같이, 외부 메모리(150)로부터 판독된 데이터가 판독 버퍼 데이터 레지스터(9)에 기입되기 전에, 판독 버퍼 데이터 레지스터(9)로부터 데이터를 판독하라는 명령의 실행이 시작하지 못하도록 하기 위해서, CPU(120)는 외부 응답 신호(116)가 요구될 때까지 후속 동작을 수행할 수 없게 된다. 다시말하면, 제어신호(4)는 응답신호(113)의 요구를 일시중지함으로써 CPU(120)에게 대기하라고 요청한다. 판독 버퍼 데이터 레지스터(9)에 기입하는 오퍼에이션이 완료되면, 제어회로(4)는 CPU(120)를 중지상태로부터 해제시키고, CPU(120)에 그 데이터를 보낸다.
대안적으로는, 기입 동작이 완료되기 전에 판독명령의 실행이 시작하지 못하도록 하기 위해서, 정보처리장치(200)는 다음과 같은 방법으로 작동한다.
프로그램이 판독되면, 외부 메모리(150)를 액세스하는 데 필요한 CPU(120)의 머신 주기의 수가 계산된다. (프로그램이 추가의 동작 없이 다음번 명령으로 진행하도록 하는) NOP 명령과 같은 외부 메모리(150)로부터 데이터를 필요로하지 않는 적당수의 명령이 (판독 버퍼 어드레스 레지스터(8)에 판독 어드레스를 놓기위한; 실시예 2에서 명령 4인) 제 1 명령과 (판독 버퍼 데이터 레지스터(9)에 저장된 데이터를 가져오기 위한 ;실시예 2에서 명령 8인) 제 2 명령 사이에 삽입되도록 스케줄된다. 그렇게 놓음으로써, CPU(120)는, 외부 메모리(150)로부터 판독 버퍼 데이터 레지스터(9)로의 기입 동작이 완료된 후에만 판독 버퍼 데이터 레지스터(9)로부터 판독 명령(명령 8)의 실행을 시작한다.
[실시예 3]
도 5는 본 발명에 따른 실시예 3에 따른 정보처리장치(300)의 개략적 블록도이다. 정보처리장치(300)는 실시예 1과 실시예 2에 따른 정보처리장치(300)와 실질적으로 동일한 구조를 갖는다. 도 2에 대해 이미 설명한 것과 동일한 소자들은 그와 동일한 참고번호를 가지므로, 이들의 설명은 생략하기로 한다. 이하에는, 정보 처리장치(200)와 다른 점에 대해서 설명할 것이다.
도 5에 나타낸 바와 같이, 정보처리장치(300)는 버스 제어 유닛(160)을 포함한다. 버스 제어 유닛(160)은 어드레스 디코더(3), 제어 회로(41), 메모리 액세스 신호발생부(5), 어드레스 인터페이스부(6), 데이터 인터페이스부(7), 판독 버퍼 어드레스 레지스터(8) 및 판독 버퍼 데이터 레지스터(9)를 포함한다. 버스 제어 유닛(160)은 판독 버퍼 데이터 레지스터에 기입하는 동작이 완료되었음을 알려주기 위한 판독 버퍼 상태 레지스터(10)를 포함한다. 도 5에 나타낸 바와 같이, 판독 버퍼 상태 레지스터(10)는 판독 버퍼 어드레스 레지스터(8)와 판독 버퍼 데이터 레지스터(9)처럼 데이터 버스(111)를 통해서 데이터 인터페이스부(7)에 연결된다. 판독 버퍼 어드레스 레지스터(8)를 제어하기 위한 제어 회로(41)로부터 출력되는 어드레스 기입 신호(108)는 판독 버퍼 상태 레지스터(10)에 공급된다. 마찬가지로, 판독 버퍼 데이터 레지스터(9)를 제어하기 위한 데이터 기입 신호(109)는 판독 버퍼 상태 레지스터(10)에 공급된다.
판독 어드레스가 판독 버퍼 어드레스 레지스터(8)에 놓이면(즉, 판독 버퍼 어드레스 레지스터(8)에 어드레스 기립 신호(108)가 요구되면), 판독 버퍼 상태 레지스터(10)는 제 1 상태(예를 들면 리셋 상태)로 된다. 외부 메모리(150)로부터 나온 데이터가 판독 버퍼 데이터 레지스터(9)에 기입되면, 판독 버퍼 상태 레지스터(10)는 제 2 상태(예를 들면 셋팅 상태)로 된다.
판독 버퍼 데이터 레지스터(9)의 내용이 판독되기 전에 판독 버퍼 상태 레지스터(10)가 시험되고, 판독 버퍼 상태 레지스터(10)에 제 2 상태에 있음이 확인된후에 판독 버퍼 데이터 레지스터(9)의 내용이 판독되도록, 프로그램이 기입된다. 그렇게 셋팅함으로써, CPU(120)는, 외부 메모리(150)로부터 판독 버퍼 데이터 레지스터(9)로의 기입 동작이 완료된 후에 판독 버퍼 데이터 레지스터(9)로부터 데이터를 판독하기 위한 판독 명령의 실행을 시작할 수 있다. 실시예 3에 따라, 제어회로(41)의 구조는 아래에 설명한 바와 같이 실시예1과 실시예2의 제어회로(4)보다 더 간단할 수 있다. 두가지 명령을 따로 실행함으로써 외부 메모리(150)로부터 판독 동작이 수행되는 경우에, 실시예1과 실시예2의 제어회로(4)는, 판독 버퍼 데이터 레지스터(9)로부터 데이터를 판독하기 위한 판독 명령이 검출될 때 외부 메모리(150)로부터 외부 응답 신호(116)의 요구에 기초해서 CPU(120)에 응답신호(113)을 요구할 필요가 있다. 다시말하면, 제어회로(4)는 외부 메모리(150)로부터 판독 명령에 응답하여, 판독 버퍼 데이터 레지스터(9)로부터 판독 명령에 응답하여 외부 응답 신호(116)의 요구를 확인할 필요가 있다.
대조하여 보면, 실시예 3에서는 판독 버퍼 데이터 레지스터(9)의 상태는 판독 버퍼 상태 레지스터(10)의 상태에 의해서 확인된다. 따라서, 판독 버퍼 데이터 레지스터(9)에 기입하는 동작이 완료되지 않으면, CPU(120)는 판독 버퍼 데이터 레지스터(9)로부터 데이터를 판독하기 위한 판독명령을 실행하지 않는다. 따라서, 제어회로(41)는 외부 메모리(150)로부터 외부 응답신호(116)에 의한 완료를 확인한후에 판독 버퍼 데이터 레지스터(9)에 기입 동작의 완료의 CPU(120)를 통보할 필요가 없다(즉, 제어회로(41)는 응답 신호(113)를 요구할 필요가 없다). 그러므로, 제어회로(41)의 회로 구성이 단순해질 수 있다.
대안적으로는, 판독 버퍼 데이터 레지스터(9)로의 기입 동작이 완료되기 전에 판독명령의 실행이 시작되지 못하도록 하기위해서, 다음과 같은 구조를 사용할 수도 있다.
버스 제어 유닛(130)에 있는 제어회로(4)가 판독 버퍼 데이터 레지스터(9)로의 기입 동작이 완료되기 전에 CPU(120)에 의한 판독 버퍼 데이터 레지스터(9)에 판독명령의 실행의 시작을 검사하면, 제어회로(4)로부터 CPU(120)로 인터럽트(interrupt) 요청이 된다. 예를 들면, 외부 메모리(150)로부터 데이터를 필요로하지 않는 적당수의 명령들(제 3 명령)을 삽입하거나, 인터럽트 경로중에 위에 설명한 상태 레지스터의 내용을 시험함으로써, 필요한 데이터를 판독 버퍼 데이터 레지스터(9)로부터 정확하게 가져올 수 있도록, 정보처리장치가 프로그램된다. 판독 버퍼 데이터 레지스터(9)로부터 데이터를 판독하기 위한 판독 명령은 인터럽트 경로에서 다시 실행된다.
실시예 1 내지 실시예 3에서, 판독 동작 또는 기입 동작의 완료는, 외부 응답신호(16)를 외부 메모리(150)로부터 버스 제어 유닛(130)(또는 160)으로 보낸다음, 그 응답신호를 버스 제어 유닛(130)으로부터 CPU(120)로 더 보냄으로써, CPU(120)에 통보된다. 또 다른 시스템으로서, 외부 응답 신호(116)의 공급 또는 응답신호(113)의 공급은 생략해도 된다. 그러한 경우에, 외부 메모리(150)를 액세스하기 위해 필요한 주기의 수를 세기위한 계수기가 구비됨으로써, 명시된 시간 후에 동작이 수행된다. (그러한 시스템을 "고정된 대기 시스템"이라고 칭한다)
실시예1 내지 실시예3에서, 판독 버퍼 어드레스 레지스터(8)에 어드레스를 놓기 위한 명령의 실행은 외부 메모리(150)에 액세스를 시작한다. 더 상세히 말하면, CPU(120)로부터 출력된 어드레스가 판독 버퍼 어드레스 레지스터(8)에 할당된 어드레스이면(판독 버퍼 어드레스 레지스터(8)에 할당된 어드레스에 기입될 상응하는 데이터가 외부 메모리(150)의 판독 어드레스이면), 제어회로(4)(또는 41)는 판독 버퍼 어드레스 레지스터(8)에 외부 메모리(150)의 판독 어드레스를 데이터로서 기입하고, 동시에 판독 버퍼 어드레스 레지스터(8)에 기입된 판독 어드레스에 기초해서 외부 메모리(150)를 액세스한다.
대안적으로는, 판독 버퍼 어드레스 레지스터(8)에 판독 어드레스를 놓기위한 명령과 외부 메모리(150)를 액세스하기 시작하기위한 명령이 따로 제공될 수 있다. 그러한 경우에, 외부 메모리(150)의 동일한 어드레스로부터 데이터를 반복해서 판독하기위한 프로그램의 크기는 감소될 수 있다.
[실시예 4]
실시예 1 내지 실시예 3에서, 장시간 처리의 예로서 외부 메모리(150)로부터 데이터를 판독하기 위한 처리를 수행하는 정보처리장치(200 및 300)에 대해서 설명하였다. 그 처리는 판독 버퍼 어드레스 레지스터(8)에 판독 어드레스를 놓기위한 제 1명령가 판독 버퍼 데이터 레지스터(9)에 저장된 데이터를 가져오기 위한 제 2 명령의 두가지 명령을 따로 실행함으로써 수행된다. 실시예4에서는, 수치 연산 장치를 사용한 수치 연산을 위한 처리에 대해서 장시간 처리의 예로서 설명할 것이다. 수치 연산의 처리는 곱셈, 나눗셈, 덧셈 또는 뺄셈과 같은 비교적 긴시간을 요구하는 데이터처리이다. 실시예 4에 따라, 수치 연산의 처리는, 연산 데이터를 놓고 수치 연산을 시작하기 위한 명령과 수치 연산 결과를 가져오기 위한 명령의 두가지 별개의 명령을 실행함으로써 수행된다.
도 6은 본 발명의 실시예 4에 따른 정보처리장치(400)의 개략적 블록도이다. 도 6에 나타낸 바와 같이, 정보처리장치(400)는 프로세서(110')와 외부 메모리(150)를 포함한다. 프로세서(110')는 CPU(120'), 버스 제어 유닛(170), ROM(140) 및 수치 연산 유닛(180)을 포함한다. 버스 제어 유닛(170)은 어드레스 디코더(3), 제어 회로(42), 메모리 액세스 신호발생부(5), 데이터 인터페이스부(7), 연산 레지스터(21), 및 연산 결과 레지스터(22)를 포함한다. CPU(120')와 버스 제어 유닛(170)은 어드레스를 보내기 위한 어드레스 버스(121)와 데이터를 옮기기 위한 데이터 버스(122)를 경유해서 서로 연결된다. CPU(120')와 수치 연산 유닛(180)은 수치 연산에 필요한 연산 데이터를 보내기 위한 CPU 연산 버스(201)와 수치 연산 결과를 옮기기 위한 연산 데이터 버스(202)를 경유해서 서로 연결된다. 버스 제어 유닛(170)에 있는 연산 레지스터(21)는 레지스터용 연산 버스(301)(이하, 연산 버스(301)로서 간단히 언급된다)를 경유해서 수치 연산 유닛(180)에 연결되고, 그 연산 결과는 레지스터용 연산 데이터 버스(302)(이하, 간단히 연산 데이터 버스(302)라고 언급한다)를 경유해서 수치 연산 유닛(180)에 연결된다. ROM(140)으로부터, 프로그램과 명령은 명령 버스(141)를 경유해서 CPU(120')로 보내진다.
버스 제어 유닛(170)의 구조는, 버스 제어유닛(170)이 연산 레지스터(21)와 판독 버퍼 어드레스 레지스터(8)와 판독 버퍼 데이터 레지스터(9)의 연산결과를 포함하는 것 외에는, 실질적으로 실시예1과 실시예2에 있는 정보처리장치(200)의 버스 제어 유닛(130)의 것과 같다. 제어회로(42)는 수치 연산 유닛(180)에 수치 연산 요청 신호(204)를 입력하고, 수치 연산 유닛(180)으로부터 수치 연산 완료신호(205)를 수신한다. 이러한 점을 제외하고는, 제어 회로(42)는 정보처리장치(200)의 제어회로(4)의 것과 동일한 구조를 갖는다.
도 6에 나타낸 바와 같이, 수치 연산 유닛(180)은 수치 연산 디바이스(23), 수치 연산 제어회로(24) 및 선택기(25)를 포함한다. CPU(120')로부터의 연산 데이터는 연산 버스(201)를 통해서 선택기(25)에 입력되고, 버스 제어 유닛(170)의 연산 레지스터(21)로부터의 연산 데이터는 연산버스(301)를 경유해서 선택기(25)에 입력된다. 수치 연산 디바이스(23)에 의해서 얻어진 수치 연산 결과는 연산 데이터 버스(202)를 통해서 CPU(120')에 공급되고, 연산 데이터 버스(302)를 통해서 버스 제어 유닛(170)의 연산결과 레지스터(22)에 공급된다. 도 6에서, 연산 버스(201, 206 및 301)는 수치 연산을 위한 연산 데이터의 두부분을 옮긴다. 예를 들어, 수치 연산이 A×B의 곱셈이면, 각 버스의 상부비트는 데이터 A를 캐리하고, 각 버스의 하부 비트는 데이터 B를 캐리한다.
수치 연산 제어 회로(24)는 CPU(120')으로부터 공급된 제 1 수치 연산 요청 신호(203)와 버스 제어 유닛(170)에 제어 회로(42)로부터 공급된 제 2 수치 연산 요청 신호(204)에 기초해서 선택기(25)에 연산 선택신호(207)를 출력한다. 수치 연산 제어 회로(24)로부터 출력된 수치 연산 완료 신호(205)는 CPU(120')와 제어신호(42)에 공급된다.
다른점에 관해서는, 정보처리장치(400)는 도 6을 보면 이해할 수 있겠지만, 정보처리장치(200)과 같은 구조를 갖는다.
이하, 정보처리장치(400)의 동작에 대해서 설명하고자 한다.
통상의 수치 연산 명령을 수행하기 위해서, 정보처리장치(400)는 예를 들면 다음과 같은 방법으로 동작된다. CPU(120')는 제 1 수치 연산 요청 신호(203)를 요구하고, 그러면, 연산 버스(201)를 통해서 공급된 연산 데이터를 사용한 수치 연산은 수치 연산 유닛(180)에서 시작된다. 수치 연산 제어회로(24)는 제 1 수학 연산 요청 신호(203)에 기초해서 선택기(25)에 연산 선택 신호(207)를 출력한다. 선택기(25)는 CPU(120')로부터 연산 데이터를 선택하고, 수치 연산 디바이스(23)에 그 선택된 연산 데이터를 입력한다. 수치 연산이 완료되면, 수치 연산 제어 회로(24)는 수치 연산 완료 신호(205)를 요구하고, 그 수치 연산 결과는 연산 데이터 버스(202)를 통해서 CPU(120')에 보내진다.
두 개로 나뉘어진 명령에 의해서 수치 연산을 위한 장시간 처리를 수행하기 위해서, 정보처리장치(400)는 예를 들면 다음과 같이 동작된다. CPU(120')는 연산 레지스터(21)에 연산 데이터를 기입하기 위한 제 1 명령을 실행한다. 연산 레지스터(21)에 연산 데이터를 기입하는 동작이 완료되면, 제어 회로(42)는 수치 연산 유닛(180)에 제 2 수치 연산 요청 신호(204)를 요구한다. 제 2 수치 연산 요청 신호(204)가 수치 연산 제어 신호(24)에 출력되고, 상응하는 연산 선택 신호(207)는 선택기(25)에 출력된다. 선택기(25)는 연산 선택 신호(207)에 상응하는 연산 버스(301)를 통해서 연산 레지스터(21)로부터 공급된 연산 데이터를 선택하고, 그 선택된 연산 데이터를 수치 연산 디바이스(23)에 입력한다. 수치 연산이 완료되면, 수치 연산 제어 회로(24)는 수치 연산 완료 신호(205)를 요구한다. 수치 연산 완료 신호(205)에 기초해서, 제어 회로(42)는 연산 결과 버스(302)에 출력되는 수치 연산 결과 데이터를 연산결과 레지스터(22)에 기입한다. 이 지점에서, CPU(120')는 수치 연산 명령을 실행하지 않기 때문에(즉, 제 1 수치 연산 요청 신호(203)는 요구되지 않기 때문에), 수치 연산 완료 신호(205)는 무시된다.
수치 연산은 수치 연산 유닛(180)에서 수행되고, 그 수치 연산 결과는 연산 결과 레지스터(22)에 기입되는 동안, CPU(120')는 수치 연산 결과 데이터를 요구하지 않는 다수개의 명령(제 3 명령)을 실행할 수 있다. 제 3 명령을 실행한 후, CPU(120')는 연산 결과 레지스터(22)에 저장된 수치 연산 결과를 판독하고, 그렇게 되면 수치 연산 결과를 얻는다.
실시예 4에서, 외부 메모리(150)로부터 데이터를 판독하는 경우에서 처럼, 연산결과 레지스터(22)로부터 데이터를 판독하기 위한 판독 동작은 중지될 수 있고, 또는 CPU(120')는 수치 연산의 완료가 응답신호(113)의 요구에 의해서 CPU(120')에 통보되는 시스템에 의해서 대기상태로 될 수 있다. 별법으로는, 수치 연산에 필요한 머신 주기의 수를 미리 계산함으로써, 필요한 수의 제 3 명령(예를 들면 NOP 명령)이 연산 데이터를 기입하기 위한 명령과 수치 연산 결과 데이터를 판독하기 위한 명령 사이에 삽입되도록, 명령들이 스케줄된다.
상기 여러 실시예에서, 한 셋트의 판독 버퍼(판독 버퍼 어드레스 레지스터(8)와 판독 버퍼 데이터 레지스터(9)) 또는 한 셋트의 수치 연산 버퍼(연산 레지스터(21)와 연산결과 레지스터(22))가 제공된다. 대신에, 그러한 판독 버퍼 또는 수치 연산 버프들을 여러 셋트 구비할 수도 있다. 그러한 경우, 예를 들면 정보처리장치(200 또는 300)에서, CPU(120)는, 버스 제어 유닛(130)의 동작과 무관하게, 여러 셋트의 판독 버퍼 어드레스 레지스터에서 판독 어드레스를 외부 메모리(150)에 정착시킨다. 버스 제어 유닛(130)에서, 제어 회로(4)(또는 41)는 여러 셋트의 판독 버퍼 어드레스 레지스터로부터 어드레스들을 순차적으로 가져오고, 외부 메모리(150)로부터 판독된 데이터를 상응하는 판독 버퍼 어드레스 레지스터에 순차적으로 저장한다. 정보처리장치(400)에서, 연산 레지스터(21)와 그 연산 결과(22)는, 외부 메모리(150)로부터 데이터의 판독 동작의 경우와 같이, 판독 명령과 기입 명령(판독 요청 신호 또는 기입 요청 신호)에 의해서 동작된다. 따라서, 연산 레지스터(21)와 그 연산 결과(22)는, 연산 레지스터(21)에 데이터를 기입하는 동작이 외부 메모리로부터 데이터의 판독 처리용으로 수행되었는지 아니면 수치 연산을 위한 처리용으로 수행되었는지를 결정하기 위한 메카니즘을 제공함으로써, 외부 메모리(150)로부터 판독 데이터를 위한 처리용 판독 버퍼 데이터 레지스터와 판독 버퍼 어드레스로 레지스터로서 사용될 수 도 있다.
[실시예 5]
실시예 5에서는, 실시예 1 내지 실시예 4에서 설명한 명령들을 스케줄 관리 하기 위한 디바이스에 대해서 설명하고자 한다.
명령의 스케줄 관리는 예를 들면 상위 레벨(기호) 언어 또는 어셈블리 언어에 의해서 기재된 여러개의 명령을 포함하는 프로그램이 기계언어로 번역될 때 수행되고, 명령의 순서를 정리함으로써 실현된다.
도 7은 본 발명의 실시예 5에 따른 스케줄링 디바이스(70)의 동작을 개략적으로 보여준다. 도 7에 나타낸 바와 같이, 스케줄링 디바이스(70)는 상위 레벨 언어 또는 어셈블리 언어로 기재된 프로그램(71)을 기계어로 된 프로그램으로 번역한다. 번역하는 동안, 명령의 순서는 아래와 같이 정리된다.
도 8은 스케줄링 디바이스(70)의 동작을 설명하는 플로우챠트이다. 도 8에 나타낸 바와 같이, 스케줄링 디바이스(70)는, 먼저 각 명령에 의해서 수행된 처리를 완료하도록 요구받은 처리시간을 예측하고, 장시간 처리인지 아닌지를 결정한다(단계 S701). 장기간 처리란, CPU(20)에 의해 명령을 실행하기 위한 1 머신 주기에 배해서 비교적 긴 시간을 필요로하는 처리를 의미한다. 예를 들면, 장시간 처리는 적어도 2 머신 주기를 필요로 한다. 처기가 장시간 처리이면, 명령의 스케줄관리는 수행되지 않으며, 그 처리는 기계언어로 된 명령으로 번역된다(단계 S705).
처리가 장시간 처리일 것으로 결정되면, 후속되는 명령이, 장시간 처리의 처리결과에 상관하지 않고 CPU에 의해서 실행될 수 있는 하나 이상의 명령을 포함하는지 아닌지를 결정한다(단계 S702). 그러한 적절한 명령을 단계 S702에서 찾지 못하면, 장시간 처리가 기계언어로 된 명령으로 번역된다(단계 S705).
하나 이상의 적절한 명령을 단계 S702에서 찾으면, 장시간 처리는, 장시간 처리에서 수행된 동작에 필요한 제 1 데이터를 놓기위한 제 1 명령과, 제 1 명령의 실행에 의해서 얻어진 제 2 데이터를 가져오기 위한 제 2 명령의 두가지 명령으로 나뉘어진다(단계 S703). 다음에, 단계 S702에서 찾은 적절한 명령 중 적어도 하나는 제 1 명령의 실행 후, 제 1 명령 실행의 시작 전에 삽입된다(단계 S704).
본 발명의 범위와 주제를 벗어나지 않고 다양한 다른 변형이 될 수 있으며, 그러한 사실은 당 업계의 숙련자들에게는 자명할 것이다. 따라서, 여기에 첨부된 청구항들의 범위는 여기에 설명한 것에 한정하려는 의도가 아니며, 청구항들은 더넓게 해석되어야 한다.
위에 설명한 바와 같이, 본 발명에 따라, 외부 메모리로부터 데이터를 판독하는 처리 또는 수치 연산 처리와 같은 장시간 처리는 두 개의 분리된 명령을 실행함으로써 수행되고, 제 1 명령의 실행에 의해서 얻은 결과를 필요로 하지 않는 적어도 하나의 명령이 그 두 명령 사이에 삽입된다. 그러한 시스템으로 인하여, CPU의 1 머신 주기 및 장시간 처리에 필요한 시간간의 차이가 효과적으로 흡수된다. 그리하여, 명령을 실행하기 위해 필요한 시간이 더 작은 정보처리장치 및 정보처리 방법이 제공된다. 또한, 본 발명에 따라, 위와 같이 시간차이를 흡수하는 것은 하드웨어의 크기를 약간 증가시킴으로써 실현될 수 있다.

Claims (22)

  1. 다수의 명령들을 저장하는 명령저장수단과 그 명령저장수단으로부터 명령들을 가져와서 그 명령을 실행할 수 있도록 하는 중앙처리장치를 포함하는 정보처리장치에 있어서, 상기 중앙처리장치는 동작에 필요한 제 1데이터를 정하는 제 1명령가 상기 동작에 의해서 얻어진 제 2데이터를 가져오기 위한 제 2명령을 각각 실행함으로써 중앙처리장치의 적어도 2머신 주기를 필요로 하는 동작수행처리를 실행하고, 상기 머신 주기는 중앙처리장치에 의해 명령을 실행하기 위한 시간단위이며, 상기 중앙처리장치는 상기 제 1명령을 실행한 후, 상기 제 2명령을 실행하기 전에 상기 제 2데이터를 필요로 하지 않는 제 3명령을 적어도 하나 실행하는 정보처리장치.
  2. 제1항에 있어서, 상기 정보처리장치는 기억장치를 더 포함하고, 상기 동작은 기억장치에 저장된 정보의 판독 동작을 포함하고, 상기 제 1데이터는 기억장치에서 판독될 정보의 판독 어드레스이고, 상기 판독 어드레스는 제 1명령에 의해서 명시된 메모리 영역에 놓여지는 정보처리장치.
  3. 제2항에 있어서, 상기 제 1명령은, 상기 메모리 영역에 놓여진 상기 판독 어드레스에 기초해서 판독 동작을 시작하기 위한 명령을 포함하는 정보처리장치.
  4. 제1항에 있어서, 상기 동작은 수치 연산을 포함하고, 상기 제 1데이터는 수치 연산을 위한 연산 데이터이고, 상기 연산 데이터는 제 1명령에 의해서 명시된 메모리 영역에 놓여지는 정보처리장치.
  5. 제4항에 있어서, 상기 제 1명령은 메모리 영역에 놓여진 상기 연산 데이터에 기초해서 수치연산을 시작하기 위한 명령을 포함하는 정보처리장치.
  6. 제1항에 있어서, 상기 정보처리장치는, 데이터를 저장(holding)하기 위한 제 1 및 제 2레지스터와, 그 제 1 및 제 2레지스터를 제어하는 제어회로를 더 포함하며, 상기 제어회로는 상기 제 1명령에 기초해서 상기 제 1레지스터에 상기 제 1데이터를 기입하고, 상기 제 1레지스터에 기입된 상기 제 1데이터에 기초해서 동작을 수행하고, 상기 동작에 의해서 얻은 상기 제 2데이터를 상기 제 2레지스터에 기입하고, 상기 제 2명령에 기초해서 상기 제 2레지스터에 저장된 상기 제 2데이터를 상기 중앙처리장치에 보내는 정보처리장치.
  7. 제6항에 있어서, 상기 정보처리장치는 기억장치를 더 포함하고, 상기 제어회로는 상기 기억장치에 대한 액세스를 제어하고, 상기 동작은 상기 기억장치에 저장된 정보의 판독동작을 포함하고, 상기 제 1데이터는 판독될 상기 정보의 기억장치내의 판독 어드레스이고, 상기 제 2데이터는 상기 기억장치로부터 판독된 정보인 정보처리장치.
  8. 제7항에 있어서, 상기 제 1명령은 상기 제 1레지스터에 정해진 상기 판독 어드레스에 기초해서 상기 판독동작을 시작하기 위한 명령을 포함하는 것을 특징으로 하는 정보처리장치.
  9. 제7항에 있어서, 상기 중앙처리장치는 상기 명령 저장 수단에서 상기 제 1명령을 가져오고, 판독될 기억장치내에 존재하는 정보의 판독 어드레스를 출력하고, 그 어드레스가 출력된 후, 상기 기억장치로부터 판독된 정보를 필요로하지 않는 제 3명령을 적어도 하나 실행하고, 적어도 하나의 제 3명령이 실행된 후에, 명령 저장 수단으로부터 상기 제 2명령을 가져와서 상기 제 2명령을 실행하고, 상기 제 1레지스터는 제어회로의 제어하에 상기 중앙처리장치로부터 출력된 판독 어드레스를 받아서 저장하고, 상기 기억장치는 상기 제 1레지스터에 저장된 판독 어드레스를 받아서, 상기 제 3명령중 적어도 하나가 실행되는 동안 상기 제어 회로의 제어하에 수신된 판독 어드레스에 기초해서 정보를 출력하고, 상기 제 2레지스터는 상기 제어회로의 제어하에 상기 기억장치로부터 출력된 정보를 받아서 저장하고, 상기 제어회로는 상기 중앙처리장치에 의해서 실행된 상기 제 2명령에 의해서 상기 제 2레지스터에 저장된 정보를 전달하는 정보처리장치.
  10. 제9항에 있어서, 상기 정보처리장치는 그 중앙처리장치로부터 출력되는 어드레스의 적어도 일부를 디코드하기 위한 어드레스 디코더를 더 포함하고, 제 1어드레스 영역은 상기 제 1레지스터에 할당되고, 제 2어드레스 영역은 상기 제 2레지스터에 할당되고, 상기 제 1명령은 상기 제 1어드레스 영역에 판독 어드레스를 기입하기 위한 기입 명령이고, 상기 제 2명령은 상기 제 2어드레스 영역에 저장된 정보를 판독하기 위한 판독 명령이고, 상기 중앙처리장치는 상기 제 1명령에 기초해서 판독 어드레스에 기입될 어드레스를 출력하고, 그리고 상기 제 2명령에 기초해서 판독될 정보를 저장하는 어드레스를 출력하며, 상기 제어 회로는 상기 어드레스 디코더에 의해서 디코드된 어드레스가 제 1명령의 실행중 제 1명령 어드레스 영역의 어드레스와 동일한지를 검출하므로써 제 1레지스터에 기입동작이 실행되었음을 확인하고, 상기 제어회로는 상기 어드레스 디코더에 의해서 디코드된 어드레스가 제 2명령의 실행중 제 2명령 어드레스 영역의 어드레스와 동일한지를 검출하므로써 제 2레지스터에 기입동작이 실행되었음을 확인하는 정보처리장치.
  11. 제6항에 있어서, 상기 동작은 수치 연산을 포함하고, 상기 제 1데이터는 수치 연산을 위한 연산 데이터이고, 상기 제 2데이터는 수치 연산에 의해서 상기 연산 데이터를 처리하여 얻은 수학 연산 결과 데이터인 정보처리장치.
  12. 제11항에 있어서, 상기 제 1명령은 상기 제 1레지스터에 정해진 상기 연산 데이터에 기초해서 상기 수치 연산을 시작하기 위한 명령을 포함하는 정보처리장치.
  13. 제6항에 있어서, 상기 제 2레지스터에 기입하는 동작이 완료되기 전에 상기 제어회로가 상기 제 2명령의 실행을 검출하는 경우에, 상기 제어회로는 상기 제 2명령의 실행을 중지하도록 상기 중앙처리장치에 요청하며, 상기 기입 동작이 완료되면, 상기 제어 회로는 중지를 해제하고, 상기 제 2레지스터에 기입된 상기 제 2데이터를 상기 중앙처리장치에 전달하는 정보처리장치.
  14. 제6항에 있어서, 상기 중앙처리장치는 동작 특성에 의해서 결정된 지정된 수의 제 3명령을 실행하고, 따라서 상기 제 2데이터를 상기 제 2레지스터에 기입하는 동작이 완료되기 전에 상기 제 2명령이 실행되지 못하도록 하는 정보처리장치.
  15. 제6항에 있어서, 상기 정보처리장치는 상태 레지스터(state register)를 더 포함하고, 상기 제어회로는 상기 제 1레지스터에 상기 제 1데이터를 기입하기 위한 제 1상태로 상기 상태레지스터를 설정하고, 그리고 상기 제 2레지스터에 상기 제 2데이터를 기입하기 위한 제 2상태로 상기 상태 레지스터를 설정하고, 상기 중앙처리장치는 상기 상태 레지스터가 상기 제 2명령을 실행하기 전에 제 2상태에 있음을 확인하기 위한 명령을 실행하는 정보처리장치.
  16. 제6항에 있어서, 상기 제어회로는 상기 제 2레지스터에 기입한 동작이 완료되기 전에 상기 제 2명령의 실행을 검출하는 경우, 상기 제어회로는 서브루틴 프로그램을 수행하도록 상기 중앙처리장치에게 요청하는 정보처리장치.
  17. 제16항에 있어서, 상기 서브루틴 프로그램은 인터럽트 프로그램이고, 상기 제 2명령은 인터럽트 프로그램에서 재실행되는 정보처리장치.
  18. 어셈블리 언어 또는 상위레벨 언어 중의 하나로 기입된 다수의 명령을 포함하는 제 1프로그램을 기계언어로 기재된 제 2프로그램으로 번역하고, 제 1프로그램을 제 2프로그램으로 번역하는 동안 다수의 제 1프로그램의 순서를 정리하기 위한 스케줄링 디바이스에 있어서, 상기 스케줄링 디바이스는, 다수의 명령어들의 각각에 의해서 수행된 처리를 완료하기 위해 필요한 처리시간을 결정하고, 그리고 장기간 처리로서 적어도 2머신 주기를 필요로 하는 처리를 검출하기 위한 제 1검출기와, 여기에서, 상기 머신 주기는 프로그램을 실행하는 상기 중앙처리장치에 의해 명령을 실행하기 위해 필요한 시간 단위이며, 상기 장시간 처리에 의해서 얻은 처리 결과에 의존하지 않고 상기 중앙처리 장치에 의해서 실행될 수 있는 적어도 하나의 후속 명령을 상기 프로그램이 포함하고 있는 지의 여부를 검출하기 위한 제 2검출기와, 상기 제 1검출기와 상기 제 2검출기의 상기 검출 결과에 기초해서 다수의 명령의 처리순서를 정하기 위한 처리순서 결정수단(order arrangement means)을 포함하며, 상기 처리순서 결정수단은, 상기 제 1검출기가 장시간 처리를 검출하고, 상기 제 2검출기가 적어도 하나의 후속 명령을 검출하는 경우, 상기 장시간 처리에서 수행된 동작에 필요한 제 1데이터를 정하기 위한 제 1명령과, 상기 동작에 기초해서 얻은 제 2데이터를 가져오라는 제 2명령을 분리하고, 제 1명령 후, 상기 제 2명령이 수행되기 전에 상기 제 2검출기에 의해서 검출된 적어도 하나의 명령을 제 3명령으로서 삽입하는 스케줄링 디바이스.
  19. 다수의 명령을 저장하는 명령 저장 수단과, 이 명령 저장 수단으로부터 명령을 가져와서 명령을 실행하는 중앙처리장치를 이용하는 정보처리방법에 있어서, 적어도 2 머신 주기를 필요로 하는 처리가 수행될 때, 상기 머신 주기는 프로그램을 실행하는 중앙처리장치에 의해 명령을 실행하기 위한 시간 단위이며, 상기 처리는 제 1데이터에 의한 동작과, 이 동작에 의해 얻은 제 2데이터에 의한 동작을 포함하며, 상기 동작에 필요한 제 1데이터를 정하기 위한 제 1명령을 실행하는 단계와, 상기 제 1명령을 실행한 후에 제 2데이터를 필요로 하지 않는 제 3명령을 적어도 하나 실행하는 단계와, 상기 동작에 의해서 얻은 상기 제 2데이터를 가져오기 위한 제 2명령을 실행하는 단계를 포함하는 정보처리방법.
  20. 다수의 명령을 저장하는 명령 저장 수단과, 명령 저장 수단으로부터 명령을 가져와서 명령을 실행하는 중앙처리장치, 및 데이터를 저장하기 위한 제 1 및 제 2레지스터를 이용하는 정보처리방법에 있어서, 적어도 2 머신 주기를 필요로 하는 처리가 수행될 때, 상기 머신 주기는 프로그램을 실행하는 중앙처리장치에 의해 명령을 실행하기 위한 시간 단위이며, 상기 처리는 제 1데이터에 의한 동작과, 이 동작에 의해 얻은 제 2데이터에 의한 동작을 포함하며, 상기 동작에 필요한 제 1데이터를 정하기 위한 제 1명령을 실행하는 단계와, 상기 제 1명령에 기초해서 상기 제 1레지스터에 제 1데이터를 기입하는 단계와, 상기 제 1명령을 실행한 후에, 제 2데이터를 필요로하지 않는 제 3명령을 적어도 하나 실행하는 단계와, 적어도 하나의 상기 제 3명령이 실행되는 동안, 상기 제 1레지스터에 기입된 상기 제 1데이터에 기초해서 동작을 수행하고, 이 동작에 의해서 얻은 제 2데이터를 제 2레지스터에 기입하는 단계와, 상기 동작에 의해서 얻은 상기 제 2데이터를 가져오기 위해 제 2명령을 실행하는 단계와, 상기 제 2명령에 기초해서 상기 제 2레지스터에 저장된 상기 제 2데이터를 보내는 단계를 포함하는 정보처리방법.
  21. 제20항에 있어서, 상기 정보처리방법은, 상기 제 2레지스터에 제 2데이터를 기입하는 동작이 완료되기 전에 상기 제 2명령을 가져오는 경우에, 상기 제 2명령의 실행을 중지하도록 상기 중앙처리장치에게 요청하는 단계와, 상기 제 2레지스터에 상기 제 2데이터를 기입하는 동작이 완료되면, 상기 중지를 해제하고 상기 제 2레지스터에 기입된 상기 제 2데이터를 상기 중앙처리장치에 전달하는 단계를 더 포함하는 정보처리방법.
  22. 제20항에 있어서, 상기 적어도 하나의 제 3명령을 실행하는 단계는 상기 동작의 특성에 의해 결정된 다수의 제 3명령을 실행하므로써 상기 제 2데이터를 상기 제 2레지스터에 기입하는 동작이 완료되기 전에 상기 제 2명령이 실행되지 못하도록 하는 단계를 포함하는 정보처리방법.
KR1019970010270A 1996-03-22 1997-03-22 정보처리장치와 방법 및 스케줄링 디바이스 KR100282107B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP6596596 1996-03-22
JP96-065965 1996-03-22

Publications (2)

Publication Number Publication Date
KR970066863A KR970066863A (ko) 1997-10-13
KR100282107B1 true KR100282107B1 (ko) 2001-02-15

Family

ID=13302224

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970010270A KR100282107B1 (ko) 1996-03-22 1997-03-22 정보처리장치와 방법 및 스케줄링 디바이스

Country Status (5)

Country Link
US (1) US5968166A (ko)
EP (1) EP0797143B1 (ko)
KR (1) KR100282107B1 (ko)
CN (1) CN1109978C (ko)
DE (1) DE69730257T2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040008714A (ko) * 2002-07-19 2004-01-31 주식회사 하이닉스반도체 마이크로 제어 시스템에 있어서 메모리 정보를 읽는 장치

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3070735B2 (ja) 1997-07-23 2000-07-31 株式会社日立製作所 摩擦攪拌接合方法
US6370638B1 (en) * 1997-11-21 2002-04-09 Matsushita Electric Industrial Co., Ltd. Apparatus and method of computer program control in computer systems using pipeline processing
JP2000181796A (ja) * 1998-12-14 2000-06-30 Nec Corp 情報処理装置
DE60139253D1 (de) * 2000-05-22 2009-08-27 Panasonic Corp Chipkarte
US7873430B1 (en) 2006-06-14 2011-01-18 Rockwell Automation Technologies, Inc. System that can schedule operations that are performed on industrial control devices
CN103513957B (zh) * 2012-06-27 2017-07-11 上海芯豪微电子有限公司 高性能缓存方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0754461B2 (ja) * 1985-02-08 1995-06-07 株式会社日立製作所 情報処理装置
US4891753A (en) * 1986-11-26 1990-01-02 Intel Corporation Register scorboarding on a microprocessor chip
IL95996A0 (en) * 1990-10-15 1991-07-18 Ibm Israel Global instruction scheduler for a computer
JP2614358B2 (ja) * 1990-10-19 1997-05-28 富士通株式会社 ブロックリードアドレス生成システム
US5367648A (en) * 1991-02-20 1994-11-22 International Business Machines Corporation General purpose memory access scheme using register-indirect mode
IL98248A0 (en) * 1991-05-23 1992-06-21 Ibm Israel Instruction scheduler for a computer
US5428761A (en) * 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
WO1994008287A1 (en) * 1992-09-29 1994-04-14 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5748937A (en) * 1993-08-26 1998-05-05 Intel Corporation Computer system that maintains processor ordering consistency by snooping an external bus for conflicts during out of order execution of memory access instructions
US5584009A (en) * 1993-10-18 1996-12-10 Cyrix Corporation System and method of retiring store data from a write buffer
US5666507A (en) * 1993-12-29 1997-09-09 Unisys Corporation Pipelined microinstruction apparatus and methods with branch prediction and speculative state changing
US5537560A (en) * 1994-03-01 1996-07-16 Intel Corporation Method and apparatus for conditionally generating a microinstruction that selects one of two values based upon control states of a microprocessor
US5555432A (en) * 1994-08-19 1996-09-10 Intel Corporation Circuit and method for scheduling instructions by predicting future availability of resources required for execution
US5673426A (en) * 1995-02-14 1997-09-30 Hal Computer Systems, Inc. Processor structure and method for tracking floating-point exceptions
US5664193A (en) * 1995-11-17 1997-09-02 Sun Microsystems, Inc. Method and apparatus for automatic selection of the load latency to be used in modulo scheduling in an optimizing compiler

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040008714A (ko) * 2002-07-19 2004-01-31 주식회사 하이닉스반도체 마이크로 제어 시스템에 있어서 메모리 정보를 읽는 장치

Also Published As

Publication number Publication date
EP0797143A2 (en) 1997-09-24
KR970066863A (ko) 1997-10-13
CN1165345A (zh) 1997-11-19
DE69730257D1 (de) 2004-09-23
US5968166A (en) 1999-10-19
DE69730257T2 (de) 2005-09-01
EP0797143A3 (en) 1999-11-17
CN1109978C (zh) 2003-05-28
EP0797143B1 (en) 2004-08-18

Similar Documents

Publication Publication Date Title
US6101584A (en) Computer system and semiconductor device on one chip including a memory and central processing unit for making interlock access to the memory
JP5263844B2 (ja) パイプラインプロセッサにおける長い待ち時間命令の処理
US6978350B2 (en) Methods and apparatus for improving throughput of cache-based embedded processors
JP4883824B2 (ja) デ―タ・プロセッサにおいて後続の命令処理に影響を及ぼす方法および装置
US6611909B1 (en) Method and apparatus for dynamically translating program instructions to microcode instructions
EP0288760A2 (en) Data processor capable of correctly re-executing instructions
US20140201403A1 (en) Debug control circuit
JPH0696008A (ja) 情報処理装置
US6735688B1 (en) Processor having replay architecture with fast and slow replay paths
KR100282107B1 (ko) 정보처리장치와 방법 및 스케줄링 디바이스
EP0166431B1 (en) An information processing apparatus having an instruction prefetch circuit
WO2009098737A1 (ja) 外部デバイスアクセス装置、その制御方法及びシステムlsi
KR20090023418A (ko) 프로세서 및 코프로세서를 인터페이싱하는 방법 및 장치
JPH03201031A (ja) 情報処理装置
JP2004192021A (ja) マイクロプロセッサ
KR100705872B1 (ko) 몇몇의 명령원으로부터의 명령 실행 프로세서 및 방법
WO2001061480A1 (en) Processor having replay architecture with fast and slow replay paths
JP2927751B2 (ja) 情報処理装置及び情報処理方法及びスケジューリング装置
US5893932A (en) Address path architecture
US7587579B2 (en) Processor core interface for providing external hardware modules with access to registers of the core and methods thereof
US20040098564A1 (en) Status register update logic optimization
JP3171615B2 (ja) データ転送のリトライ制御方式
JP4151497B2 (ja) パイプライン処理装置
JP3785807B2 (ja) 制御装置
JP2001117819A (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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20101122

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee