KR930003410B1 - 스택영역의 데이터참조를 고속으로 행하는 데이터처리장치 - Google Patents

스택영역의 데이터참조를 고속으로 행하는 데이터처리장치 Download PDF

Info

Publication number
KR930003410B1
KR930003410B1 KR1019900008268A KR900008268A KR930003410B1 KR 930003410 B1 KR930003410 B1 KR 930003410B1 KR 1019900008268 A KR1019900008268 A KR 1019900008268A KR 900008268 A KR900008268 A KR 900008268A KR 930003410 B1 KR930003410 B1 KR 930003410B1
Authority
KR
South Korea
Prior art keywords
pointer
instruction
stack
data
contents
Prior art date
Application number
KR1019900008268A
Other languages
English (en)
Other versions
KR910001537A (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 KR910001537A publication Critical patent/KR910001537A/ko
Application granted granted Critical
Publication of KR930003410B1 publication Critical patent/KR930003410B1/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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Landscapes

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

Abstract

내용 없음.

Description

스택영역의 데이터참조를 고속으로 행하는 데이터처리장치
제 1 도는 청구범위 제 1 항 기재의 발명에 있어서의 제 1 의 실시예의 데이터처리장치의 블록도.
제 2 도는 청구범위 제 2 항기재의 발명에 있어서의 제 2 의 실시예의 블록도.
제 3 도는 제 1 의 실시예의 데이터처리장치에 있어서, 스택포인터상대 어드레싱모우드로 지정된 제 1 오퍼런드와 프레임포인터상대 어드레싱모우드로 지정된 제 2 오퍼런드를 연산해서 그 결과를 제 2 오퍼런드에 격납하는 명령이 연속해서 실행되는때의 파이프라인 동작 타이밍도.
제 4 도는 제 1 의 실시예의 데이터처리장치에 있어서, PUSH명령이 연속해서 실행되는 때의 파이프라인 동작 타이밍도.
제 5 도는 제 1 의 실시예에 있어서, POP 명령이 연속해서 실행되는 때의 파이프라인동작 타이밍도.
제 6 도는 제 2 의 실시예에 있어서 스택프레임형성명령의 직후에 스택포인터 또는 프레임포인터를 어드레스계산에 사용하는 명령이 실행되는 때의 파이프라인 동작 타이밍도.
제 7 도는 종래의 데이터처리장치의 블록도.
제 8 도는 종래의 데이터처리장치에 있어서 통상의 명령이 실행되는 때의 파이프라인동작 타이밍도.
제 9 도는 종래의 데이터처리장치에 있어서 스택포인터의 내용을 변경하는 명령의 직후에 스택포인터를 어드레스계산에 사용하는 명령을 실행하였을때의 파이프라인 동작도.
* 도면의 주요부분에 대한 부호의 설명
1 : 데이터기억수단 11 : 제 1 의 포인터
12 : 제 2 의 포인터 21, 22, 23 : 가산기
31, 32, 33, 34, 35, 36 : 선택기 41, 42, 43 : 정수발생수단
101 : 명령레지스터 102 : 스택포인터
103 : 해독수단 104 : 연산실행수단
105 : 프레임포인터 106 : 범용레지스터군
107 : 가감산수단 108 : 가산수단
204, 205, 206, 207, 208 : 레지스터 301, 302, 303 : 출력배드
본 발명은, 스택영역의 데이터만을 격납하는 고속기억수단을 구비하므로서, 스택영역의 데이터참조를 고속화하는 데이터처리장치에 관한 것이다. 프로그램에 의해 동작하는 데이터처리장치의 처리를 고속화하기 위해서는, 서브루우틴이 시용하는 데이터에의 참조를 고속화 할 필요가 있다. 이것을 소프트웨어에 의해 실현하는 수단의 하나로서, 서브루우틴이 사용하는 데이터를 될수 있는 한 고속참조(參照) 가능한 레지스터에 유지한다는 방법이 있다. 그러나, 통상사용 가능한 레지스터의 수에는 제한이 있으며, 별도의 서브루우틴을 호출하는 경우, 그 실행종료후에 사용하는 데이터를 유지하고 있는 레지스터는 서브루우틴 호출시에 퇴피(退避)시켜야 한다는 문제가 있다. 그래서, 하아드웨어에 의해 실현되는 수단의 하나로사, 스택영역의 데이타만을 격납하는 고속기억수단을 배설하여 서브루우틴이 사용하는 데이터를 스택영역에 유지한다는 방법이 있다.
종래의 스택영역의 데이터참조를 고속으로 행하는 데이터처리장치로서는, 예를들면 ADVANCED MICRO DEVICES, INC., Am29000 32-Bit Streamlined Instruction Processor Users Manual, 1988에 표시되어 있다. 이 종래의 데이터처리장치는, 제 1 오퍼런드와 제 2 오퍼런드를 연산해서 제 3 오퍼런드에 격납하는 3오퍼런드형식의 명령체계를 가지고, 스택영역의 데이터를 스택포인터에 격납된 어드레스로부터의 상대위치에 따라 지정하기 때문에, 제 1 오퍼런드, 제 2 오퍼런드, 제 3 오퍼런드의 각각에 대응하는 3개의 상대위치 지정부를 명령어중에 가진다. 제 7 도는 이 종래의 데이터처리장치의 블록도를 표시하는 것이며, (1)은 데이터기억수단, (101)은 명령어를 격납하는 명령레지스터, (102)는 스택포인터, (103)은 해독수단, (104)는 연산실행수단, (201), (202), (203)은 가산기, (204), (205), (206), (207)은 파이프라인처리를 위한 레지스터(301), (302)는 연산실행수단(104)의 입력배드(Bath), (303)은 연산실행수단(104)의 출력배드이다.
이상과 같이 구성된 종래의 데이터처리장치에 있어서는, 명령레지스터(101)에 스택영역의 데이터를 참조하는 명령어가 격납되면, 해독수단(103)에 의해 명령어가 해독됨과 동시에, 가산기(201), (202), (203)에 의해 스택포인터(102)에 격납되어 있는 어드레스와 명령어의 제 1 오퍼런드의 상대위치지정부, 제 2 오퍼런드의 상대위치지정부, 제 3 오퍼런드의 상대위치지정부의 각각의 값이 가산되고, 그 출력이 레지스터(204), (205), (206)에 격납된다. 다음에 데이터기억수단(1)에서 제 1 오퍼런드와 제 2 오퍼런드가 탄독되어 배드(301), (302)에 출력되고, 연산실행수단(104)내부의 입력레지스터에 격납됨과 동시에, 레지스터(206)에 격납되어 있던 제 3 오퍼런드의 어드레스가 레지스터(207)에 전송된다. 다음에 연산실행수단(104)는 명령어로 지정된 연산을 실행해서 그 결과를 내부의 출력레지스터에 격납함과 동시에, 레지스터(207)에 격납되어 있던 어드레스가 레지스터(208)에 전송된다. 최후에, 연산결과가 배드(303)에 출력되어, 데이터기억수단(1)의 레지스터(208)이 출력하는 어드레스에 격납된다.
다음에, 스택영역의 데이터를 참조하는 명령어 연속할때의 동작에 대해서 설명한다. 이 종래의 데이터처리장치는, 명령의 해독, 오퍼런드의 판독, 연산의 실행, 연산결과의 격납의 4스테이지에 의해 구성된 파이프라인 처리방식을 채용하고 있기 때문에, 그 동작은 제 8 도에 표시한 바와같이 된다. 즉, 각 스테이지가 병렬로 동작하기 때문에 실질적으로 1사이클로서 명령을 실행할 수 있다. 또한, 연산결과를 다음 명령의 오퍼런드로서 탄독하는 경우에는, 연산결과를 직접 다음 연산의 입력으로 하기 위한 바이패스회로가 사용된다.
다음에, 스택포인터(102)의 내용을 변경하는 명령을 실행한 직후에 스택영역의 데이터를 참조하는 명령을 실행하는 때의 동작을 설명한다. 제 9 도는 이때의 파이프라인동작을 표시하는 것이며, 스택포인터(102)의 변경이 종료할때까지 데이터기억수단(1)의 어드레스계산을 실행할수 없기 때문에, 3사이클의 아이들시간이 발생한다. 서브루우틴에서 사용하는 데이터를 스택영역에 유지하는 경우는, 예를들면, 모리시다이와오(森下巖)「마이크로컴퓨우터의 하아드웨어」pp61-71에 표시되어 있는 바와같이 스택포인터와 프레임포인터를 베이스레지스터로서 스택영역의 데이터로 액세스한다는 방법이 잘 사용된다. 또, 서브루우틴에의 파라미터의 인도(引渡)나 레지스터의 일시적인 대피에는 스택에의 푸시가, 레지스터의 복원에는 스택으로부터의 폽이 실행되고, 그때에는 스택포인터의 내용을 파라미너터나 레지스터의 사이즈만큼 감소 또는 증대할 필요가 있다. 그러나, 상기와 같은 구성으로는, 프레임 포인터를 베이스레지스터로서 서브루우틴의 국소변수를 고속으로 참조할 수 없다는 과제를 가지고 있었다. 또, 서브루우틴의 호출, 복귀의 전후에는 스택포인터의 내용을 변경하는 푸시, 폽이 연속해서 파이프라인처리에 많은 아이들상태가 발생하고, 실행속도가 저하한다는 과제도 가지고 있었다. 또, 서브루우틴 호출된 직후에, 국소변수영역을 스택영역에 확보하기 위해서, 서브루우틴을 호출한 쪽의 프레임포인터를 스택에 푸시하고, 현재의 스택포인터의 내용을 프레임포인터에 복사하고, 스택포인터에 확보하는 국소변수 영역의 사이즈를 감산한다는 처리를 잘 행하고(예를들면, 모토로라사제의 마이크로컴퓨우터 MC68000에서는 LINK라는 1명령으로 이 처리를 실행한다). 이 처리를 일반적으로 스택프레임의 형성이라고 한다. 그러나, 이처리도 스택포인터의 갱신을 최후에 실행하기 위해서, 그 직후에 스택영역의 데이터를 참조하는 명령을 실행하면 파이프라인 처리에 아이들상태가 발생하고, 실행속도가 저하한다는 과제도 가지고 있었다.
청구범위 제 1 항 기재의 발명은 프레임포인터를 베이스 레지스터로서 스택영역의 데이터를 고속으로 참조할수 있고, 푸시, 폽이 연속하더라도 실행속도의 저하를 초래하지 않는 데이터처리장치를 제공하는것을 목적으로한다. 상기 목적을 달성하기 위해서, 청구범위 제 1 항 기재의 발명은 스택포인터와, 프레임포인터와, 적어도 2개의 데이터의 탄독과 1개의 데이터의 기입을 동시에 행하는 것이 가능한 데이터 기억수단과, 상기 스택포인터의 내용변경을 수반하는 명령을 해독하는 해독수단과, 상기 스택포인터가 표시하는 어드레스가 상기 데이터기억수단의 어느 위치에 맵핑되어 있는가를 표시하는 제 1 의 포인터와, 상기 프레임포인터가 표시하는 어드레스가 상기 데이터기억수단의 어느위치에 맵핑되어있는가를 표시하는 제 2 의 포인터와, 명령어중의 오퍼런드 지정부의 일부와 상기 제 1 의 포인터에 격납되어 있는 데이터를 연산하는 제 1 의 연산수단과, 명령어중의 오퍼런드 지정부의 일부와 상기 제 2 의 포인터에 격납되어 있는 데이터를 연산하는 제 2 의 연산수단과, 상기 제 1 의 포인터에 격납되어 있는 데이터와 미리 결정된 정수를 연산하는 제 3 의 연산수단과, 상기 제 3 의 연산수단의 출력을 상기 제 1 의 포인터에 기입하는 제 1 의 포인터갱신수단과, 상기 스택포인터가 표시하는 어드레스의 상기 데이터기억수단의 맵핑위치를 상기 제 1 의 포인터에 기입하는 제 2 의 포인터갱신수단과, 상기 프레임 포인터가 표시하는 어드레스의 상기 데이터기억수단의 맵핑위치를 상기 제 2 의 포인터에 기입하는 제 3 의 포인터갱신수단을 구비하여 프레임포인터에 명령어로 지정된 상대위치 가산한 어드레스가 데이터기억수단의 어느위치에 맵핑하는가를 제 2 의 연산수단의 출력에 의해 결정하고, 프레임포인터를 베이스레지스터로서 스택영역의 데이터를 고속으로 참조할수 있다.
또, 푸시, 폽 명령을 실행한때에는, 스택포인터가 감소 또는 증대되기전에 제 3 의 연산수단의 출력을 제 1 의 갱신수단에 의해 제 1 의 포인터에 기입하고, 그 직후에 스택포인터를 참조하는 명령이 실행되더라도 갱신된 제 1 의 포인터를 사용하여, 파이프라인에 아이들상태를 발생하는일 없이 직후의 명령을 실행할 수 있다. 청구범위 제 2 항 기재의 발명은, 청구범위 제 1 항 기재의 발명의 목적에 추가해서, 서브루우틴의 스택프레임형성을 고속화하는 것을 목적으로 한다.
상기 목적을 달성하기 위해서, 청구범위 제 2 항 기재의 발명은, 스택프레임형성명령이 실행된때에는, 제 4 의 연산수단의 출력을 제 4 의 갱신수단에 의해 제 1 의 포인터에 기입하고, 제 3 의 연산수단의 출력을 제 5 의 갱신수단에 의해 제 2 의 포인터에 기입하고, 그 직후에 스택포인터 또는 프레임 포인터를 참조하는 명령이 실행되더라도 갱신된 제 1 의 포인터 또는 제 2 의 포인터를 사용하여, 파이프라인처리에 아이들상태를 발생하는 일없이 직후의 명령을 실행할 수 있다.
이하 본 발명의 실시예를 첨부한 도면에 의거하여 상세히 설명한다. 제 1 도는 청구범위 제 1 항 기재의 발명의 제 1 실시예에 있어서의 데이터처리장치의 블록도를 표시하는 것이다. 제 1 도의 있어서, (1)은 2개의 데이터판독과 1개의 데이터기입을 동시에 실행할 수 있는 3포인터의 데이터기억수단, (11)은 제 1 의 포인터, (12)는 제 2 의 포인터, (21), (22)는 가산기, (31), (32), (33), (34), (35)는 선택기, (41), (42)는 정수발생수단, (101)은 명령레지스터, (102)는 스택포인터, (103)은 해독수단, (104)는 연산실행수단, (105)는 프레임포인터, (106)는 범용레지스터군(群), (107)은 미리 결정된 정수를 가감산 하는 가감산수단, (204), (205), (207), (208)은 파이프라인처리를 위한 레지스터, (301), (302)는 연산실행수단(104)의 입력배드, (303)은 연산샐행수단(104)의 출력배드이다. 또, 본 실시예에서는 청구범위 제 1 항 기재의 제 1 의 연산수단, 제 2 의 연산수단, 제 3 의 연산수단을 그 입력을 절환(切替)하는 선택기와 정수발생수단을 배설하므로서 1개의 가산기를 실현하고 있다. 제 1 의 실시예의 데이터처리장치는, 제 1 오퍼런드와 제 2 오퍼런드를 연산해서 재차 제 2 오퍼런드에 격납한다는 2오퍼런드방식의 명령체계를 가지고, 각각의 오퍼런드에 대해서, 스택포인터로부터의 상대위치에 의해 어드레스를 지정하는 스택포인터상대어드레싱모우드와, 프레임포인터로부터의 상대위치에 의해 어드레스를 지정하는 프레임포인터 상대어드레싱모우드를 사용할 수 있다. 또, 스택포인터의 내용을 기입하는 데이터의 사이즈만큼 감소시킨후 스택포인터가 표시하는 어드레스에 데이터를 기입하는 푸시(PUSH) 명령과 스택포인터가 표시하는 어드레스로부터 데이터를 판독한후 스택포인터의 내용을 판독한 데이터의 사이즈만큼 증대하는 폽(POP) 명령을 가진다. 또, 제 1 의 실시예에 있어서는 데이터기억수단(1)의 용량은 256바이트이며, 4바이트단위로 직접맵방식으로 데이터를 기억하고 있기 때문에, 제 1 의 포인터(11) 및 제 2 의 포인터(12)는, 각각 스택포인터 및 프레임포인터의 하위에서부터 3비트쯤에서 8비트쯤의 값을 통상 유지한다.
이상과 같이 구성된 제 1 의 실시예의 데이터처리장치에 대해서, 이하 그 동작을 설명한다. 먼저, 스택포인터상대 어드레싱모우드로 지정된 제 1 오퍼런드와 프레임포인터상대 어드레싱 모우드로 지정된 제 2 오퍼런드를 연산해서 그 결과를 제 2 오퍼런드에 격납하는 명령을 실행하는 때의 동작을 설명한다. 먼저, 명령어가 명령레지스터(101)에 격납되면, 해독수단(103)에 의해 명령이 해독됨과 동시에, 선택기(31)은 제 1 의 포인터(11)의 출력을 선택하고, 선택기(32)는 명령레지스터(101)에 격납된 명령어의 제 1 오퍼런드의 상대위치지정부를 선택하고, 선택기(33)은 제 2 의 포인터(12)의 출력을 선택하고, 선택기(34)는 명령레지스터(101)에 격납된 명령어의 제 2 오퍼런드의 상대위치지정부를 선택한다. 가산기(21)은 선택기(31)과 선택기(32)의 출력을 가산하므로서 데이터기억수단(1)의 제 1 오퍼런드의 어드레스를 결정하고, 그 어드레스가 레지스터(204)에 격납되어, 가산기(22)는 선택기(33)과 선택기(34)의 출력을 가산하므로서 데이터기억수단(1)의 제 2 오퍼런드의 어드레스를 결정하고, 그 어드레스가 레지스터(205)에 격납된다. 다음에, 데이터 기억수단(1)의 레지스터(204)가 표시하는 어드레스와 레지스터(205)가 표시하는 어드레스의 데이터가 판독되어 배드(301), 배드(302)에 출력되어, 각각 연산실행수단(104)내부의 입력레지스터에 격납됨과 동시에, 레지스터(205)의 내용이 레지스터(207)이 전송된다. 다음에, 연산실행수단(104)에서 명령으로 지정된 연산이 실행되고, 연산결과가 연산실행수단(104) 내부의 출력레지스터에 격납됨과 동시에, 레지스터(207)의 내용이 레지스터(208)에 전송된다. 최후에, 연산결과가 배드(303)에 출력되고, 데이터기억수단(1)의 레지스터(208)이 표시하는 어드레스에 기입된다.
이상의 처리는 파이프라인 처리방식에 의해 실행되고, 마찬가지의 명령이 연속해서 실행되는 때의 파이프라인 동작은 제 3 도와 같이된다.
다음에 4바이트길이의 범용레지스터의 1개를 스택에 푸시하는 명령을 실행하는 때의 동작을 설명한다. 먼저, 명령어가 명령레지스터(101)에 격납되면 해독수단(103)에 의해 명령이 해독되어 푸시하는 레지스터의 번호가 범용레지스터군(106)에 출력됨과 동시에, 선택기(33)은 제 1 의 포인터(11)을 선택하고, 선택기(34)는 정수발생수단(42)가 출력하는 -4를 선택하고, 선택기(35)는 가산기(22)의 출력을 선택한다. 가산기(22)는 선택기(33)과 선택기(34)의 출력을 가산하므로서 데이터 기억수단 1의 범용레지스터를 푸시하는 어드레스(제 1 의 포인터가 표시하는 어드레스-4)를 결정하고, 그 어드레스가 레지스터(205)와 제 1 포인터(11)에 격납된다. 이 시점에서 제 1 의 포인터(11)은 다음 명령의 데이터기억수단(1)의 어드레스 계산에 필요한 값을 유지하므로서, 다음 명령이 스택포인터를 참조하는 명령이라 하더라도 파이프라인 동작에 아이들상태를 발생하는 일은 없다.
다음에, 범용레지스터군(106)의 명령으로 지정된 레지스터의 내용이 배드(301)에 출력되고, 연산실행수단(104)내부의 입력레지스터에 격납됨과 동시에, 레지스터(205)의 내용이 레지스터(207)에 전송되고, 스택포인터(102)의 내용이 가감산수단(107) 내부의 입력레지스터에 전송된다. 다음에, 연산실행수단(104)에서 내부의 입력레지스터의 내용이 내부의 출력 레지스터에 전송됨과 동시에, 레지스터(207)의 내용이 레지스터(208)에 전송되며, 가감산수단(107)에서는 내부의 입력레지스터에 격납된 스택포인터의 내용에서 4가 감산되어, 가감산수단(107)내부의 출력레지스터 격납된다. 최후에 지정된 범용레지스터의 내용이 배드(303)에 출력되어, 데이터기억수단(1)의 레지스터(208)이 표시하는 어드레스에 기입됨과 동시에, 가감산수단(107)내부의 출력레지스터의 내용이 스택포인터(102)에 기입된다. 이상의 처리는 마찬가지로 파이프라인처리 방식에 의해 실행되고, 푸시(PUSH) 명령이 연속해서 실행되는 때의 파이프라인동작은 제 4 도와 같이 된다. 또, 제 1 의 실시예에서는 가감산수단(107)을 배설하고 있으나, 가감산수단은 배설하지 않은 경우에는, 연산실행수단(104)에서 스택포인터의 내용에서부터 4를 감산하므로서 푸시(PUSH) 명령의 실행에는 2사이클을 필요로 하나, 푸시(PUSH) 명령의 직후에 스택포인터를 참조하는 명령을 실행하는 경우에, 아이들 상태가 발생하지 않는다는 점은 마찬가지이다.
다음에 4바이트길이의 범용레지스터의 1개에 스택으로부터 데이타를 폽하는 명령을 실행하는 때의 동작을 설명한다. 먼저, 명령어가 명령레지스터(101)에 격납되면 명령해독수단(103)에 의해 명령이 해독되어 폽된 데이터를 격납하는 레지스터의 번호가 범용레지스터군(106)에 출력됨과 동시에, 선택기(31)은 제 1 의 포인터(11)을 선택하고, 선택기(32)는 정수 발생수단(41)이 출력하는 0을 선택하고, 선택기(33)은 제 1 의 포인터(11)을 선택하고, 선택기(34)는 정수 발생수단(42)가 출력하는 +4를 선택하고, 선택기(35)는 가산기(22)의 출력을 선택한다. 가산기(21)은 선택기(31)과 선택기(32)의 출력을 가산하므로서 데이터기억수단(1)이 폽하는 어드레스(제 1 의 포인터가 표시하는 어드레스)를 결정하고, 그 어드레스가 레지스터(204)에 격납된다. 가산기(22)는 선택기(33)과 선택기(34)의 출력을 가산하므로서 데이터기억수단(1)의 폽명령실행후의 스택포인터가 표시하는 어드레스(제 1 의 포인터가 표시하는 어드레스 +4)를 결정하고, 그 어드레스가 제 1 포인터(11)에 격납된다. 이 시점에서 제 1 의 포인터(11)은 다음 명령의 데이터기억수단(1)의 어드레스 계산에 필요한 값을 유지하므로서, 다음 명령이 스택포인터를 어드레스 계산에 사용하는 명령이라하더라도 파이프라인 동작에 아이들상태를 발생하는 일은 없다.
다음에, 데이터기억수단(1)의 레지스터(204)가 표시하는 어드레스의 데이터가 판독되어서 배드(301)에 출력되고, 연산실행수단(104) 내부의 입력레지스터에 격납됨과 동시에, 스택포인터(102)의 내용이 가감산수단(107) 내부의 입력레지스터에 전송된다. 다음에, 연산실행수단(104)에서 내부의 입력레지스터의 내용이 내부의 출력레지스터에 전송됨과 동시에, 가감산수단(107)에서는 내부의 레지스터에 격납된 스택포인터의 내용에 4가 가산되어, 내부의 출력레지스터에 격납된다. 최후에, 폽된 데이터가 배드(303)에 출력되어, 범용레지스터군(106)의 지정된 레지스터에 기입됨과 동시에, 가감산수단(107)내부의 출력레지스터의 내용이 스택포인터(102)에 기입된다. 이상의 처리는 마찬가지로 파이프라인처리방식에 따라 실행되어, 폽명령이 연속해서 실행되는 때의 파이프라인동작은 제 5 도와 같이 된다. 또, 제 1 의 실시예에서는 가감산수단(107)을 배설하고 있으나, 가감산수단을 배설하지 않은 경우에는, 연산실행수단(104)에서 스택포인터의 내용에 4를 가산하므로서 폽(POP)명령의 실행에는 2사이클을 필요로하나, 폽(POP) 명령의 직후에 스택포인터를 어드레스 계산에 사용하는 명령을 실행하는 경우에, 아이들 상태가 발생하지 않는다는 점은 마찬가지이다.
단, 푸시(PUSH), 폽(POP) 명령이외의 명령으로 스택포인터나 프레임포인터를 변경한 직후에 그들을 참조하는 명령을 실행한 경우에는, 스택포인터(102) 또는 프레임 포인터(105)의 갱신과 동시에, 제 1 의 포인터(11) 또는 제 2 의 포인터의 갱신을 행하기 위해서,종래와 마찬가지로 파이프라인동작에 아이들상태를 발생한다. 그러나, 푸시(PUSH), 폽(POP) 명령의 실행빈도와 비교하면 그들명령의 실행빈도는 작다. 또, 스택포인터상대 어드레싱모우드 및 프레임 포인터상대 어드레싱모우드이외의 어드레싱모우드로 메모리상의 데이터를 참조하는 경우는, 연산실행수단(104)에서 어드레스 계산을 실행한 후에 그 어드레스의 데이터를 판독하기 위해서, 실행에 많은 시간을 필요로 한다.
이상과 같이 제 1 의 실시예에 의하면, 제 2 의 포인터와 명령어의 일부를 가산하는 수단을 배설하므로서, 프레임포인터를 베이스 레지스터로서 스택영역의 데이터를 고속으로 참조할 수 있고, 제 1 의 포인터와 미리 결정된 정수를 가산하는 수단과 그 출력을 제 1 의 포인터에 기입하는 수단을 배설하므로서, 푸시(PUSH) 명령이나 폽(POP) 명령등의 스택포인터의 변경을 수반하는 명령을 실행한 직후에, 스택포인터를 어드레스 계산에 사용하는 명령을 파이프라인 처리에 아이들상태를 발생하는 일 없이 실행할 수 있다. 또한, 제 1 의 실시예에 있어서, 청구범위 제 1 항 기재의 제 1 의 연산수단과 제 2 의 연산수단과 제 3 의 연산수단을, 제 2 개의 선택기와 1개의 정수발생수단과 1개의 가산기에 의해 실현했으나, 복수의 가산기(연산수단)을 배설해서 그 출력을 선택하는 등, 연산수단과 선택기의 조합(組合)에는 여러가지 구성을 생각할 수 있다.
제 2 도는 청구범위 제 2 항기재의 발명의 제 2 의 실시예에 있어서의 데이터처리장치의 블록도를 표시한 것이다. 제 2 도에 있어서, (23)은 제 3 의 가산기, (42)는 정수 발생수단(36)은 제 6 의 선택기, (108)은 스택포인터의 내용과 미리 결정된 정수를 가산하는 기능과, 그 가산결과와 명령어의 일부를 가산하는 기능을 가진 가산수단, 그외는 제 1 도와 마찬가지이다. 또한, 본 실시예에서는 청구범위 제 2 항기재의 제 3 의 연산수단으로서 3입력의 가산기를 사용하고 있다.
제 2 의 실시예이 데이터처리장치는, 제 1 의 실시예의 데이터처리장치와 마찬가지의 명령체계 및 명령체계를 가지며, 또한 프레임 포인터를 스택에 푸시하고, 푸시후의 스택포인터의 내용을 프레임포인터에 복사하여, 스택포인터의 내용을 지정한 값만큼 가산한다는 처리를 1 명령으로 행하는 스택프레임 형성명령을 가진다.
이와같이 구성된 제 2 의 실시예의 데이터처리장치에 대해서, 이하 그 동작을 설명한다.
스택프레임 형성명령이 명령레지스터(101)에 격납하면, 명령이 해독수단(103)에 의해 해독됨과 동시에, 선택기(33)은 제 1 의 포인터(11)을 선택하고, 선택기(34)는 정수 발생수단(42)가 출력하는 -4를 선택하고, 선택기(35)는 가산기(23)을 선택하고, 선택기(36)은 가산기(22)를 선택하고, 정수발생수단(43)은 -4를 출력한다. 가산기(22)는 선택기(33)과 선택기(34)의 출력을 가산하므로서 데이터기의 수단(1)의 프레임포인터(105)를 푸시하는 어드레스(제 1 의 포인터 -4)를 결정하고, 그 어드레스가 레지스터(205)의 제 2 의 포인터(12)에 격납된다. 이때, 가산기(23)은 제 1 의 포인터의 출력과 명령레지스터(101)에 격납된 명령어의 국소변수영역을 확보하기위한 값(부수)를 지정하는 부분과 정수 발생수단(43)의 출력을 가산하고, 그 값이 제 1 의 포인터(11)에 격납된다. 이 시점에서 제 1 의 포인터(11)과 제 2 의 포인터(12)는 다음명령의 데이터기억수단(1)의 어드레스 계산에 필요한 값을 유지하게되고, 다음 명령이 스택포인터 또는 프레임 포인터를 참조하는 명령이라하더라도 파이프 라인처리에 아이들 상태를 발생하는 일은 없다. 다음에 프레임포인터(105)의 내용이 배드(301)에 출력되어 연산수단(104)내부의 입력레지스터에 격납되어, 스택포인터(102)의 내용이 가산수단(108) 내부의 입력레지스터에 전송됨과 동시에, 레지스터(205)의 내용이 레지스터(207)에 전송된다.
다음에, 연산수단(104)에서 내부의 입력레지스터의 내용이 내부의 출력레지스터에 전송되고, 가산수단(108)에서는, 내부의 입력레지스터에 격납된 스택포인터의 내용에 -4가 가산되어 내부의 제 1 의 출력레지스터에 격납됨과 동시에, 입력레지스터에 격납된 스택포인터의 내용과 -4와 명령레지스터에 격납된 명령어의 일부가 가산되어 내부의 제 2 의 출력레지스터에 격납됨과 동시에, 레지스터(207)의 내용이 레지스터(208)에 전송된다. 최후에, 연산실행수단(104)내부의 출력 레지스터에 격납된 프레임포인터의 내용이 데이터기억수단(1)의 레지스터(208)의 표시하는 어드레스에 기입됨과 동시에, 가산수단(108) 내부의 제 1 의 출력레지스터의 내용이 프레임포인터(105)에 기입되고, 가산수단(108) 내부의 제 2 의 출력레지스터의 내용이 스택포인터(102)에 기입된다. 이상의 처리는 마찬가지로 파이프라인처리방식에 의해 실행되고, 스택프레임 형성명령이 실행된 직후에 스택포인터상대 어드레싱 모우드로 지정된 제 1 오퍼런드를 프레임포인터상대어드레싱 모우드로 지정된 제 2 오퍼런드를 연산해서 제 2 오퍼런드에 격납하는 명령을 실행했을때의 파이프라인동작은 제 6 도와 같이 된다.
또, 제 2 의 실시예에서는 가산수단(108)을 배설하고 있으나, 가산수단(108)을 배설하지 않은 경우에는, 연산수단(104)에서 스택포인터의 내용에 4를 가산해서 프레임포인터에 격납하고, 또한 그 값에 명령어로 지정된 값을 가산하므로서 스택프레임 형성명령의 실행에는 3 사이클을 필요로하나, 스택프레임 형성명령의 직후에 스택포인터나 프레임포인터를 참조하는 명령을 실행하는 경우에, 아이들상태가 발생하지 않는다는 점은 마찬가지이다.
이상과 같이 제 2 의 실시예에 의하면, 제 1 의 포인터와 명령어의 일부와 미리 결정된 정수를 가산하는 수단과, 제 3 의 연산수단의 출력을 제 2 의 포인터에 기입하는 수단을 배설하므로서, 스택프레임 형성명령을 실행한 직후에, 스택포인터나 프레임포인터를 참조하는 명령을 파이프라인동작에 아이들 상태를 발생하는 일 없이 실행할 수 있다.
이상 설명한 바와같이, 청구범위 제 1 항 기재의 발명에 의하면, 서브루우틴이 사용하는 스택영역의 데이터를 프레임포인터를 베이스 레지스터로서 고속으로 참조할수 있으며, 푸시(PUSH) 명령이나 폽(POP) 명령등의 스택포인터의 갱신을 수반하는 명령을 실행한 직후에, 스택포인터를 어드레스계산에 사용하는 명령을 실행하더라도 파이프라인처리에 아이들상태를 발생하는 일이 없기 때문에, 실행속도 저하를 초래하지 않으며, 그 실용적효과는 크다.
또, 청구범위 제 2 항 기재의 발명에 의하면, 또 스택프레임 형성명령을 실행한 직후에, 스택포인터나 프레임포인터를 참조하는 명령을 실행하더라도 파이프라인처리에 아이들상태를 발생하는 일이 없기 때문에, 실행속도 저하를 초래하지 아니하고, 그 실용적효과는 크다.

Claims (2)

  1. 스택포인터와 ; 스택영역내의 서브루우틴의 국소변수영역의 베이스어드레스를 표시하는 프레임포인터와 ; 적어도 2개의 데이터의 판독과 1개의 데이터의 기입을 동시에 행하는 것이 가능한 데이터 기억수단과 ; 상기 스택포인터의 내용변경을 수반하는 명령을 해독하는 해독수단과 ; 상기 스택포인터가 표시하는 어드레스가 상기데이터기억수단의 어느위치에 맵핑되어 있는지를 나타낸 제 1 의 포인터와 ; 상기 프레임 포인터가 표시하는 어드레스가 상기 데이터기억수단의 어느 위치에 맵핑되어있는지를 나타내는 제 2 의 포인터와 ; 명령어중의 오퍼런드 지정부의 일부와 상기 제 1 의 포인터에 격납되어 있는 데이터를 연산하는 적어도 1개의 제 1 의 연산수단과 ; 명령어중의 오퍼런드 지정부의 일부와 상기 제 2 의 포인터에 격납되어 있는 데이터를 연산하는 적어도 1개의 제 2 의 연산수단과 ; 상기 제 1 의 포인터에 격납되어 있는 데이터와 미리 결정된 정수를 연산하는 적어도 1개의 제 3 의 연산수단과 ; 상기 제 3 의 연산수단의 출력을 상기 제 1 의 포인터에 기입하는 제 1 의 포인터갱신수단과 ; 상기 스택포인터가 표시하는 어드레스의 상기 데이터기억수단의 맵핑위치를 상기 제 1 의 포인터에 기입하는 제 2 의 포인터 갱신수단과 ; 상기 프레임 포인터가 표시하는 어드레스의 상기 데이터기억수단의 맵핑위치를 상기 제 2 의 포인터에 기입하는 제 3 의 포인터에 갱신수단을 구비하고 ; 미리 결정된 상기 스택포인터의 내용변경을 수반하는 명령이 실행된 때에는 상기 제 1 의 포인터갱신수단에 의해 제 1 의 포인터의 내용을 갱신하고, 그 외의 명령에 의해 상기 스택포인터의 내용이 변경된 때는 상기 제 2 의 포인터 갱신수단에 의해 제 1 의 포인터의 내용을 갱신하고, 상기 프레임포인터를 갱신하는 명령이 실행된때는 상기 제 3 의 포인터갱신수단에 의해 상기 제 2 의 포인터를 갱신하는 것을 특징으로 하는 데이터처리장치.
  2. 제 1 항에 있어서, 서브루우틴이 호출된때의 프레임포인터를 스택에 푸시하고, 그후의 스택포인터의 내용을 프레임포인터에 복사하여, 서브루우틴의 국소변수영역을 확보하는 스택프레임 형성명령을 해독하는 해독수단과 ; 제 1 의 포인터와 명령어중의 어드레스지정부에 격납되어 있는 데이터와 미리 결정된 정수와를 연산하는 제 4 의 연산수단과 ; 상기 제 4 의 연산수단의 출력을 상기 제 1 의 포인터에 기입하는 제 4 의 포인터갱신 수단과 ; 제 2 의 연산수단의 출력을 제 2 의 포인터에 기입하는 제 5 의 포인터 갱신수단을 구비하고 ; 상기 스택프레임 형성명령이 실행되었을때에는, 상기 제 4 의 갱신수단에 의해 상기 제 1 의 포인터의 내용을 변경하고, 상기 제 5 의 포인터갱신수단에 의해 상기 제 2 의 포인터의 내용을 변경하는 것을 특징으로 하는 데이터처리장치.
KR1019900008268A 1989-06-05 1990-06-05 스택영역의 데이터참조를 고속으로 행하는 데이터처리장치 KR930003410B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP1142522A JPH036735A (ja) 1989-06-05 1989-06-05 データ処理装置
JP1-142522 1989-06-05

Publications (2)

Publication Number Publication Date
KR910001537A KR910001537A (ko) 1991-01-31
KR930003410B1 true KR930003410B1 (ko) 1993-04-29

Family

ID=15317318

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019900008268A KR930003410B1 (ko) 1989-06-05 1990-06-05 스택영역의 데이터참조를 고속으로 행하는 데이터처리장치

Country Status (4)

Country Link
EP (1) EP0401745A3 (ko)
JP (1) JPH036735A (ko)
KR (1) KR930003410B1 (ko)
CA (1) CA2018182C (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004003732A1 (en) * 2002-06-27 2004-01-08 Infineon Technologies Ag Method for accessing local variables

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3786432A (en) * 1972-06-20 1974-01-15 Honeywell Inf Systems Push-pop memory stack having reach down mode and improved means for processing double-word items
JPH06100967B2 (ja) * 1987-06-10 1994-12-12 三菱電機株式会社 パイプライン処理機構を持つデータ処理装置および処理方法
US5142635A (en) * 1989-04-07 1992-08-25 Intel Corporation Method and circuitry for performing multiple stack operations in succession in a pipelined digital computer

Also Published As

Publication number Publication date
KR910001537A (ko) 1991-01-31
EP0401745A2 (en) 1990-12-12
CA2018182C (en) 1994-02-01
EP0401745A3 (en) 1991-10-30
JPH036735A (ja) 1991-01-14
CA2018182A1 (en) 1990-12-05

Similar Documents

Publication Publication Date Title
US5517436A (en) Digital signal processor for audio applications
JPH0371337A (ja) マイクロプロセツサ回路
JPH11154114A (ja) 複数データ・フェッチのアーキテクチャを使ってテーブル・ルックアップを実行するためのシステムおよび方法
US5249148A (en) Method and apparatus for performing restricted modulo arithmetic
JPH02300983A (ja) 中央処理装置における高速演算処理の方法
JPH1091443A (ja) 情報処理回路、マイクロコンピュータ及び電子機器
JPS619760A (ja) ベクトル処理システム
US4954947A (en) Instruction processor for processing branch instruction at high speed
KR20010040919A (ko) 동일한 논리 공간을 점유하는 다중 레지스터 파일을포함하는 마이크로프로세서
US20060075208A1 (en) Microprocessor instruction using address index values to enable access of a virtual buffer in circular fashion
JPH0410108B2 (ko)
US20190369995A1 (en) Vector generating instruction
US5386534A (en) Data processing system for generating symmetrical range of addresses of instructing-address-value with the use of inverting sign value
KR930003410B1 (ko) 스택영역의 데이터참조를 고속으로 행하는 데이터처리장치
WO2020061139A1 (en) System and method to implement masked vector instructions
JPS63111535A (ja) デ−タ処理装置
JPS60129853A (ja) アドレス発生装置
CN116982027A (zh) 缺乏有效地址发生器的处理器中的多个堆栈的系统
EP1709527A1 (en) Microprocessor instruction to enable access of a virtual buffer in circular fashion
KR100343459B1 (ko) 자바 프로세서
JPH0855027A (ja) レジスタファイルを有するパイプラインプロセッサ
JP3124361B2 (ja) メモリデータロード装置
JPS59201144A (ja) 10進数演算回路
KR19990061571A (ko) 디지털 신호 처리기의 연산장치
JPS61143838A (ja) 演算装置

Legal Events

Date Code Title Description
A201 Request for examination
G160 Decision to publish patent application
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 19970423

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee