KR100328813B1 - 이중뱅크스택을구비한디지털데이터처리장치 - Google Patents

이중뱅크스택을구비한디지털데이터처리장치 Download PDF

Info

Publication number
KR100328813B1
KR100328813B1 KR1019980040587A KR19980040587A KR100328813B1 KR 100328813 B1 KR100328813 B1 KR 100328813B1 KR 1019980040587 A KR1019980040587 A KR 1019980040587A KR 19980040587 A KR19980040587 A KR 19980040587A KR 100328813 B1 KR100328813 B1 KR 100328813B1
Authority
KR
South Korea
Prior art keywords
stack
stack pointer
contents
word
response
Prior art date
Application number
KR1019980040587A
Other languages
English (en)
Other versions
KR20000021486A (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 삼성전자 주식회사
Priority to KR1019980040587A priority Critical patent/KR100328813B1/ko
Priority to US09/338,473 priority patent/US7028163B2/en
Publication of KR20000021486A publication Critical patent/KR20000021486A/ko
Application granted granted Critical
Publication of KR100328813B1 publication Critical patent/KR100328813B1/ko
Priority to US11/369,722 priority patent/US20060179287A1/en

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
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers

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)

Abstract

개시되는 디지털 데이터 프로세서는, 명령어를 디코딩해서 복수의 디코딩 신호들을 발생하는 명령어 디코더와, 스택 아이템들을 저장하기 위한 복수의 위치들을 포함하는 스택 저장 장치와, 상기 스택 저장 장치의 위치들 가운데 적어도 하나를 가리키기 위한 스택 포인터, 그리고 디코딩 신호들에 응답하여, 상기 스택 포인터의 내용에 근거해서 1 워드 또는 2 워드 아이템을 상기 스택 저장 장치에 동시에 삽입하거나 1 워드 또는 2 워드를 상기 스택 저장 장치로부터 동시에 제거하는 스택 저장 장치 제어 회로를 포함한다. 이와 같은 구성의 디지털 데이터 프로세서는 1 워드 또는 2 워드 이상의 멀티 워드를 스택 저장 장치로/로부터 동시에 푸시/팝할 수 있으므로, 디지털 데이터 처리 장치의 성능이 향상된다.

Description

이중 뱅크 스택을 구비한 디지털 데이터 처리 장치{DIGITAL DATA PROCESSING APPARATUS WITH TWO BANK STACK}
본 발명은, 마이크로 컨트롤러 유닛(microcontroller unit), 디지털 신호 처리기(digital signal processor)와 같이, 스택(stack) 저장 장치를 구비한 디지털 데이터 처리 장치에 관한 것으로, 좀 더 구체적으로는 내장된 스택 저장 장치로부터 1-워드 또는 멀티-워드를 삽입/제거할 수 있는 디지털 데이터 처리 장치에 관한 것이다.
마이크로 컨트롤러 유닛(Micro Controller Unit; MCU)이나 디지털 신호 처리기(Digital Signal Processor; DSP) 코어와 같은 프로그래머블 디바이스(programmable Device)에서 널리 사용되는 스택(stack)은 데이터 구조의 하나로서 후입선출(Last-In First-Out; LIFO) 방식으로 액세스된다. 상기 스택에서 데이터의 삽입 및 제거가 일어나는 곳을 스택의 톱(top)이라 한다. 상기 스택의 톱에 데이터를 저장하는 것을 푸시(push)라 하고, 상기 스택의 탑(top)으로부터 데이터를 독출하여 제거하는 것을 팝(pop)이라 한다. 상기 스택에는 오퍼랜드(operand), 연산 결과, 어드레스 포인터(address pointer), 서브루틴 파라메터(subroutine parameter) 그리고 서부루틴 호출(call)과 복귀(return)에 따른레지스터 내용(register content) 등의 프로그램 데이터가 저장된다. 스택 포인터는 미리 정해진 절대 주소나 스택의 시작 주소를 가지는 다른 레지스터의 값을 기점으로 하여 현재 스택의 톱 위치를 가리킨다. 상기 스택 포인터는 푸쉬, 팝, 서브루틴의 호출과 복귀 명령 그리고 인터럽트(interrupt) 호출 시에 그 값이 바뀐다.
상기 스택은 크게 나누어 2가지 형태로 구현 가능하다. 첫 번째는 소프트웨어적인 방법으로 기존의 데이터 메모리 공간에 스택의 영역을 할당해 사용하는 방법이 있으며 두 번째로 스택을 하드웨어로 직접 구현하여 칩(chip)속에 내장시켜 사용하는 방법이 있다.
소프트웨어적인 방법은 스택의 크기를 사용자가 원하는 만큼 사용할 수 있기 때문에 사용자가 쓰기에 편리하다. 그러나, 메모리를 스택으로 사용하기 때문에 하드웨어적인 방법보다 실행 속도가 느리고, 전력 소모가 많다는 단점이 있다.
반면, 하드웨어적인 방법은 일반적으로 스택의 크기가 작고 사용할 수 있는 크기가 고정되므로 사용자가 사용할 수 있는 범위가 제한되나 콘텍스트 스위칭(context switching)과 같이 다량의 스택을 동시에 사용하는 경우 속도가 빠를 뿐만 아니라 외부 메모리를 액세스하지 않기 때문에 전력 소모량이 적다는 장점이 있다. 따라서 저 전력이 요구되는 마이크로 프로세서 유닛이나 디지털 신호 처리기에서는 일반적으로 하드웨어적인 스택 구조를 갖는다.
도 1은 일반적인 하드웨어 스택을 보여주는 도면이다. 도 1을 참조하면, 스택(10)은 32 워드(word)의 저장 용량을 갖는다. 스택 포인터(SP)(20)는 "현재 데이터가 채워진 톱 워드 어드레스(top word address; ATOS)+1"를 가리키는 이진수를 저장한다. 32 워드를 저장할 수 있는 스택에서, 스택 포인터(20)는 5 비트(25=32)를 갖는다.
도 1에 도시된 스택은 A, B, C, D 그리고 E의 아이템(item)를 저장한다. 이경우, 스택 포인터(20)는 5(즉, 이진수 '00101')를 저장한다. 새로운 아이템을 삽입(insertion)하기 위하여, 스택 포인터(20)가 가리키는 위치에 새로운 아이템이 '푸시(push)'되고, 스택 포인터(20)는 증가되어 다음 위치에 어드레스 '6'을 가리킨다. 어드레스 '4'에 저장된 아이템 'E'의 제거를 위하여 스택 포인터(20)의 내용이 '1'감소되는 것에 의해 스택(10)은 '팝(pop)'된다. 그러므로, 스택 포인터(210)는 톱 어드레스 '4'를 저장한다.
8 비트(bit) 마이크로 컨트롤러 유닛의 경우 처리하는 데이터의 단위는 8 비트(1 바이트)인데 반해 어드레스(address)는 16 비트 또는 그 이상이 되는 경우가 종종 있다. 이는 어드레스로 8 비트만을 사용할 경우 최대 프로그램의 크기가 256 이므로 원하는 프로그램을 저장하기에는 부족하기 때문이다. 따라서, 대부분의 8 비트 마이크로 컨트롤러 유닛은 16 비트 또는 그 이상의 비트 폭(bit width)을 갖는 어드레스를 사용하게 된다.
마이크로 컨트롤러 유닛 내에서 처리되는 데이터와 어드레스의 비트 폭이 다른 경우 스택을 사용하는 데에 있어서 문제가 발생한다. 즉, 내부의 데이터 레지스터(data register)에 저장된 데이터를 스택에 저장하거나(push), 스택에서 상기 데이터 레지스터로 가져올 경우(pop)에는 스택이 8 비트로 동작해야 하는데 반해, 어드레스 레지스터(address register)에 저장된 어드레스 값을 스택에 저장하거나 (call, interrupt), 스택에서 상기 어드레스 레지스터로 가져올 경우(Return)에는 어드레스의 비트 폭인 16 비트나 그 이상의 비트로 동작하여야 한다. 만일, 어드레스의 비트 폭이 16 비트인 경우, 이를 상위 8 비트와 하위 8 비트로 나누어 두 번에 걸쳐서 푸시 및 팝 동작을 수행해야 한다. 따라서, 8 비트의 스택에/으로부터 16 비트의 어드레스를 푸시/팝 할 때 디지털 데이터 처리 장치의 성능은 크게 저하된다. 그러므로, 향상된 성능의 스택을 구비한 디지털 프로세서가 요구된다.
따라서, 본 발명의 목적은 상술한 제반 문제점을 해결하기 위해 제안된 것으로, 향상된 하드웨어 스택을 구비한 데이터 프로세서를 제공하는데 있다.
도 1은 일반적인 스택의 구조를 보여주는 도면;
도 2는 본 발명의 바람직한 실시예에 따른 하드웨어 스택을 보여주는 블럭도;
도 3은 도 2에 도시된 스택 포인터 회로를 상세히 보여주는 도면;
도 4는 도 2에 도시된 스택 포인터 회로의 다른 실시예를 보여주는 도면;
도 5a 및 도b는 스택 명령어와 메인 스택 포인터의 내용에 따라 도 4에 도시된 스택 포인터들의 내용 변화를 보여주는 도면; 그리고
도 6a 내지 도 7e는 도 2에 도시된 스택 포인터 회로의 동작을 설명하기 위한 도면들이다.
*도면의 주요 부분에 대한 부호의 설명*
10, 300 : 스택 20 : 스택 포인터
100 : 명령어 디코더 200 : 스택 포인터 회로
210 : 메인 스택 포인터 220 : 스택 포인터 제어 로직 회로
221 : 가산기 222, 225, 226 : 멀티플렉서
223 : 증가기 224 : 제 1 멀티플렉서 제어부
227 : 제 2 멀티플렉서 제어부 251 : 증가기
252, 253, 254 : 멀티플렉서 230 : 제 1 뱅크 스택 포인터
240 : 제 2 뱅크 스택 포인터 400 : 레지스터 셋
상술한 바와 같은 본 발명의 목적을 달성하기 위한 본 발명의 특징에 의하면, 디지털 데이터 프로세서는; 명령어를 디코딩해서 복수의 디코딩 신호들을 발생하는 명령어 디코더와, 스택 아이템들을 저장하기 위한 복수의 위치들을 포함하는 스택 저장 장치와, 상기 스택 저장 장치의 위치들 가운데 적어도 하나를 가리키기 위한 스택 포인터와, 디코딩 신호들에 응답하여, 상기 스택 포인터의 내용에 근거해서 1 워드 또는 2 워드 아이템을 상기 스택 저장 장치에 동시에 삽입하거나 1 워드 또는 2 워드를 상기 스택 저장 장치로부터 동시에 제거하는 스택 저장 장치 제어 회로를 포함한다.
바람직한 실시예에 있어서, 상기 스택 저장 장치의 각 위치는 1 워드 아이템을 저장하도록 구성된다.
바람직한 실시예에 있어서, 상기 2 워드 아이템은 상기 스택 저장 장치의 인접한 2개의 위치로/로부터 동시에 삽입/제거한다.
바람직한 실시예에 있어서, 상기 스택 저장 장치 제어 회로는 상기 디코딩 신호가 1 워드 스택 동작을 나타낼 때 상기 스택 포인터의 내용을 1씩 증가 또는 감소시키고, 상기 디코딩 신호가 2 워드 스택 동작을 나타낼 때 상기 스택 포인터의 내용을 2씩 증가 또는 감소 시킨다.
본 발명의 다른 특징에 의하면, 디지털 데이터 프로세서는: 복수의 위치들을 포함하고, 각 위치들은 제 1 뱅크와 제 2 뱅크로 할당되는 스택 저장 장치와, 상기 스택 저장 장치의 위치를 가리키는 메인 스택 포인터와, 상기 제 1 뱅크로 할당된 위치를 가리키기 위한 제 1 뱅크 스택 포인터, 상기 제 2 뱅크로 할당된 위치를 가리키기 위한 제 2 뱅크 스택 포인터와, 스택 명령어를 디코딩해서 복수의 디코딩 신호들을 발생하고, 복수의 디코딩 신호들 각각은 1 워드 푸시 동작, 1 워드 팝 동작, 2 워드 푸시 동작, 그리고 2 워드 팝 동작 가운데 하나를 나타내는 명령어 디코더, 그리고 상기 디코딩 신호들에 응답하여, 상기 메인 스택 포인터의 내용에 근거해서 1 워드 아이템 또는 2 워드 아이템이 상기 스택 저장 장치로/로부터 삽입/제거되도록, 상기 제 1 및 제 2 뱅크 스택 포인터들을 제어하는 스택 포인터 제어 로직 회로를 포함한다.
이 실시예에 있어서, 상기 제 1 및 제 2 뱅크들 가운데 하나는 최하위 비트가 논리 '0'인 어드레스의 위치들로 구성되고, 다른 하나는 최하위 비트가 논리 '1'인 어드레스의 위치들로 구성된다.
이 실시예에 있어서, 상기 명령어 디코더로부터의 제 1 디코딩 신호에 응답해서 상기 메인 스택 포인터의 내용에 미리 설정된 복수의 정수들 가운데 하나를 더하는 가산기와, 상위 비트부와 하위 비트부로 구성되며, 상기 명령어 디코더로부터의 제 2 디코딩 신호에 응답해서, 상기 메인 스택 포인터의 내용과 상기 가산기의 내용 가운데 하나를 선택해서 출력하는 제 1 선택기와, 상기 제 1 선택기로부터 출력된 상기 하위 비트부와 상기 명령어 디코더로부터의 제 3 디코딩 신호에 응답해서 제 1 제어 신호를 발생하는 제 1 제어 로직 회로와, 상기 제 1 선택기로부터 출력된 상기 하위 비트부와 상기 명령어 디코더로부터의 제 4 디코딩 신호에 응답해서 제 2 제어 신호를 발생하는 제 2 제어 로직 회로와, 상기 제 1 선택기로부터 출력된 상기 상위 비트부를 증가시키기 위한 증가기와, 상기 제 1 제어 신호에 응답해서 상기 제 1선택기로부터 출력된 상위 비트부와 상기 증가기로부터의 출력 가운데 하나를 선택하기 위한 제 2 선택기, 그리고 상기 제 2 제어 신호에 응답해서 상기 제 1 선택기로부터 출력된 상위 비트와 상기 증가기로부터의 출력 가운데 하나를 선택하는 제 3 선택기를 포함한다. 상기 제 2 및 제 3 선택기들의 출력은 상기 제 2 및 제 3 뱅크 스택 포인터들로 각각 제공된다.
바람직한 실시예에 있어서, 상기 복수의 미리 설정된 정수들은 +1, +2, -1, 및 -2 가운데 하나이고, 상기 증가기는 상기 제 1 선택기로부터 출력되는 상위 비트부를 1만큼 증가시킨다.
이 실시예에서, 상기 메인 스택 포인터는 상기 가산기의 내용으로 갱신된다.
또 이 실시예에서, 상기 제 1 선택기로부터 출력되는 상기 하위 비트부는 상기 제 1 선택기로부터 출력되는 최하위 비트를 포함한다.
바람직한 실시예에 있어서, 상기 스택 포인터 제어 로직 회로는, 상기 명령어 디코더로부터의 상기 제 1 디코딩 신호에 응답해서, 상기 메인 스택 포인터의 내용의 상위 비트부에 미리 설정된 복수의 정수들 가운데 하나를 더하는 가산기와, 상기 메인 스택 포인터의 내용의 하위 비트부와 상기 명령어 디코더의 제 2 디코딩 신호에 응답해서, 제 1, 2, 3 및 4 제어 신호들 가운데 하나 또는 그들의 조합을 발생하는 제어 로직과, 상기 제 1 제어 신호에 응답해서, 상기 메인 스택 포인터의 내용의 상위 비트부와 상기 가산기의 출력 가운데 하나를 선택하는 제 1 선택기와, 상기 제 2 제어 신호에 응답해서, 상기 메인 스택 포인터의 내용의 상위 비트부와 상기 가산기의 내용 가운데 하나를 선택하는 제 2 선택기, 그리고 상기 제 3 제어 신호에 응답해서, 상기 메인 스택 포인터의 내용의 상위 비트부와 상기 가산기의 내용 가운데 하나를 선택하는 제 3 선택기를 포함한다. 상기 제 2 및 제 3 선택기의 출력들은 상기 제 2 및 제 1 뱅크 스택 포인터들로 각각 제공되고, 상기 메인 스택 포인터의 내용의 하위 비트부는 상기 제 4 제어 신호에 의해 제어된다.
이 실시예에 있어서, 상기 복수의 미리 설정된 정수들은 +1과 -1을 포함한다.
이 실시예에 있어서, 상기 메인 스택 포인터의 내용의 상위 비트부는 상기 가산기의 내용에 의해 갱신되고, 그리고 상기 메인 스택 포인터의 내용의 하위 비트부는 상기 메인 스택 포인터의 최하위 비트를 포함한다.
(실시예 1)
이하 본 발명에 따른 일 실시예를 첨부된 도면 도 2 내지 도 7을 참조하여 상세히 설명한다.
본 발명의 신규한 디지털 데이터 처리 장치는 외부로부터 입력되는 명령어를 디코딩하여 그에 대응하는 제어 신호를 출력하는 명령어 디코더와; 데이터 또는 어드레스를 저장하는 레지스터와; 비트 폭이 N 비트이고, 스택 포인터의 최하위 비트의 값에 따라 제 1 영역과 제 2 영역으로 분리되는 스택과; 상기 스택의 톱 위치를 지정하는 메인 스택 포인터를 저장하는 메인 스택 포인터 레지스터 및; 상기 명령어 디코더로부터 상기 스택에/으로부터 상기 데이터 또는 어드레스를 푸시/팝하기 위한 스택 명령어에 대응하는 상기 제어 신호가 입력될 때, 상기 제어 신호에 대응하는 값을 상기 메인 스택 포인터에 가/감산하여 상기 스택의 제 1 영역 및 제 2 영역의 톱 위치를 각각 지정하는 제 1 및 제 2 스택 포인터를 출력하는 스택 포인터 제어 수단을 포함한다. 상기 제어 신호가 (2*N) 비트의 상기 데이터 또는 어드레스를 처리하기 위한 제어 신호일 때, 상기 데이터 처리 장치는 스택의 제 1 및 제 2 영역의 톱 위치와 상기 레지스터간의 데이터 또는 어드레스 전송을 병렬로 수행한다. 그 결과, (2*N) 비트의 데이터 또는 어드레스를 비트 폭이 N 비트인 스택에/으로부터 푸시/팝해야 하는 디지털 데이터 처리 장치의 성능을 향상시킨다.
일반적으로, 디지털 데이터 프로세서는 산술 및 논리 유닛(arithmetic and logic unit; ALU) 레지스터 셋(또는 레지스터 파일), 그리고 제어 유닛(controlunit; CU)을 포함한다. 이들 세가지 구성 요소들은 내부 버스들에 의해 서로 연결된다.
ALU의 기능 가운데 하나는 CU에 의해서 제공되는 오퍼랜드들에 대한 덧셈, 뺄셈, 곱셈, 그리고 나눗셈과 같은 산술 연산을 수행하는 것이다. ALU의 다른 기능은 낫(NOT), 앤드(AND) 오어(OR)그리고 익스클루시브 오어(EXclusive-OR) 등과 같은 부울리언(boolean) 연산을 수행하는 것이다. ALU에 의해 수행되는 또 다른 동작은 산술 및 논리 연산 형태의 클리어(clear), 증가(increment), 회전(rotate)그리고 쉬프트(shift)이다.
레지스터 셋은 잘 알려진 바와 같이, 범용 또는 전용 타입을 모두 포함한다.
전용 레지스터인 프로그램 카운터(program counter; PC)는 다음에 수행될 명령어가 저장되어진 메모리의 위치를 가리킨다. 이 레지스터는 현재 명령어가 분기 명령어(branch 또는 jump)인 경우를 제외하고는 현재 명령어의 실행 이후에 자동으로 갱신(updata)된다. 또 다른 전용 레지스터인 명령어 레지스터(instrutucion register; IR)는 메모리로부터 페치(fetch)된 명령어를 임시로 저장한다. 전용 레지스터인 스택 포인터(SP)는 임시 저장 장치인 스택 유닛의 어드레스를 저장한다. 그 밖에, 어큐뮬레이터(accumulator; ACC)와 상태 레지스터(status register; SR)들이 전용 레지스터로 사용된다. 어큘뮬레이터는 메모리로부터 페치된 데이터를 임시 저장하고 있다가, 소정의 계산을 위해 그것을 ALU로 전달한 후 ALU로부터 결과를 다시 받아들여 메모리로 그 결과를 전달한다. ALU의 연산은 상태 레지스터(SR)의 플래그 비트들(flag bits)에 영향을 끼친다. 캐리(carry),오버플로우(overflow), 음수(negative), 또는 영(zero)과 같은 비트들은 조건부 분기(conditional jump)의 조건으로 사용된다.
일반적으로, 디지털 데이터 프로세서 내의 프로그램 실행은 반복적인 페치, 디코딩, 그리고 실행 동작을 포함한다. 명령어 페치는 메모리의 특정 위치의 내용을 명령어 레지스터(IR)로 로딩하는 것과, 프로그램 카운터(PC)를 증가시키는 동작으로 구성된다(단, 현재 명령어가 분기 명령어가 아닌 경우) 메모리로부터 페치된 명령어는 명령어 레지스터(IR)를 통하여 명령어 디코더로 전달된다. 명령어 디코더는 명령어가 수행되기 위해서는 어떠한 동작들이 필요한 지를 판단한다. 제어 유닛(CU)은 적절한 제어 라인들의 조합의 선택에 의해서 디코드된 명령을 실행한다.
도 2는 본 발명의 바람직한 실시예에 따른 하드웨어 스택 장치(500)를 보여주고 있다. 스택 장치(1000)는 마이크로프로세서(microprocessor), 마이크로컨트롤러 유닛(microcontroller unit), 또는 디지털 신호 프로세서(digitla signal processor)와 같은 프로그래머블 디지털 데이터 프로세서(programmable digitla data processor)에 구비된다.
도 2를 참조하면, 스택 장치(1000)는 레지스터 셋(400)용 임시 저장 장치로 사용되며, 레지스터 셋(400)과 연결된다. 상기 스택 장치(1000)는 스택 포인터 회로(200)와 스택 저장 장치(300)로 구성된다. 스택 저장 장치(300)는 두 개의 뱅크들(BANK0, KANK1)로 나뉘어진다. 제 1 스택 뱅크(BANK0)는 어드레스의 최하위 비트(least significant bit; LSB)가 0이고, 제 2 스택 뱅크(BANK1)는 '1'이다. 스택 포인터 회로(200)는 n+1 비트(여기서, n은 양의 정수)의 메인 스택 포인터(main stack pointer; MSP)(210)와, 두개의 뱅크들(BANK0, BANK1)의 톱을 지정하기 위한 두 개의 n 비트 뱅크 스택 포인터들(BSP1, BSP2)(230, 240)들, 그리고 스택 포인터들(210, 230, 240)을 제어하기 위한 스택 포인터 제어 로직 회로(220)를 포함한다. 메인 스택 포인터(또는 사용자 스택 포인터)(210)는 '톱 워드 어드레스(ATOS)+1'의 이진수를 저장한다. 스택 포인터 회로(200)는 명령어 디코더(100)로부터의 복수의 디코딩 신호들에 응답하여 메인 스택 포인터(210)의 내용에 근거해서 스택 저장 장치(300)에/로부터 1 워드 아이템 또는 2 워드 아이템을 동시에 삽입/제거한다. 여기서, 아이템은 프로세서에서 사용되는 데이터 또는 어드레스이다.
도 3은 스택 포인터 회로(200)의 상세한 회로를 보여주는 도면이다. 도 3을 참조하면, 스택 포인터 회로(200)는 스택 포인터들(210, 230, 240)을 제어하기 위한 스택 포인터 제어 로직 회로(220a)를 포함한다. 스택 포인터 제어 로직 회로(220a)는 선택기로 동작하는 멀티플렉서들(222, 225, 226), 증가기(223), 그리고 제 1 및 제 2 멀티플렉서 제어부들(224, 227)을 포함한다. 멀티플렉서들(222, 225, 226)은 2x1 멀티플렉서로, 각각은 두 개의 입력(IN1, IN2)과 출력(OUT)을 갖는다.
가산기(221)는 명령어 디코더(100)로부터의 제 1 명령어 디코딩 신호(DCSA1)에 응답해서 메인 스택 포인터(210)의 내용(MSP<n:0>)에 '+1', '+2', '-1' 또는 '-2'을 더한다. 만일, 제 1 명령어 디코딩 신호(DCSA1)가 1 워드(즉, 8 비트)푸시 동작을 나타내면, 가산기(221)는 메인 스택 포인터(210)의 내용(MSP<n:0>)에 '+1'을 더한다. 만일, 제 1 명령어 디코딩 신호(DCSA1)가 1 워드 팝 동작을 나타내면, 가산기(221)는 '-1'을 (MSP<n:0>)에 더한다. 2 워드 푸시 동작을 나타내는 경우에는 '+2'가 그리고 2 워드 팝 동작을 나타내는 경우에는 '-2'가 메인 스택 포인터(210)의 내용(MSP<n:0>)에 더해진다.
제 1 멀티플렉서(222)는 명령어 디코더(100)로부터 제공되는 제 2 명령어 디코딩 신호(DCSA2)에 응답해서, 메인 스택 포인터(210)의 내용(MSP<n:0>)과 가산기(221)의 내용(ADD<n:0>)가운데 하나를 선택한다. 명령어 디코더(100)가 논리 '0'의 제 2 명령어 디코딩 신호(DCSA2)를 발생함으로써 푸시 동작을 나타내면, 제 1 멀티플렉서(222)는 메인 스택 포인터(21)의 내용(MSP<n:0>)을 선택한다. 그후, 메인 스택 포인터(210)는 가산기(221)의 결과 내용으로 갱신된다. 반면, 명령어 디코더(100)가 논리 '1'의 제 2 명령어 디코딩 신호(DCSA2)를 발생함으로써 팝 동작을 나타내면, 제 1 멀티플렉서(222)는 가산기(221)의 내용(ADD<n:0>)을 선택하고, 메인 스택 포인터(210)는 가산기(221)의 결과 값으로 갱신된다.
이 실시예에서, 도 2에 도시된 스택 저장 장치(300)는 32 워드의 저장 용량(즉, n=4)을 가지며, 각각의 스택 뱅크들(BANK0, BANK1)은 16워드의 저장 용량을 갖는 것으로 가정한다. 이 경우, 메인 스택 포인터(MSP<4:0>)는 5 비트 25=32)의 폭을 가지며, 뱅크 스택 포인터들(230, 240) 각각은 4 비트(24=16)폭을 갖는 것으로 간주한다. 또, 첫째, 본 발명의 스택 포인터 회로(200a)는 8 비트(1바이트) 데이터를처리하는 8 비트 프로세서에 적용되며, 둘째 스택 저장 장치(300)는 8 비트 폭을 가지며, 그리고 셋째, 8 비트 프로세서에는 8 비트(싱글-워드 또는 1-워드) 또는 16비트(더블-워드 또는 2-워드) 폭 스택 아이템들이 적재 load)된다. 16 비트 아이템들(즉, 2-워드 아이템들)의 예로서는 프로그램 카운터(PC)에 저장된 어드레스를 들 수 있다.
제 1 멀티플렉서(222)로부터 출력되는 5 비트 출력(MUX1<4:0>)의 최하위 비트(MUX1<0>)는 제 1 및 제 2 멀티플렉서 제어부들(224, 227)로 제공되고, 나머지 상위 4 비트(MUX1<4:1>)는 증가기(223)로 제공된다. 상기 제 1 멀티플렉서(222)로부터 출력되는 상위 4 비트(MUX1<4:1>)는 제 2 및 제 3 멀티플렉서들(225, 226) 각각의 제 1 입력(IN1)으로 제공된다.
증가기(223)는 제 1 멀티플렉서(222)로부터의 출력(MUX1<4:1>)을 1만큼 증가 시킨다. 상기 증가기(223)로부터의 출력 (INC<3:0>)은 상기 멀티플렉서들(225, 226)의 제 2 입력(IN2)으로 제공된다. 상기 멀티플렉서들(225, 226)은 각각 대응하는 멀티플렉서 제어부로부터 제공되는 선택 제어 신호들에 응답해서 상기 제 1 멀티플렉서(222)와 상기 증가기(223)의 출력 가운데 하나를 선택한다. 제 2 멀티플렉서(225)의 출력(MUX2<3:0>)은 제 2 뱅크 스택 포인터(240)로 제공되고, 제 3 멀티플렉서(226)의 출력(MUX3<3:0>)은 제 1 뱅크 선택 포인터(230)로 제공된다.
제 1 멀티플렉서 제어부(224)는 명령어 디코더(100)로부터의 제 3 명령어 디코딩 신호(DCSA3)와 제 1 멀티플렉서(222)를 제어하기 위한 신호를 출력한다. 상기 제 2 멀티플렉서 제어부(227)는 명령어 디코더(100)로부터의 제 4 명령어 디코딩신호(DCSA4)와 제 1 멀티플렉서(222)로부터의 최하위 비트(MUX1<0>)를 받아들여, 상기 제 3 멀티플렉서(226)를 제어하기 위한 신호를 출력한다.
디코딩 신호들(DCSA3, DCSA4)이 1 워드 동작을 나타내는 동안, 상기 제 1 멀티플렉서(222)로부터의 최하위 비트(MUX1<0>)가 논리 '1'이면 제 1 멀티플렉서 제어부(224)는 상기 제 2 멀티플렉서(225)가 상기 제 1 멀티플렉서(222)의 출력을 선택하도록 제어한다. 디코딩 신호들(DCSA3, DCSA4)이 1 워드 동작을 나타내는 동안, 상기 제 1 멀티플렉서(222)로부터의 최하위 비트(MUX1<0>)가 논리 '0'이면 제 2 멀티플렉서 제어부(227)는 상기 제 3 멀티플렉서(226)가 상기 제 1 멀티플렉서(222)의 출력을 선택하도록 제어한다.
한편, 상기 디코딩 신호들(DCSA3, DCSA4)이 2 워드 동작을 나타내는 동안, 상기 제 1 멀티플렉서(222)로부터의 최하위 비트(MUX1<0>)가 논리 '0'이면, 상기 제 1 및 제 2 멀티플렉서(222)의 출력을 선택하고, 상기 제 3 멀티플렉서(226)가 상기 증가기(223)의 출력을 선택하도록 제어한다.
반면, 상기 디코딩 신호들(DCSA3, DCSA4)이 2 워드 동작을 나타내는 동안, 상기 제 1 멀티플렉서(222)로부터의 최하위 비트(MUX1<0>)가 논리 '1'이면, 상기 제 1 및 제 2 멀티플렉서 제어부들(224, 227)은 상기 제 2 멀티플렉서(225)가 상기 증가기(223)의 출력을 선택하고, 상기 제 3 멀티플렉서(226)가 상기 제 1 멀티플렉서(222)의 출력을 선택하도록 제어한다.
도 3에 도시된 스택 포인터 제어 회로의 다양한 동작 모드들이 도 6a 내지 도 7e를 참조하여 설명된다. 두 개의 뱅크들(BANK0, BANK1)의 각 블럭들(즉,위치(location)) 내의 숫자들은 스택 저장 장치(300)의 어드레서를 나타내고, 블럭 밖의 숫자들은 뱅크 어드레스를 나타낸다. 빗금친 블럭들은 아이템을 저장하고 있음을 나타내며, 굵은 선의 박스느 푸시 동작의 결과를 나타내고, 점선의 박스는 팝 동작의 결과를 나타낸다.
도 6a는 메인 스택 포인터(210)가 스택 저장 장치(300)의 짝수 어드레스(4=이진수 '00100')(즉, 뱅크0의 어드레스 '2=(이진수 '0010'))를 가리키고 있는 것을 보여주고 있다. 도 6b 내지 도 6e는 도 6a에 근거해서 1 워드 푸시, 2 워드 푸시, 1 워드 팝, 그리고 2 워드 팝 동작을 각각 보여주고 있다. 이러한 스택의 동작들은 이하 상세히 설명된다.
도 3 및 도 6b를 참조하면, 1 워드 푸시(즉, 8 비트 푸시)동작 동안, 도 3에 도시된 스택 포인터 회로(200)는 다음과 같이 동작한다. 가산기(221)는 명령어 디코더(100)로부터의 명령어 디코딩 신호(DCSA1)에 응답해서 메인 스택 포인터(210)의 값에 '+1'을 더한다. 제 1 멀티플렉서(222)는 명령어 디코더(100)로부터의 명령어 디코딩 신호(DCSA2)로부터의 최하위 비트(MUX1<0>)가 논리 '0'이므로 제 3 멀티플렉서(222)는 명령어 디코더(100)로부터의 명령어 디코딩 신호(DCSA4)에 응답하는 제 2 멀티플렉서 제어부(227)에 의해 제 1 멀티플렉서(222)의 출력(MUX1<4:1>)을 선택한다. 그러므로, 제 1 뱅크 스택 포인터(230)의 뱅크 어드레스는 '0010'(=2)가 된다. 즉, 레지스터 셋(400 으로부터의 새로운 1 워드 스택 아이템이 제 1 뱅크(BANK0)의 뱅크 어드레스('2')(스택 저장 장치(300)의 어드레스는 '4')에 저장된다. 최종적으로, 메인 스택 포인터(210)는 가산기(221)의 연산 결과인 '5'로 갱신된다.
다음 2 워드 푸시(16 비트 푸시) 동작 동안, 제 1 멀티플렉서(222)가 명령어 디코딩 신호(DCSA2)에 응답해서 메인 스택 포인터(210)의 내용('00100')을 선택한다. 제 2 및 제 3 멀티플렉서들(225, 226)은, 제 1 멀티플렉서(221)의 최하위 비트(MUX1<0>)와 무관하게, 제 1 멀티플렉서(221)의 상위 비트(MUX1<4:1>)를 선택한다. 따라서, 뱅크 스택 포인터들(230, 240)은 각각 어드레스 '2'를 저장한다.(도 6c참조)
레지스터 셋(400)으로부터의 새로운 2 워드 스택 아이템은 뱅크들(BANK0, BANK1)의 어드레스 '2'(즉, 스택 저장 장치(300)의 어드레스 '4' 및'5')에 저장된다. 이 동작에서, 상기 가산기(221)는 '+2'를 메인 스택 포인터(210)의 내용('4')에 더하고, 메인 스택 포인터(210)는 가산기(221)의 내용으로 갱신되므로, 포인터(210)는 스택 저장 장치(300)의 다음 위치인 어드레스 '6'을 가리킨다.(도 6c 참조)
다음 1 워드 팝 동작에서는 가산기(221)가 '-1'을 메인 스택 포인터(210)의 내용('4')에 더한다. 제 1 멀티플렉서(222)는 명령어 디코딩 신호(DCSA2)에 응답해서 가산기(221)의 내용('00011')을 선택한다. 제 1 멀티플렉서(222)의 최하위 비트(MUX1<0>)가 논리 '1'이므로, 제 2 멀티플렉서(225)는 제 1 멀티플렉서 제어부 (224)의 제어에 의해 제 1 멀티플렉서(222)의 출력(MUX1<4:1>)인 '0001'을 선택한다. 그 결과, 제 2 뱅크 스택 포인터(240)는 뱅크 어드레스 '1'(즉, 스택 저장 장치(300)의 어드레스 '3')의 위치로부터 제거된다. 마지막으로 메인 스택포인터(210)는 가산기(221)의 내용('3')의 내용('3')으로 갱신되고, 포인터(210)는 스택 저장 장치(300)의 어드레스 '3'을 가리킨다(도 6d참조).
다음, 2 워드 팝 동작에서, 가산기(221)는 '-2'를 메인 스택 포인터(210)의 내용('4')에 더해서 '2'를 저장한다. 제 1 멀티플렉서(222)는 명령어 디코딩 신호(DCSA2)에 응답해서 가산기(221)의 내용('00010')을 선택한다. 이 동작에서 제 2 및 제 3 멀티플렉서들(225, 226)은 제 1 멀티플렉서(222)로부터의 출력 (MUX1<4:1>)인 '0001'을 각각 선택한다. 그 결과, 뱅크 스택 포인터들(230, 240)은 동일한 뱅크 어드레스 '1'을 저장한다. 즉, 2 워드 아이템이 뱅크들(BANK0, BANK1) 각각의 뱅크 어드레스 '1'(즉, 스택 저장 장치(300)의 어드레스 '2' 및 '3')의 위치로부터 제거된다. 메인 스택 포인터(210)는 가산기(221)의 내용('2')으로 갱신되어, 포인터(210)는 스택 저장 장치(300)의 어드레스 '2'를 지정하게 된다(도 6e 참조).
도 7a는 메인 스택 포인터(210)가 스택 저장 장치(300)의 홀수 어드레스 '5'(='00101')(즉 제 2 뱅크(BANK1)의 뱅크 어드레스 '2'(='0010'))를 가리키는 것을 보여주고 있다. 도 5b내지 도 5e는 도 5a에 예시된 것을 기반으로 한 1 워드 푸시, 2 워드 푸시, 1 워드 팝, 그리고 2 워드 팝 동작을 각각 보여주고 있다. 각 스택의 동작이 이하 설명된다.
1 워드 푸시 동작에서, 제 1 멀티플렉서(222)는 명령어 디코딩 신호(DCSA2)에 응답해서 메인 스택 포인터(210)의 내용('00101')을 선택한다. 제 1 멀티플렉서(222)로부터의 최하의 비트(MUX1<0>)가 논리 '1'이므로, 제 2 멀티플랙서(225)는 제 1 멀티플랙서 제어부(224)의 제어에 응답해서 제 1 멀티플랙서(222)로부터의 출력(MUX1<4:1>)을 선택한다. 그 결과, 제 2 뱅크 스택 포인터(240)는 뱅크 어드레스 '2'를 저장한다. 즉, 새로운 1 워드 아이템은 제 2 뱅크(BANK1)의 뱅크 어드레스 '2'(즉, 스택 저장 장치(300)의 어드레스 '5')에 저장된다. 가산기(221)는 '+1'을 메인 스텍 포인터(210)의 내용('5')에 더하고, 메인 스택 포인터(210)는 가산기(221)의 내용('6')으로 갱신된다. 그 결과, 포인터(210)는 스택 저장 장치(300)의 다음 어드레스 '6'을 가리킨다(도 5b참조).
2 워드 푸시 동작에서 제 1 멀티플랙서(222)는 명령어 디코딩 신호(DCSA2)에 응답해서 메인 스택 포인터(210)의 내용('00101'=5)을 선택한다. 증가기(223)는 제 1 멀티플렉서(222)의 출력(MUX1<4:1>) '0010'을 1만큼 증가시킨다. 제 2 멀티플렉서(225)는 제 1 멀티플렉서 제어부(224)의 제어에 응답해서 제 1 멀티플렉서(222)의 출력(MUX1<4:1>) '2'를 선택하고, 제 3 멀티플렉서(226)는 제 2 멀티플렉서 제어부(227)의 제어에 응답해서 증가기(223)의 출력('0011')을 선택한다. 그 결과, 제 1 뱅크 선택 포인터(230)는 뱅크 어드레스 '0011'(=3)을 저장하고, 제 2 뱅크 선택 포인터(240)는 뱅크 어드레스 '0010'(=2)를 저장한다. 즉, 새로운 2 워드 아이템은 뱅크들(BANK1, BANK0)의 뱅크 어드레스들 '2'와 '3'(즉, 스택 저장 장치(300)의 어드레스 '5' 및 '6')에 각각 삽입된다. 이 동작에서, 가산기(221)는 '+2'를 메인 스택 포인터(210)의 내용('5') '+2'를 더하고, 메인 스택 포인터(210)는 가산기(221)의 내용으로 갱신되어, 포인터(210)는 스택 저장 장치(300)의 다음 위치 어드레스 '7'을 가리키게 된다(도 7c참조).
다음, 1 워드 팝 동작동안, 가산기(221)는 '-1'을 메인 스택 포인터(210)의 내용('5')에 더한다. 제 1 멀티플렉서(222)는 명령어 디코딩 신호(DCSA2)에 응답해서 가산기(221)의 내용('00100'=4)을 선택한다. 제 1 멀티플렉서(222)로 부터의 최하위 비트(MUX1<0>)가 '0'이므로 제 3 멀티플렉서(226)는 제 1 멀티플렉서(222)의 출력(MUX1<4:1>)인 '0010'을 선택한다.
다음, 2 워드 팝 동작에서, 가산기(221)는 명령어 디코딩 신호(DCSA1)에 응답해서 메인 스택 포인터(210)의 내용('5')에 '-2'를 더하여 '3'을 저장한다. 제 1 멀티플렉서(222)는 명령어 디코딩 신호(DCSA2)에 응답해서 가산기(221)의 내용 ('00011'=3)을 선택한다. 증가기(223)는 제 1 멀티 플랙서(222)의 출력(MUX1<4:1>) '0001'을 1만큼 증가시킨다. 제 2 멀티 플렉서(225)는 제 1 멀티플렉서 제어부 (224)의 제어에 의해 제 1 멀티플렉서(222)의 출력(MUX1<4:1>)을 선택하고, 제 3 멀티플렉서(226)는 제 2 멀티플렉서 제어부(227)의 제어에 의해 증가기(223)의 출력을 선택한다. 그 결과, 제 1 뱅크 스택 포인터(230)는 뱅크 어드레스 '2'를 저장하고, 제 2 뱅크 스택 포인터(240)는 뱅크 어드레스 '1'을 저장한다. 즉, 2 워드 아이템은 뱅크들(BANK0, BANK1)각각의 뱅크 어드레스 '2'와 '1'(즉, 스택 저장 장치(300)의 어드레스 '4' 및 '3')로부터 제거된다. 최종적으로, 메인 스택 포인터(210)는 스택 저장 장치(300)의 톱 어드레스 '3'을 가리킨다(도 5e).
도 4는 도 2에 도시된 스택 포인터 회로(200)의 다른 실시예를 보여주는 도면이다. 도 4를 참조하면, 스택 포인터 회로(200)는 스택 포인터들(210, 230, 240)을 제어하기 위한 스택 포인터 제어 회로(220b)를 포함한다. 상기 스택 포인터 제어 회로(220b)는 가산기(251), 세 개의 2x1 멀티플렉서들(252, 253, 254), 그리고 제어 로직(255)을 포함한다.
데인 스택 포인터(210)의 상위비트들(MSP<n:1>)은 가산기(221)로 제공된다. 가산기(221)는 명령어 디코더(100)로부터의 명령어 디코딩 신호(DCSB1)에 응답해서 '-1', 또는 '-1'을 (MSP<n:1>)에 더한다. 메인 스택 포인터(210)의 최하위 비트(MSP<0>)는 명령어 디코더(100)로부터 명령어 디코딩 신호(DCSB2)와 함께 제어 로직 회로(225)로 제공된다. 제어 로직 회로(255)는 메인 스택 포인터(210)의 최하위 비트(MSP<0>)와 명령어 디코딩 신호(DCSB2)에 응답해서 멀티프렉서들(252-254)을 제어한다. 멀티플렉서들(253, 254)은 1 워드동작 동안에는 제어 로직 회로(255)에 의해 배타적으로 인에이블 되고, 2 워드 동작 동안에는 모두 인에이블 된다. 상기 메인 스택 포인터(MSP<n:1>)는 멀티플렉서들(252-254)의 제 1 입력으로 제공되고, 증가기(251)의 내용(ADD<n-1:0>)은 제 2 입력으로 제공된다. 제 1 멀티플렉서 (252)의 출력(MUX1<n-1:0>)은 메인 스택 포인터(210)로 피드백 된다. 제 2 멀티플렉서(253)의 출력(MUX2<n-1:0>)은 제 2 뱅크 스택 포인터(240)로 제공된다. 제 3 멀티플렉서(254)의 출력은 제 1 뱅크 스택 포인터(230)로 제공된다. 멀티플랙서들 (252-254) 각각은 제어 로직 회로(255)로부터의 선택 제어 신호들(SB1, SB2, 그리고 SB3)에 각각 응답해서(MSP<n:1>) 또는 ADD<n-1:O> 가운데 하나를 선택적으로 받아들여 출력한다.
도 5a는 도 4에 도시된 메인 스택 포인터가 짝수 어드레스를 저장하는 경우, 스택 포인터들의 내용을 보여주는 표이다. 도 5b는 도 4에 도시된 메인 스택 포인터가 홀수 어드레스를 저장하는 경우, 스택 포인터들의 내용을 보여주는 표이다.
도 4의 스택 포인터 회로(200)의 다양한 스택 동작 예들을 도 5 그리고 도 6a 내지 7e를 참조하여 설명한다. 여기서, 메인 스택 포인터(210)는 5 비트 MSP<4:0>를 저장하고, 각 스택 포인터들(230, 240)은 4 비트 폭을 갖는 것으로 가정한다.
도 4, 5a, 및 6a를 참조하여, 메인 스택 포인터(210)가 짝수 어드레스 '4'(=이진수 00100)를 가리키는 경우에 대한 1 워드 푸시(즉, 8 비트 푸시)동작이 설명된다. 이 스택 동작에서, 멀티플렉서(254)는 제어 로직 회로(255)로부터의 선택 제어 신호(SB3)에 응답해서, '0010'(=2)의 MSP<4:0>를 선택한다. 그 결과, 제 1 뱅크 스택 포인터(230)는 '2'를 저장한다. 즉, 새로운 1 워드 아이템은 제 1 뱅크(BANK0)의 뱅크 어드레스 '2'(즉, 스택 저장 장치(300)의 어드레스 '4')에 저장된다. 이 때, 멀티플렉서(252)는 제어 로직 회로(255)로부터의 선택 제어 신호 (SB1)에 응답해서 MSP<4:1>를 선택해서 MUX1<3:0>의 '2'를 메인 스택 포인터(210)로 피드백한다. 제어 로직 회로(255)는 메인 스택 포인터의 최하위 비트(MSP<0>)를 논리 '0'으로 토글(toggle)시키기 위한 제어 신호(SB4)를 출력한다. 그 결과, 메인 스택 포인터 (MSP<4:0>)는 '00101'를(=5)를 저장한다(도 6b참조).
다음 2 워드 푸시(즉 16비트 푸시) 동작에서(이경우에도 메인 스택 포인터 (210)는 어드레스 '4'를 저장하고 있는 것으로 가정함). 가산기(251)는 명령어 디코더(100)로부터의 명령어 디코딩 신호(DCSB1)에 응답해서 MSP<4:1>(즉, '2')에 '+1'을 더한다. 멀티플렉서들(253, 254)은 MSP<4:1>을 각각 선택하고, 그 결과 뱅크 스택 포인터들(230, 240)은 각각 어드레스 '2'를 저장한다. 즉, 새로운 2 워드 아이템은 뱅크들(BANK0, BANK1)의 뱅크 어드레스 '2'(즉, 스택 저장 장치(300)의 어드레스 '4' 및 '5')에 각각 저장된다. 반면, 멀티플렉서(252)는 선택 제어 신호(SB1)에 응답해서 가산기(251)의 내용(ADD<3:0>) '0011'(=3)을 선택한다. MUX1<3:0> 또는 ADD<3:0>은 폐인 스택 포인터(MSP<4:1>)로 제공되고, 최하위 비트 (MSP<0>)는 논리 '0'을 유지한다. 그 결과, 메인 스택 포인터(210)는 '00110(=6)'를 저장한다(도 6c참조).
다음 1 워드 팝 동작동안(여기서, 메인 스택 포인터(210)는 어드레스 '4'를 저장하고 있는 것으로 가정함) 가산기(251)는 '-1'을 MSP<4:1>의 '2'에 더하고, 멀티플렉서들(252, 253)은 각각 선택 제어 신호들(SB1, SB2)에 응답해서 가산기(251)로부터의 출력인 ADD<3:0>의 '1'을 선택한다. 즉, 뱅크 스팩 포인터(240)는 제 2 뱅크(BANK1)의 뱅크 어드레스 '1'(즉, 스택 저장 장치(300)의 어드레스 '3')을 가리킴으로써 톱 위치를 1 워드가 제거된다. 멀티플렉서(252)의 출력 MUX1<3:0> 인 '1'은 메인 스택 포인터(210)의 MSP<4:1>로 제공되고, MSP<0>은 제어 로직 회로(255)의 제어에 의해 '1'로 토글된다. 그 결과, 메인 스택 포인터(210)는 '00011'(=3)을 저장한다.(도 6d참조).
다음 2 워드 팝 동작에서(여기서, 메인 스택 포인터(210)는 어드레스 '4'를 저장하고 있는 것으로 가정함). 가산기(251)명령어 디코딩 신호(DCSB1)에 응답해서 '-1'을 MSP<4:1>의 '2'에 더하고, 멀티플렉서(252)는 선택 제어 신호(SB1)에 응답해서 ADD<3:0>의 '1'을 선택한다. 멀티플렉서들(253, 254)은 선택 제어 신호들(SB2, SB3)에 각각 응답해서 ADD<3:0>의 '1'을 선택한다. 그 결과, 제 2 뱅크 스택 포인터들(230, 240)은 각각 '1'을 저장한다. 즉, 2 워드 아이템은 뱅크들(BANK0, BANK1)의 뱅크 어드레스 '1'(즉, 스택 저장장치(300)의 어드레스 '2' 및 '3')의 위치에서 제거된다. MUX1<3:0>의 '1'은 메인 스택 포인터의 MSP<4:1>로 제공되고, 그 결과, 메인 스택 포인터(210)는 '00010'(=2)를 저장한다(도 6e참조).
도 4, 도 5b 그리고 도 7a 내지 도 7e를 참조하여, 메인 스택 포인터(210)가 홀수어드레스 '5'(=00100)을 저장하는 경우(도 7a에 도시되어 있음) 다양한 스택 동작들의 예들이 설명된다.
1 워드 푸시 동작에서, 가산기(251)는 명령어 디코딩 신호(DCSB1)에 응답해서 '+1'을 MSP<4:1>의 '2'에 더하고, 멀티플렉서(252)는 선택 제어 신호(SB1)에 응답해서 ADD<n-1:0>의 '3'을 선택해서 MSP<3:0>을 출력한다. 또한, 멀티플렉서(253)은 선택 제어 신호(SB2)에 응답해서 MSP<4:1>의 '2'를 선택하고, 그 결과, 제 2 뱅크 스택 포인터(240)는 '2'를 저장한다. 즉, 새로운 1 워드 아이템은 제 2 뱅크(BANK1)의 뱅크 어드레스 '2'(즉, 스택 저장 장치(300)의 어드레스 '5')에 저장된다. MUX1<3:0>의 '3'은 메인 스택 포인터(210)로 피드백 되고, 제어 로직 회로(255)는 제어 신호(SB4)에 의해 메인 스택 포인터의 최하위 비트(MSP<0>)가 '1'로 토글되도록 제어한다(도 5b참조). 그러므로, 메인 스택 포인터(210)는 스택 저장 장치(300)의 어드레스 '00110'(=6)의 어드레스를 가리키게 된다(도 7b참조).
다음, 2 워드 푸시 동작에서(여기서, 메인 스택 포인터(210)는 '5'를 저장하고 있는 것으로 가정함). 가산기(251)는 명령어 디코딩 신호(DCSB1)에 응답해서MSP<4:1>의 '2'에 '+1'을 더한다. 멀티플렉서(253)는 선택 제어 신호(SB2)에 응답해서 MSP<4:1>의 '2'를 선택하고, 그 결과, 제 2 뱅크 스택 포인터(240)는 어드레스 '2'를 저장한다. 멀티플렉서(254)는 선택 제어 신호(SB2)에 응답해서 ADD<3:0>의 '3'을 선택하고, 그 결과, 제 1 뱅크 스택 포인터(230)는 '3'을 저장한다. 즉, 새로운 2 워드 아이템은 뱅크들(BANK0, BANK1)의 어드레스 '3'과 '2'(즉, 스택 저장장치(300)의 어드레스 '6'과 '5')에 각각 저장된다. 멀티플렉스(252)는 선택 제어 신호(SB1)에 응답해서 가산기(251)에 저장된 ADD<3:0>의 '3'을 선택한다. MUX1<3:0>의 '3'은 메인 스택 포인터(210)의 MSP<4:1>로 제공되고, 최하위 비트 MSP<0>는 '1'을 유지한다. 그 결과, 메인 스택 포인터(210)는 '00111'(=7)을 저장한다(도 7c참조).
다음, 1 워드 팝 동작에서(여기서, 메인 스택 포인터(210)는 '5'를 저장하고 있는 것으로 가정함) 멀티 플렉서(254)는 선택 제어 신호(SB3)에 응답해서 MSP<4:1>의 '2'를 선택한다. 즉, 1 워드 아이템은 제 1 뱅크(BANK0)의 뱅크 어드레스 '2'(즉, 스택 저장 장치(300)의 어드레스 '4')로부터 제거된다. 멀티플렉서 (252)를 선택 제어 신호(SB1)에 응답해서 MSP<4:1>을 선택해서, MUX<3:0>의 '2'를 출력하고, 여는 메인 스택 포인터(210)로 피드백 된다. 제어 로직 회로(255)는 MSP<0>를 '1'로 토글시키기 위한 제어 신호(SB4)를 출력하고, 그 결과, 메인 스택 포인터는 '00100'(=4)을 저장한다(도 7d참조).
다음, 2 워드 팝 동작에서(여기서, 메인 스택 포인터(210)는 '5'를 저장하고 있는 것으로 가정함) 가산기(251)는 명령어 디코딩 신호(DSCB1)에 응답해서MSP<4:1>에 '-1'을 더하고, 멀티플렉서(252)는 선택 제어 신호(SB1)에 응답해서 ADD<n-1:0>의 '1'을 선택한다. 멀티플렉서(253)는 선택 제어 신호(SB2)에 응답해서 ADD<3:0>의 '1'을 선택하고, 멀티플렉서(254)는 선택 제어 신호(SB3)에 응답해서 MSP<4:1>의 '2'를 선택한다. 그 결과, 제 1 뱅크 스택 포인터(230)는 '2'를 저장하고, 제 2 뱅크 스택 포인터(240)는 '1'을 저장한다. 즉, 2 워드 아이템은 뱅크들(BANK0, BANK1)의 어드레스 '2'와 '1'(즉, 스택 저장 장치(300)의 어드레스 '4'와 '3')에 각각 저장된다. MUX1<3:0>의 '1'은 메인 스택 포인터(210)의 MSP<4:1>로 제공되고, 그결과 메인 스택 포인터(210)에는 '00011'(=3)이 저장된다(도 7e 참조).
상술한 바와 같은 내장된 하드웨어 스택은 1 워드 동작 뿐만 아니라 멀티-워드 스택 동작을 수행하기에 적합한 구조를 가지므로, 프로세서의 성능을 향상시킨다.
이상에서, 본 발명에 다른 회로의 구성 및 동작을 상기한 설명 및 도면에 따라 도시하였지만 이는 예를 들어 설명한 것에 불과하며 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능함은 물론이다.
이상과 같은 본 발명에 의하면, 비트 폭이 N 비트인 스택을 구비한 전자 장치에서 (2xN) 비트의 데이터 또는 어드레스를 N 비트씩 병렬로 스택에/으로부터 푸시/팝할 수 있다. 즉, 내장된 하드웨어 스택은 1 워드 동작 뿐만 아니라 멀티-워드 스택 동작으 수행하기에 적합한 구조를 가지므로, 프로세서의 성능을 향상시킨다.

Claims (13)

  1. 디지털 데이터 프로세서에 있어서;
    명령어를 디코딩해서 복수의 디코딩 신호들을 발생하는 명령어 디코더와;
    스택 아이템들을 저장하기 위한 복수의 위치들을 가지는 스택 저장 장치와;
    상기 스택 저장 장치의 위치들 가운데 적어도 하나를 가리키기 위한 스택 포인터; 그리고
    디코딩 신호들에 응답하여, 상기 스택 포인터의 내용에 근거해서 1 워드 또는 2 워드 아이템을 상기 스택 저장 장치에 동시에 삽입하거나 1 워드 또는 2 워드를 상기 스택 저장 장치로부터 동시에 제거하는 스택 장치 제어 회로를 포함하는 것을 특징으로 하는 디지털 데이터 프로세서.
  2. 제 1 항에 있어서,
    상기 스택 저장 장치의 각 위치는 1 워드 아이템을 저장하도록 구성된 것을 특징으로 하는 디지털 데이터 프로세서.
  3. 제 1 항에 있어서,
    상기 2 워드 아이템은 상기 스택 저장 장치의 인접한 2개의 위치로/로부터 동시에 삽입/제거되는 것을 특징으로 하는 디지털 데이터 프로세서.
  4. 제 1 항에 있어서,
    상기 스택 저장 장치에 제어 회로는 상기 디코딩 신호가 1 워드 스택 동작을 나타낼 때 상기 스택 포인터의 내용을 1씩 증가 또는 감소시키고, 상기 디코딩 신호가 2 워드 스택 동작을 나타날 때 상기 스택 포인터의 내용을 2씩 증가 또는 감소 시키는 것을 특징으로 하는 디지털 데이터 프로세서.
  5. 디지털 데이터 프로세서에 있어서;
    복수의 위치들을 포함하고, 각 위치들은 제 1 뱅크와 제 2 뱅크로 할당되는 스택 저장 장치와;
    상기 스택 저장 장치의 위치를 가리키는 메인 스택 포인터와;
    상기 제 1 뱅크로 할당된 위치를 가리키기 위한 제 1 뱅크 스택 포인터와;
    상기 제 2 뱅크로 할당된 위치를 가리키기 위한 제 2 뱅크 스택 포인터와;
    스택 명령어를 디코딩해서 복수의 디코딩 신호들을 발생하고, 복수의 디코딩 신호들 각각은 1 워드 푸시 동작, 1 워드 팝 동작, 2 워드 푸시 동작, 그리고 2 워드 팝 동작 가운데 하나를 나타내는 명령어 디코더; 그리고
    상기 디코딩 신호들에 응답하여, 상기 메인 스택 포인터의 내용에 근거해서 1 워드 아이템 또는 2 워드 아이템이 상기 스택 저장 장치로/로부터 삽입/제거되도록, 상기 제 1 및 제 2 뱅크 스택 포인터들을 제어하는 스택 포인터 제어 로직 회로를 포함하는 것을 특징으로 하는 디지털 데이터 프로세서.
  6. 제 5 항에 있어서,
    상기 제 1 및 제 2 뱅크들 가운데 하나는 최하위 비트가 논리 '0'인 어드레스의 위치를 구성되고, 다른 하나는 최하위 비트가 논리 '1'인 어드레스의 위치들로 구성되는 것을 특징으로 하는 디지털 데이터 프로세서.
  7. 제 5 항에 있어서,
    상기 명령어 디코더로부터의 제 1 디코딩 신호에 응답해서 상기 메인 스택 포인터의 내용에 미리 설정된 복수의 정수들 가운데 하나를 더하는 가산기와;
    상위 비트부와 하위 비트부로 구성되며, 상기명령어 디코더로부터의 제 2 디코딩 신호에 응답해서, 상기 메인 스택 포인터의 내용과 상기 가산기의 내용 가운데 하나를 선택해서 출력하는 제 1 선택기와;
    상기 제 1 선택기로부터 출력된 상기 하위 비트부와 상기 명령어 디코더로부터의 제 3 디코딩 신호에 응답해서 제 1 제어 신호를 발생하는 제 1 제어 로직 회로와;
    상기 제 1 선택기로부터 출력된 상기 하위 비트부와 상기 명령어 디코더로 부터의 제 3 디코딩 신호에 응답해서 제 1 제어 신호를 발생하는 제 1 제어 로직 회로와;
    상기 제 1 선택기로부터 출력된 상기 하위 비트부와 상기 명령어 디코더로부터의 제 4 디코딩 신호에 응답해서 제 2 제어 신호를 발생하는 제 2 제어 로직 회로와;
    상기 제 1 선택기로부터 출력된 상기 상위 비트부를 증가시키기 위한 증가기와;
    상기 제 1 제어 신호에 응답해서 상기 제 1 선택기로부터 출력된 상위 비트부와 상기 증가기로부터의 출력 가운데 하나를 선택하기 위한 제 2 선택기; 그리고
    상기 제 2 제어 신호에 응답해서 상기 제 1 선택기로부터 출력된 상위 비트와 상기 증가기로부터의 출력 가운데 하나를 선택하는 제 3 선택기를 포함하되;
    상기 제 2 및 제 3 선택기들의 출력은 상기 제 2 및 제 3 뱅크 스택 포인터들로 각각 제공되는 것을 특징으로 하는 디지털 데이터 프로세서.
  8. 제 7 항에 있어서,
    상기 복수의 미리 설정된 정수들은 +1, +2, -1 및 -2 가우데 하나이고, 상기 증가기는 상기 제 1 선택기로부터 출력되는 상위 비트부를 1만큼 증가시키는 것을 특징으로 하는 디지털 데이터 프로세서.
  9. 제 7 항에 있어서,
    상기 메인 스택 포인터는 상기 가산기의 내용으로 갱신되는 것을 특징으로 하는 디지털 데이터 프로세서.
  10. 제 9 항에 있어서,
    상기 제 1 선택기로부터 출력되는 상기 하위 비트부는 상기 제 1 선택기로부터 출력되는 최하위 비트를 포함하는 것을 특징으로 하는 디지털 데이터 프로세서.
  11. 제 5 항에 있어서,
    상기 스택 포인터 제어 로직 회로는,
    상기 명령어 디코더로부터의 상기 제 1 디코딩 신호에 응답해서, 상기 메인스택 포인터의 내용의 상위 비트부에 미리 설정된 복수의 정수들 가운데 하나를 더하는 가산기와;
    상기 메인 스택 포인터의 내용의 하위 비트부와 상기 명령어 디코더의 제 2 디코딩 신호에 응답해서 제 1, 2, 3, 및 4 제어 신호들 가운데 하나 또는 그들의 조합을 발생하는 제어 로직과;
    상기 제 1 제어 신호에 응답해서, 상기 메인 스택 포인터의 내용의 상위 비트부와 상기 가산기의 출력 가운데 하나를 선택하는 제 1 선택기와;
    상기 제 2 제어 신호에 응답해서 상기 메인 스택 포인터의 내용의 상위 비트부와 상기 가산기의 내용 가운데 하나를 선택하는 제 2 선택기; 그리고
    상기 제 3 제어 신호에 응답해서, 상기메인 스택 포인터의 내용의 상위 비트부와 상기 가산기의 내용 가운데 하나를 선택하는 제 3 선택기를 포함하되;
    상기 제 2 및 제 3 선택기의 출력들은 상기 제 2 및 제 1 뱅크 스택 포인터들로 각각 제공되고, 상기 메인 스택 포인터의 내용의 하위 비트부는 상기 제 4 제어 신호에 의해 제어되는 것을 특징으로 하는 디지털 데이터 프로세서.
  12. 제 11 항에 있어서,
    상기 복수의 미리 설정된 정수들은 +1과 -1을 포함하는 것을 특징으로 하는 디지털 데이터 프로세서.
  13. 제 12항에 있어서,
    상기 메인 스택 포인터의 내용의 상위 비트부는 상기 가산기의 내용에 의해 갱신되고; 그리고
    상기 메인 스택 포인터의 내용의 하위 비트부는 상기 메인 스택 포인터의 최하위 비트를 포함하는 것을 특징으로 하는 디지털 데이터 프로세서.
KR1019980040587A 1998-06-22 1998-09-29 이중뱅크스택을구비한디지털데이터처리장치 KR100328813B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1019980040587A KR100328813B1 (ko) 1998-09-29 1998-09-29 이중뱅크스택을구비한디지털데이터처리장치
US09/338,473 US7028163B2 (en) 1998-06-22 1999-06-22 Apparatus for controlling multi-word stack operations using a multi-bank stack in digital data processors
US11/369,722 US20060179287A1 (en) 1998-06-22 2006-03-07 Apparatus for controlling multi-word stack operations in digital data processors

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019980040587A KR100328813B1 (ko) 1998-09-29 1998-09-29 이중뱅크스택을구비한디지털데이터처리장치

Publications (2)

Publication Number Publication Date
KR20000021486A KR20000021486A (ko) 2000-04-25
KR100328813B1 true KR100328813B1 (ko) 2002-09-26

Family

ID=19552403

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980040587A KR100328813B1 (ko) 1998-06-22 1998-09-29 이중뱅크스택을구비한디지털데이터처리장치

Country Status (1)

Country Link
KR (1) KR100328813B1 (ko)

Also Published As

Publication number Publication date
KR20000021486A (ko) 2000-04-25

Similar Documents

Publication Publication Date Title
CA1288169C (en) Digital signal processor
US5682545A (en) Microcomputer having 16 bit fixed length instruction format
US5247627A (en) Digital signal processor with conditional branch decision unit and storage of conditional branch decision results
US5206940A (en) Address control and generating system for digital signal-processor
EP1058185A1 (en) A multiply and accumulate apparatus and a method thereof
KR100328162B1 (ko) 정보처리회로와마이크로컴퓨터와전자기기
US5249148A (en) Method and apparatus for performing restricted modulo arithmetic
US20080082800A1 (en) Data processor for modifying and executing operation of instruction code
US5299320A (en) Program control type vector processor for executing a vector pipeline operation for a series of vector data which is in accordance with a vector pipeline
US6263420B1 (en) Digital signal processor particularly suited for decoding digital audio
EP0931286B1 (en) Stack oriented data processing device
US5459847A (en) Program counter mechanism having selector for selecting up-to-date instruction prefetch address based upon carry signal of adder which adds instruction size and LSB portion of address register
US20060179287A1 (en) Apparatus for controlling multi-word stack operations in digital data processors
US9015216B2 (en) Fast static rotator/shifter with non two&#39;s complemented decode and fast mask generation
US7111155B1 (en) Digital signal processor computation core with input operand selection from operand bus for dual operations
JP2002175181A (ja) プロセッサおよびリネーミング装置
JPH07239780A (ja) 1クロック可変長命令実行処理型命令読み込み電子計 算機
JP2000322235A (ja) 情報処理装置
US4896264A (en) Microprocess with selective cache memory
KR100328813B1 (ko) 이중뱅크스택을구비한디지털데이터처리장치
JP2000039995A (ja) 高性能マイクロプロセッサで使用するためのフレキシブル累算レジスタファイル
US5649229A (en) Pipeline data processor with arithmetic/logic unit capable of performing different kinds of calculations in a pipeline stage
JPS63153636A (ja) 情報処理装置
JP2001092658A (ja) データ処理回路及びデータ処理装置
KR19990046279A (ko) 중앙처리장치

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: 20090303

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee