KR100301391B1 - 서브루틴분기명령실행방법및그장치 - Google Patents

서브루틴분기명령실행방법및그장치 Download PDF

Info

Publication number
KR100301391B1
KR100301391B1 KR1019930020686A KR930020686A KR100301391B1 KR 100301391 B1 KR100301391 B1 KR 100301391B1 KR 1019930020686 A KR1019930020686 A KR 1019930020686A KR 930020686 A KR930020686 A KR 930020686A KR 100301391 B1 KR100301391 B1 KR 100301391B1
Authority
KR
South Korea
Prior art keywords
instruction
subroutine
destination address
branch
program counter
Prior art date
Application number
KR1019930020686A
Other languages
English (en)
Other versions
KR940009822A (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 KR940009822A publication Critical patent/KR940009822A/ko
Application granted granted Critical
Publication of KR100301391B1 publication Critical patent/KR100301391B1/ko

Links

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
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer

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

서브루틴 분기(分岐) 명령의 실행 사이클 수를 줄이고, 그 명령을 고속으로 실행할 수 있도록 하는 서브루틴 분기 명령 실행 방법을 제공한다. 명령 판독용과 데이터 기록용으로 데이터 버스(4)를 공동으로 사용하고, 최소한 명령 페치와 명령 실행 사이에 하나 이상의 단계(stage)가 있는 파이프라인 처리 장치에 있어서, 서브루틴 분기 시에 분기처(分岐先) 어드레스를 어드레스 버스(5)에 실어서, 분기처의 명령을 페치하고, 프로그램 카운터 A(7)의 내용을 프로그램 카운터 B(8)에 일시적으로 저장한 후, 새로운 분기처 어드레스로 프로그램 카운터 A(7)의 내용을 갱신하고, 그 후 프로그램 카운터 B(8)의 내용(=복귀처(復歸先) 어드레스)을 메모리(3) 상에 저장한다.
[색인어]
서브루틴, 분기명령, 파이프라인

Description

서브루틴 분기 명령 실행 방법 및 그 장치
본 발명은 서브루틴 분기(分岐) 명령 실행 방법 및 그 장치에 관한 것이며, 특히 명령 판독용과 데이터 기록용의 버스를 공동으로 사용하고, 최소한 명령 페치와 명령 실행 사이에 하나 이상의 단계(stage)가 있는 파이프라인 처리 장치에서의 서브루틴 분기 명령 실행 방법 및 그 장치에 관한 것이다.
제3도는 종래의 서브루틴 분기 명령 실행 방법이 적용되는 파이프라인 처리 장치의 구성에 대한 일 예를 도시한 블록도이다.
여기서, 제3도에 도시한 것과 같은 구조의 CPU(1)에서, 제4도와 같은 파이프라인을 가지고 서브루틴 분기 명령을 실행하는 경우를 고려한다.
제4도에서 명령 2가 서브루틴 분기 명령이고, 명령 3은 서브루틴 분기후 최초의 명령이다. 서브루틴 분기 명령에서는, ① 프로그램 카운터(7)가 새로운 분기처(分岐先) 어드레스로 갱신되기 전의 프로그램 카운터(7) 내용(= 복귀처(復歸先) 어드레스)을 메모리(3) 상에 저장한다. 즉, 프로그램 카운터(7)에 격납되어 있는 복귀처 어드레스는 경로(d), 데이터 버스(4) 및 경로(e)를 거쳐서 메모리(3) 상에 저장된다. 이 때, 스택 포인터(9)의 스택 어드레스가 경로(h), 어드레스 버스(5) 및 경로(f)를 거쳐서 메모리(3)에 부여된다.
② 새로운 분기처 어드레스로 프로그램 카운터(7)를 갱신한다. 즉, 분기처 어드레스 발생기(6)에서 발생된 분기처 어드레스는 경로(a), 어드레스 버스(5) 및 경로(b)를 거쳐서 프로그램 카운터(7)에 공급됨으로써, 프로그램 카운터(7)의 내용을 갱신한다.
③ 어드레스 버스(AB)(5)에 분기처 어드레스를 실어서, 분기처의 명령을 페치한다. 즉, 분기처 어드레스 발생기(6)에서 발생된 분기처 어드레스는 경로(a), 어드레스 버스(5) 및 경로(f)를 거쳐서 메모리(3)에 부여되고, 또 메모리(3)로부터 판독된 분기처의 명령은 경로(a), 데이터 버스(4) 및 경로(g)를 거쳐서 명령 레지스터(2)에 페치된다.
이와 같이, 종래의 서브루틴 분기 명령 실행 방법에서, 서브루틴 분기를 행할 때에 서브루틴으로부터의 복귀처 어드레스를 메모리(3) 상에 저장한 후, 분기처의 명령 페치를 행하고 있었으므로, 제4도의 예와 같이 상기 ②와 ③의 각 동작을 동시에 행한 경우에는 서브루틴 분기 명령(명령 2) 사이클 이후에만 다음 명령(명령 3)을 실행할 수 있었다.
즉, 서브루틴으로부터의 복귀처 어드레스의 저장과 명령 페치는 동일한 버스를 사용하기 때문에, 동일 사이클에 실행할 수 없으므로, 복귀처 어드레스의 저장에서부터 다음 명령의 실행까지에는 4 사이클이 필요하였다.
본 발명은 전술한 점을 감안하여 이루어진 것으로, 서브루틴 분기 명령의 실행 사이클 수를 줄이고, 그 명령을 고속으로 실행할 수 있도록 하는 서브루틴 분기 명령 실행 방법 및 그 장치를 제공하는 것을 목적으로 한다.
제1도는 본 발명에 의한 서브루틴 분기 처리 실행 방법이 적용되는 파이프라인 처리 장치의 구성에 대한 일 예를 도시한 블록도.
제2도는 본 발명에 관한 시퀀스도.
제3도는 종래의 서브루틴 분기 처리 실행 방법이 적용되는 파이프라인 처리 장치의 구성에 대한 일 예를 도시한 블록도.
제4도는 종래 예에 관한 시퀀스도.
* 도면의 주요부분에 대한 부호의 설명
1 : CPU(중앙처리 장치) 2 : 명령 레지스터
3 : 메모리 4 : 데이터 버스
5 : 어드레스 버스 6 : 분기처 어드레스 발생기
7,8 : 프로그램 카운터
본 발명에 의한 명령을 전송하고 데이터를 전송하기 위한 데이터 버스를 구비하는 파이프라인 제어 시스템에서 서브루틴으로 점프(jump)하기 위한 분기 명령을 실행하기 위한 방법에 있어서, a) 상기 데이터 버스를 이용하여 메모리 수단으로부터의 서브 루틴 명령을 페치하는 단계; b) 상기 서브루틴이 실행된 후에 제어가 복귀되는 복귀처 어드레스를 임시 기억 수단에 일시적으로 저장하는 단계; 및 c) 기억 수단에 서브루틴 명령의 위치를 나타내는 분기처 어드레스를 기억하는 단계의 동작을 동시에 수행하는 단계; 상기 임시 기억 수단으로부터 복귀처 어드레스를 판독하고 상기 메모리 수단에 상기 복귀처 어드레스를 저장하는 단계; 및 상기 서브루틴 명령을 실행하는 단계를 포함한다.
서브루틴 분기시에 서브루틴으로부터의 복귀처 어드레스의 저장에 앞서 분기처의 명령 페치를 행하고, 분기처의 명령 페치와 그 명령의 실행사이에 서브루틴으로부터의 복귀처 어드레스의 저장을 행하는 것으로, 분기처의 명령 페치와 그 명령의 실행 사이 단계인 디코드와 병행하여 서브루틴으로부터의 복귀처 어드레스의 저장을 행할 수 있게 되므로, 서브루틴 분기 명령 2 사이클 후에 다음의 명령을 실행할 수 있다.
그 결과, 종래보다 서브루틴 분기 명령의 실행 사이클 수가 적어지므로, 그 명령을 고속으로 실행할 수 있다.
다음에, 본 발명의 실시예에 대하여 도면을 참조하여 상세히 설명한다.
제1도는 본 발명에 의한 서브루틴 분기 처리 실행 방법이 적용되는 파이프라인 처리 장치의 구성에 대한 일 예를 도시한 블록도이다.
제1도에서, CPU(중앙처리 장치)(1)는 명령 레지스터(2)로부터의 명령판독용과 메모리(3)에 대한 데이터 기록용으로서 데이터 버스(DB)4)를 공동으로 사용하는 구성으로 이루어져 있다.
그리고, CPU(1) 내의 처리는 최소한 명령 페치와 명령 실행 사이에 하나 이상의 단계가 있는 파이프라인 처리 구조를 취하고 있다.
여기서, 상기 파이프라인 처리 구조에서, 다음과 같은 순서(①∼④)로 서브루틴 분기 명령을 실행하는 것으로 한다.
① 어드레스 버스(AB)(5)에 분기처 어드레스를 실어서, 분기처(分岐先) 명령을 페치한다. 즉, 분기처 어드레스 발생기(6)에서 발생된 분기처 어드레스는 경로(a), 어드레스 버스(5) 및 경로(f)를 거쳐서 메모리(3)에 부여되고, 또 메모리(3)로부터 판독된 분기처의 명령은 경로(c), 데이터 버스(4) 및 경로(g)를 거쳐서 명령 레지스터(2)에 페치된다.
② 프로그램 카운터 A(7)의 내용을 프로그램 카운터 B(8)에 일시적으로 저장한다. 즉, 프로그램 카운터 A(7)에 격납되어 있는 복귀처(復歸先)어드레스는 경로(c)를 거쳐서 프로그램 카운터 B(8)에 일시적으로 저장된다.
③ 새로운 분기처 어드레스로 프로그램 카운터 A(7)의 내용을 갱신한다. 즉, 분기처 어드레스 발생기(6)에서 발생된 분기처 어드레스는 경로(a), 어드레스 버스(5) 및 경로(b)를 거쳐서 프로그램 카운터 A(7)에 공급됨으로써, 프로그램 카운터 A(7)를 갱신한다.
④ 프로그램 카운터 B(8)의 내용(= 복귀처 어드레스)을 메모리(3) 상에 저장한다. 즉, 프로그램 카운터 B(8)에 일시적으로 저장된 복귀처 어드레스는 경로(d), 데이터 버스(4) 및 경로(e)를 거쳐서 메모리(3)상에 저장된다. 이 때, 스택 포인터(9)의 스택 어드레스가 경로(h), 어드레스 버스(5) 및 경로(f)를 거쳐서 메모리(3)에 부여된다.
여기서, ①과 ②의 동작을 동시에 행하는 것은 전혀 문제되지 않는다. 또, 프로그램 카운터 A(7) 및 B(8)가 소위 플립플롭 동작을 행하기 때문에, ⑦의 동작도 동시에 행할 수 있다. 결국, ①, ②, ③ → ④와 같은 순서로 서브루틴 분기 명령을 실행하면, 제2도에 도시한 바와 같은 실행을 얻을 수 있다. 제2도에서도 명령 2는 서브루틴 분기 명령이고, 명령 3은 서브루틴 분기 후 최초의 명령이다.
전술한 바와 같이, 데이터 버스(4)를 명령 판독용과 데이터 기록용으로 공동으로 사용하고, 명령 페치와 명령 실행 사이에 단계(본 예에서는 디코드)가 있는 파이프라인 처리 장치에 있어서, 서브루틴 분기 시에 분기처의 명령 페치를 서브루틴으로부터의 복귀처 어드레스의 저장에 앞서 행하도록 함으로써, 분기처의 명령 페치와 그 명령의 실행 사이의 더코드와 병행하여 서브루틴으로부터의 복귀처 어드레스의 저장을 행할 수 있게 되므로, 분기처의 명령 실행까지의 사이클 수는 3 사이클로 완료된다.
즉, 서브루틴 분기 명령(명령 2) 사이클 후에 다음 명령(명령 3)을 실행할 수 있으므로, 종래보다 서브루틴 분기 명령의 실행 사이클 수가 적어지므로, 명령 실행의 고속화를 도모할 수 있다.
이상 설명한 바와 같이, 본 발명에 의하면 명령 판독용과 데이터 기록용의 버스를 공동으로 사용하고, 최소한 명령 페치와 명령 실행 사이에 하나 이상의 단계가 있는 파이프라인 처리 장치에 있어서, 서브루틴 분기시에 서브루틴으로부터의 복귀처 어드레스의 저장에 앞서 분기처의 명령 페치를 행하고, 분기처의 명령 페치와 그 명령 실행 사이에 서브루틴으로부터의 복귀처 어드레스의 저장을 행하도록 함으로써, 서브루틴 분기 명령의 실행사이클 수가 적어져, 그 명령을 고속으로 실행할 수 있게 된다.

Claims (3)

  1. 명령을 전송하고 데이터를 전송하기 위한 데이터 버스를 구비하는 파이프라인 제어 시스템에서 서브루틴으로 점프(jump)하기 위한 분기 명령을 실행하기 위한 방법에 있어서, a) 상기 데이터 버스를 이용하여 메모리 수단으로부터의 서브루틴 명령을 페치하는 단계; b) 상기 서브루틴이 실행된 후에 제어가 복귀되는 복귀처 어드레스를 임시 기억 수단에 일시적으로 저장하는 단계; 및 c) 기억 수단에 서브루틴 명령의 위치를 나타내는 분기처 어드레스를 기억하는 단계의 동작을 동시에 수행하는 단계; 상기 임시 기억 수단으로부터 복귀처 어드레스를 판독하고 상기 메모리 수단에 상기 복귀처 어드레스를 저장하는 단계; 및 상기 서브루틴 명령을 실행하는 단계를 포함하는 서브루틴 분기 명령 실행 방법.
  2. 제1항에 있어서, 상기 파이프라인 제어 시스템은 분기처 어드레스를 격납하는 프로그램 카운터와, 상기 제1프로그램 카운터에 격납된 분기처 어드레스를 복귀처 어드레스로서 일시적으로 저장하는 제2프로그램 카운터를 구비한 것을 특징으로 하는 서브루틴 분기 명령 실행 방법.
  3. 파이프라인 제어 시스템에서 서브루틴으로 점프하기 위한 분기 명령을 실행하기 위한 장치에 있어서, 명령을 전송하고 데이터를 전송하기 위한 데이터 버스; 임시 기억 수단; 상기 데이터 버스를 이용하여 메모리 수단으로부터 서브루틴 명령을 페치하기 위한 수단; 상기 서브루틴이 실행된 후에 제어가 복귀되는 복귀처 어드레스를 임시 기억 수단에 일시적으로 저장하는 수단; 상기 서브루틴 명령의 위치를 나타내는 분기처 어드레스를 기억하기 위한 수단; 상기 임시 기억 수단으로부터 복귀처 어드레스를 순차적으로 판독하고 상기 메모리 수단에 상기 복귀처 어드레스를 저장하는 수단; 및 상기 서브루틴 명령을 실행하는 수단을 포함하고, 상기 서브루틴 명령의 페치, 상기 복귀처 어드레스의 저장, 및 상기 분기처 어드레스의 기억은 실질적으로 동시에 일어나는 서브루틴 분기 명령 실행 장치.
KR1019930020686A 1992-10-13 1993-10-07 서브루틴분기명령실행방법및그장치 KR100301391B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP30169292A JP3211423B2 (ja) 1992-10-13 1992-10-13 分岐命令実行方法および分岐命令実行装置
JP92-301,692 1992-10-13

Publications (2)

Publication Number Publication Date
KR940009822A KR940009822A (ko) 1994-05-24
KR100301391B1 true KR100301391B1 (ko) 2001-10-22

Family

ID=17900001

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019930020686A KR100301391B1 (ko) 1992-10-13 1993-10-07 서브루틴분기명령실행방법및그장치

Country Status (3)

Country Link
US (1) US5819081A (ko)
JP (1) JP3211423B2 (ko)
KR (1) KR100301391B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100480384B1 (ko) * 1997-11-22 2005-07-18 엘지산전 주식회사 피엘씨전용마이크로프로세서의프로그램제어방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100381876B1 (ko) * 1995-07-03 2003-07-18 텍사스 인스트루먼츠 인코포레이티드 프로그램카운팅시스템및카운터의동작방법
KR100413674B1 (ko) * 1996-12-05 2004-02-14 삼성전자주식회사 하드와이어드 서브루틴 생성장치
EP0953898A3 (en) * 1998-04-28 2003-03-26 Matsushita Electric Industrial Co., Ltd. A processor for executing Instructions from memory according to a program counter, and a compiler, an assembler, a linker and a debugger for such a processor
US20040167786A1 (en) * 2002-03-08 2004-08-26 Grace John J. System for optimizing selection of a college or a university and a method for utilizing the system provided by a program

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4821183A (en) * 1986-12-04 1989-04-11 International Business Machines Corporation A microsequencer circuit with plural microprogrom instruction counters

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3789365A (en) * 1971-06-03 1974-01-29 Bunker Ramo Processor interrupt system
US3967104A (en) * 1974-11-26 1976-06-29 Texas Instruments Incorporated Direct and indirect addressing in an electronic digital calculator
US4003033A (en) * 1975-12-22 1977-01-11 Honeywell Information Systems, Inc. Architecture for a microprogrammed device controller
US4179737A (en) * 1977-12-23 1979-12-18 Burroughs Corporation Means and methods for providing greater speed and flexibility of microinstruction sequencing
US4394729A (en) * 1980-10-16 1983-07-19 Ncr Corporation Jump return stack
US4399507A (en) * 1981-06-30 1983-08-16 Ibm Corporation Instruction address stack in the data memory of an instruction-pipelined processor
US4488227A (en) * 1982-12-03 1984-12-11 Honeywell Information Systems Inc. Program counter stacking method and apparatus for nested subroutines and interrupts
DE3726192A1 (de) * 1987-08-06 1989-02-16 Otto Mueller Stacksteuerung
US4910664A (en) * 1987-11-27 1990-03-20 Mitsubishi Denki Kabushiki Kaisha Data processor with apparatus for reducing loop processing time
US5193205A (en) * 1988-03-01 1993-03-09 Mitsubishi Denki Kabushiki Kaisha Pipeline processor, with return address stack storing only pre-return processed address for judging validity and correction of unprocessed address
US5202967A (en) * 1988-08-09 1993-04-13 Matsushita Electric Industrial Co., Ltd. Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction
JPH0778735B2 (ja) * 1988-12-05 1995-08-23 松下電器産業株式会社 キャッシュ装置と命令読出し装置
US5127091A (en) * 1989-01-13 1992-06-30 International Business Machines Corporation System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor
JP2570859B2 (ja) * 1989-05-25 1997-01-16 日本電気株式会社 データ処理装置
US5317700A (en) * 1992-05-01 1994-05-31 Unisys Corporation Program history for pipelined processor including temporary storage queues for storing branch addresses

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4821183A (en) * 1986-12-04 1989-04-11 International Business Machines Corporation A microsequencer circuit with plural microprogrom instruction counters

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100480384B1 (ko) * 1997-11-22 2005-07-18 엘지산전 주식회사 피엘씨전용마이크로프로세서의프로그램제어방법

Also Published As

Publication number Publication date
JPH06124207A (ja) 1994-05-06
US5819081A (en) 1998-10-06
JP3211423B2 (ja) 2001-09-25
KR940009822A (ko) 1994-05-24

Similar Documents

Publication Publication Date Title
KR950006616B1 (ko) 변환된 프로그램 코드에서 소스 명령 분자를 보전하기 위한 시스템 및 방법
USRE33706E (en) Table driven translator
US4109310A (en) Variable field length addressing system having data byte interchange
US4476525A (en) Pipeline-controlled data processing system capable of performing a plurality of instructions simultaneously
EP0068163B1 (en) Instruction address stack in the data memory of an instruction-pipelined processor
US4295193A (en) Machine for multiple instruction execution
KR100328162B1 (ko) 정보처리회로와마이크로컴퓨터와전자기기
US4833640A (en) Register bank change including register to register transfer in a data processing system
US4388682A (en) Microprogrammable instruction translator
JPH03291726A (ja) コンパイル中にソフトウェア・スケジューリング技術を用いてハードウェアのパイプライン処理の中断を最小化する方法
EP0094535A2 (en) Pipe-line data processing system
KR100301391B1 (ko) 서브루틴분기명령실행방법및그장치
KR20040004617A (ko) 컴퓨팅 시스템
US3665402A (en) Computer addressing apparatus
US4240137A (en) Computer for directly executing a program including a plurality of structured blocks
US5481705A (en) Method for executing a program with branch-to modifying instructions
JPH0363092B2 (ko)
US4935849A (en) Chaining and hazard apparatus and method
JPH1011315A (ja) インサーキットエミュレータ装置およびインサーキットエミュレーション方法
JPH08161166A (ja) プロセッサ
JPH04268928A (ja) エミュレーション装置及び半導体装置
JPH0784797A (ja) ロードモジュールへのソースコード行番号登録方法および装置
EP0015276B1 (en) A digital pipelined computer
JPH0731527B2 (ja) プログラマブルコントロ−ラ
JPH0581015A (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: 20110622

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee