KR100965196B1 - 스택 메모리로의 고속 액세스를 위한 방법 및 시스템 - Google Patents

스택 메모리로의 고속 액세스를 위한 방법 및 시스템 Download PDF

Info

Publication number
KR100965196B1
KR100965196B1 KR1020067009060A KR20067009060A KR100965196B1 KR 100965196 B1 KR100965196 B1 KR 100965196B1 KR 1020067009060 A KR1020067009060 A KR 1020067009060A KR 20067009060 A KR20067009060 A KR 20067009060A KR 100965196 B1 KR100965196 B1 KR 100965196B1
Authority
KR
South Korea
Prior art keywords
address
stack
access
mode
memory
Prior art date
Application number
KR1020067009060A
Other languages
English (en)
Other versions
KR20060120091A (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 KR20060120091A publication Critical patent/KR20060120091A/ko
Application granted granted Critical
Publication of KR100965196B1 publication Critical patent/KR100965196B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • 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/355Indexed addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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

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

스택 메모리로의 고속 액세스를 제공하는 방법, 시스템, 및 장치가 개시된다. 이 시스템 및 장치는 어드레스 비트, 스택 포인터, 및 고속 액세스 RAM을 포함한다. 또한, 이 방법에서는 어드레스 비트 및 스택 포인터와 관련하여 첫번째 어드레스 모드가 사용되는 경우에 액세스 RAM의 위치가 시프트되어 리터럴 오프셋 어드레스 모드의 인덱스를 얻을 수 있다.
스택 메모리, 어드레스 비트, 스택 포인터

Description

스택 메모리로의 고속 액세스를 위한 방법 및 시스템{METHOD AND SYSTEM FOR FAST ACCESS TO STACK MEMORY}
본 발명은 마이크로프로세서에 관한 것으로, 특히 마이크로컨트롤러와 마이크로프로세서에서 스택 데이터 구조로서 사용되는 범용 메모리의 액세스에 관한 것이다.
MCU(Microcontroller units)는 수년동안 전자산업에서 사용되고 있다. 모든 마이크로프로세서 또는 마이크로컨트롤러에는 중간값을 유지하는데 사용되는 메모리(즉, RAM)가 있다. 이 메모리는 "스택(stack)이라 불리는 개념적인 데이터 용기를 구현하는데 사용될 수 있다. 스택은 모든 삽입과 삭제가 리스트의 일단에서 이루어지는 선형 리스트와 같이 작용하는 구조이다. 스택이 무엇인지를 특정하는 규칙 또는 원칙은 세가지 연산, 즉 푸쉬(push), 팝(pop), 및 탑(top)의 견지에서 기술될 수 있다. 푸쉬는 스택에 항목을 추가하고, 은 가장 최근에 추가된 항목을 삭제하고, 은 스택은 바꾸지 않은 채로 항목을 복귀시킨다. 스택은 마이크로컨트롤러에서 실행되는 다양한 소프트웨어 애플리케이션에 사용된다.
대부분의 마이크로컨트롤러는 한정된 메모리 자원을 가지고 있다. 메모리 자원의 양은 소프트웨어 스택의 사용을 통해 증대될 수 있다. 소프트웨어 스택은 전 반적인 컴퓨터 프로그램의 일부에 국부적인 컨텍스트(context)를 저장하는데 일련의 데이터 위치가 사용되는 방법이다. 이 방법에서는 현재 활성화되어 있는 컴퓨터 프로그램의 일부만이 RAM 공간을 소모하기 때문에 효율적인 RAM 사용이 가능하다. 소프트웨어 스택은 스택의 탑을 지시하는 전용 포인터를 가짐으로써 구현된다. 전용 포인터는 일반적으로 스택 포인터라 불린다. 데이터는 스택 포인터를 조정함으로써 소프트웨어 스택에 추가되거나 혹은 소프트웨어 스택에서 제거될 수 있다. 또한, 스택내의 데이터는 "스택-포인터 상대 어드레스 지정(stack-pointer relative addressing)"을 이용하여 참조됨으로써 스택 포인터로부터의 오프셋이 데이터를 어드레스 지정하는데 사용된다.
도 1은 소프트웨어 스택을 만들기 위한 RAM의 사용을 예시하고 있다. 구체적으로, RAM(102)의 일부는 소프트웨어 스택(104)으로서 지정된다. 소프트웨어 스택(104)의 확대도가 도 1의 우측에 예시되어 있다. 구체적으로, 소프트웨어 스택(104)은 스택 포인터(150) 뿐만 아니라, 스택 포인터(150)로부터의 오프셋을 이용하여 액세스가능한 추가 레지스터를 가지고 있다. 예를 들면, 스택 포인터(150)에 인접한 레지스터(152)는 스택 포인터 +1로서 액세스가능하다. 마찬가지로, 레지스터(152)에 인접한 레지스터는 스택 포인터(150)로부터 2 만큼의 오프셋이다. 스택은 마지막 레지스터(198)가 도 1에 도시한 것과 같이 숫자 'n' 만큼 스택 포인터로부터의 오프셋인 'n' 레지스터를 포함한다.
대다수 고레벨 언어는 소프트웨어 스택의 이용이 필요하도록 설계되어 있기 때문에, 고레벨 언어로 기록된 소프트웨어 애플리케이션의 전반적인 성능은 스택- 상대 연산을 효율적으로 처리하기 위한 마이크로컨트롤러의 능력에 의존한다. 고속 소프트웨어 스택 액세스 및 조정은 전반적인 성능을 개선시킬 수 있다. 따라서, 소프트웨어 애플리케이션에 대한 성능이 빠른 만큼 소프트웨어 스택의 액세스 및/또는 조정에 필요한 시간을 저감시킬 필요가 있다.
본 발명은 고속 메모리 액세스를 위해 둔 메모리 부분을 가지는 마이크로컨트롤러를 제공하고 고속 액세스를 위하여 이 메모리를 스택에 재배치함으로써 종래기술의 상술한 문제점 뿐만 아니라 다른 단점 및 결점을 해결한다.
본 발명은 스택 메모리로의 고속 액세스를 제공하기 위한 방법, 시스템, 및 장치를 포함한다. 이 시스템 및 장치는 어드레스 비트, 스택 포인터, 및 고속 액세스 RAM(Random Access Memory)을 포함한다. 또한, 이 방법은 액세스 RAM의 위치를 시프트하고 리터럴(literal) 오프셋 어드레스 모드의 인덱스를 얻기 위하여 어드레스 비트 및 스택 포인터와 관련하여 첫번째 어드레스 모드가 사용될 수 있도록 한다.
본 발명의 특징 및 장점들은 개시를 위한 목적으로 제공되고 첨부한 도면과 관련하여 주어진 실시예에 대한 다음의 설명으로부터 명백할 것이다.
본 개시물의 보다 완전한 이해와 그 장점들은 첨부한 도면과 관련하여 주어진 다음의 설명을 참조하여 얻을 수 있다.
도 1은 종래의 마이크로컨트롤러의 범용 메모리에서의 스택의 구현을 예시한 블록도.
도 2는 본 발명에 따른 고속 액세스 메모리 스택을 예시한 블록도.
도 3은 본 발명에 따른 리터럴 오프셋 어드레스 지정 모드를 예시한 블록도.
도 4는 본 발명에 따른 모드 지정 절차를 예시한 흐름도.
도 5는 종래의 어드레스 생성 장치를 예시한 블록도.
도 6은 본 발명에 따른 다른 어드레스 생성 장치를 예시한 블록도.
본 발명은 다양한 수정물 및 대체물이 가능하지만, 특정 실시예가 도면에 예시로서 도시되어 있으며 여기에 상세히 기술되어 있다. 그러나, 특정 실시예에 대한 설명은 개시되어 있는 특정 형태로 본 발명을 한정하려는 것이 아니고, 반대로 첨부한 청구항에 의해 정의되는 것과 같은 본 발명의 정신과 범위를 일탈하지 않고 모든 수정물, 등가물, 및 대체물을 포함하려 한다는 것을 이해하여야 한다.
스택 메모리로의 고속 액세스를 가능하게 하는 방법 및 장치가 개시된다. 구체적으로, 본 개시물에는 고속 메모리 액세스를 위하여 액세스 비트를 가지는 마이크로컨트롤러가 기술되어 있으며, 이 고속 액세스 비트는 고속 스택 액세스를 위하여 리다이렉트된다. 스택 액세스에 필요한 시간을 저감시킴으로써, 마이크로컨트롤러의 전반적인 성능을 개선시킬 수 있다. 따라서, 본 발명의 장점은 스택으로의 고속 액세스를 제공하여 마이크로컨트롤러의 전반적인 성능을 빠르게 하는 것이다.
전형적인 고레벨 소프트웨어 애플리케이션(프로그램)은 하기 코드 샘플과 같은, 파라미터와 지역 변수를 가지는 함수 서브루틴을 이용한다.
void foo( char a, char b)
{
int c;
char d;
d = 5;
c = a + b + d;
}
표준 구조의 마이크로컨트롤러에서, "d = 5"와 같은 단순한 스테이트먼트는 어셈블리 언어로 하기와 같이 번역될 수 있다.
MOVLW 0x5
MOVWF PRODL, 0x0
MOVLW 0x2
MOVFF PRODL, PLUSW2
상기 코드는 일부 디바이스 및/또는 일부 애플리케이션에 대하여 상당한 양의 오버헤드일 수 있는 10 바이트의 프로그램 메모리를 이용한다. 성능 증대를 위하여 오버헤드의 양을 저감시키는 것이 바람직할 수 있다.
오버헤드는 고레벨 프로그래밍을 위하여 동일 글자체(expendable) 액세스 RAM으로 취함으로써 저감될 수 있다. 즉, 고레벨로 기록된 대부분의 소프트웨어 애플리케이션은 다른 애플리케이션과 같이 액세스 RAM을 이용하지 않는다. 결론적으로, 고레벨 소프트웨어 애플리케이션인 경우에, 필수적이지 않을 수 있는 소정의 기능성을 배제함으로써 메모리 액세스에 필요한 시간을 저감시키는 트레이드-오프(trade-off)가 있을 수 있다. 이 개시물에서는 고속 메모리 어드레스라기 보다는 스택-상대 어드레스를 식별하도록 액세스 비트를 재배치함으로써 트레이드 오프가 이루어질 수 있다.
이하, 본 발명의 바람직한 실시예에 대하여 도면을 참조하여 상세히 설명한다. 도면에서 동일한 구성요소는 동일한 참조부호로 나타내고, 유사한 구성요소는 아래첨자를 달리하여 동일한 참조부호로 나타낸다.
본 발명의 실시예에 따른 스택이 도 2에 예시되어 있다. 구체적으로, 스택(200)은 범용 메모리(206)를 포함한다. 범용 메모리(206)에는 소프트웨어 스택(210)이 있을 수 있다. 스택(200)의 특수 기능 레지스터(208)는 예를 들어 도 2에 도시한 것과 같이 엔드(end) 어드레스 0xfff에 인접하여 메모리의 탑을 향하여 있을 수 있다. 특수기능 레지스터 또는 범용 메모리의 특정 위치는 본 발명의 중심 내용이 아니고, 메모리의 특정 위치나 스택 메모리의 특정 사이즈가 변할 수 있다는 것을 주목하여야 한다.
일부 종래기술의 마이크로컨트롤러에서는 스택 메모리를 액세스하는 경우에 "액세스 비트"를 사용하여 액세스 비트가 고속 메모리 어드레스를 식별하였다. 이와는 대조적으로, 본 발명의 실시예에서는 종래 기술의 마이크로컨트롤러의 고속 메모리 어드레스라기 보다는 스택-상대 어드레스를 식별하도록 액세스 비트가 재배치될 수 있다. 이러한 재배치는 액세스 RAM을 배제할 수 있지만, 액세스 RAM이 없는 구성은 장점들을 가지고 있다. 구체적으로, 스택-상대 어드레스를 식별하기 위 한 액세스 비트의 재배치와 관련하여 스택(210)의 구성은 마이크로컨트롤러 장치의 전반적인 성능을 개선시킬 수 있다. 예를 들면, 본 발명의 개선된 스택 어드레스 지정 체계를 이용하여 "b = 5"에 대한 코드가 (어셈블리 언어로) 하기와 같이 번역될 수 있으며,
MOVLW 0x5
MOVWF b, 0x1
두 명령을 가지고 4 바이트의 프로그램 메모리만을 이용하므로, 전술한 예보다 60%를 감소시킬 수 있다.
여기에 개시되어 있는 어드레스 지정 모드는 예를 들어 "액세스 비트"를 '1'로 설정함으로써 컨텍스트를 프로그래밍하여 동작시킬 수 있다. 액세스 비트는 퓨즈로서 구현되거나 혹은 액세스 비트는 소프트웨어로 구현될 수도 있다. 액세스 비트가 동작가능하게 프로그래밍되는 경우에, 리터럴 오프셋 모드로 인덱스된 어드레스는 의존적인 어드레스이며 명령어의 액세스 비트값에 의존할 수도 있다. 액세스 비트 동작 모드는 다이렉트 쇼트 또는 다이렉트 포스드(forced) 어드레스를 이용하는 명령에만 적용할 것이다. 인덱스 비트에 대하여 다른 값 또는 컨텍스트를 전달하기 위한 다른 메커니즘을 가지는 대체물이 이 기술분야의 당업자에 의해 가능하다는 것을 이해할 것이다. 즉, 여기에서 제공되는 예는 단지 예시를 위한 것이다.
상술한 실시예에서, 액세스 비트가 '1' 이면, 이전의 구조(즉, 도 1의 메모리 구조)로부터 어드레스가 어떻게 결정되는 지에 변화가 없을 수 있으며 어드레스지정 모드는 다이렉트 쇼트로 디폴트될 수 있다. 액세스 비트의 값이 '0'으로 설정 되면, 명령어에 포함되어 있는 어드레스는 디코딩되어 (헥사)값 05Fh와 비교될 수 있다. 어드레스가 05Fh 보다 크면, 어드레스 지정 모드는 다이렉트 포스드로서 디코딩될 수 있다. 액세스 비트의 값이 제로이고, 명령어의 어드레스가 05Fh 보다 작거나 같으면, 어드레스 지정 모드는 리터럴 오프셋으로 인덱싱될 수 있다. 어드레스 지정 모드가 리터럴 오프셋으로 인덱싱되는 경우에, 명령어의 어드레스는 스택의 탑을 마킹하는데 사용되는 전용 포인터 레지스터의 컨텐츠에 부가될 수 있는 리터럴 값으로 디폴트될 수 있다. 그리고, 결과값은 연산이 수행될 시에 어드레스로서 사용될 수 있다.
도 3은 RAM(300)에서의 액세스 연산을 나타낸다. 구체적으로, 종래의 RAM(300)(도 3의 좌측)은 액세스 RAM(302), 범용 레지스터(304), 및 특수 기능 레지스터(306)와 같은 개별적인 뱅크들로 분할되어 있다. 도 3에 도시한 RAM(300)의 실시예에서, 메모리 어드레스 지정은 0x0 내지 0xfff에 있다. 종래의 RAM 조직(300)과는 대조적으로, 도 3의 우측에 도시한 현재의 RAM 조직(300)이 있다. 새로운 뱅크 구성에서는, RAM(300')의 탑은 액세스 RAM(302)에 이은 범용 레지스터(304')를 갖는다. 소프트웨어 스택(314)을 포함하는 다른 범용 레지스터(304')가 있다. 소프트웨어 스택(314)의 탑에는 스택 포인터(315)가 있다. 특수 기능 레지스터(306)는 RAM 조직(300')의 나머지를 이룬다. 오프셋 리터럴 어드레스 지정을 통해 소프트웨어 스택(314)에서 값을 액세스할 수 있도록 하는 여기에 개시되어 있는 메커니즘이 있는 반면에, 종래의 구조는 액세스 RAM에서 액세스된 절대 어드레스(예를 들면, 도 2의 "12"(12,0,0))를 가지며, 본 구조는 소프트웨어 스택에서 스택 포인터에 관하여 어드레스를 액세스할 수 있다.
도 4는 모드 지정 방법(400)을 예시한 흐름도이다. 이 방법은 일반적으로 단계(402)에서 시작한다. 단계(404)에서는 액세스 비트가 설정되어 있는 지를 판단하기 위하여 체크가 이루어질 수 있다. 액세스 비트가 설정되어 있지 않으면, 단계(406)에서는 표준 구조가 사용되고 다이렉트 쇼트 어드레스 지정 모드가 선택될 수 있다. 액세스 비트가 설정되어 있으면, 단계(408)에서 명령이 디코딩되어 어드레스를 추출한다. 단계(410)에서, 어드레스가 05Fh와 같은 소정값보다 큰 지를 판단하기 위하여 체크가 이루어질 수 있다. 소정값은 디바이스에서 디바이스로 변할 수 있으며, 이용가능한 RAM의 양과, 문제의 디바이스에 대한 애플리케이션에 의존할 수 있다. 어드레스가 소정값보다 크면, 다이렉트 포스드 어드레스 지정 모드가 단계(412)에서 선택될 수 있다. 그렇지 않으면, 리터럴 오프셋 인덱스드 어드레스 지정 모드가 단계(416)에서 선택될 수 있다. 어드레스 지정 모드가 선택된 후, 이 방법은 일반적으로 단계(418)에서 종료한다. 원하는 어드레스 지정 모드의 수에 따라 상술한 하나 이상의 단계를 없앨 수 있다는 것을 주목하여야 한다. 하지만, 일부 경우에, 다른 어드레스 지정 모드들이 선택되었는 지를 판단하기 위하여 어드레스 값으로 추가 체크가 이루어질 수 있다. 도 4의 방법은 단지 예로서 하나 이상의 어드레스 지정 모드를 선택하기 위하여 종류와 특성이 변할 수 있는 많은 체크의 예로서 받아들여져야 한다.
상술한 실시예에 대한 하나의 결과는 다이렉트 포스드 모드는 이 모드가 동작하는 경우에 소정값보다 작거나 같은 어드레스에 대하여 이용가능하지 않다는 것 일 수 있다. 또한, 소정값보다 큰 범위에서 다른 모든 인다이렉트(indirect) 모드는 데이터 메모리 어드레스에 의해 디코딩되기 때문에 다른 모든 형태의 인다이렉트 어드레스 지정은 리터럴 모드에 의한 인덱스에 의해 영향받지 않는다.
도 5는 어드레스 생성 장치(AGU:Address Generation Unit)의 블록도이다. 어드레스 생성 장치(500)는 RAM(302)과 작용하며, 하나 이상의 뱅크(308)를 가지고 있다. 도 5를 참조하면, FSR(521)로 입력되는 증가/감소 로드값(520)이 있을 수 있다. W 레지스터(516)의 컨텐츠는 (도 5에 도시한 것과 같은 하나 이상의 +1 값에 의한) 오프셋일 수 있으며, 아마도 멀티플렉서(514)에서 증가/감소 오프셋 값(522)과 결합될 수 있다. 멀티플렉서(514)의 출력은 가산기(512)에서 FSR(521)의 값과 결합될 수 있다. 가산기(512)의 출력은 멀티플렉서(510)와, FSR(521)로 전달될 수 있다. 멀티플렉서(510)는 FSR(521)과 가산기(512)의 값뿐만 아니라, 프리/포스트 값(511)을 입력으로서 받아들일 수 있다. 멀티플렉서(510)의 출력은 멀티플렉서(510)로의 입력으로서 사용될 수 있다. 멀티플렉서(508)는 멀티플렉서(510)의 출력 뿐만 아니라, 인덱스 값(509)과 패치 명령의 파일부분(506)도 입력으로서 받아들일 수 있다. 멀티플렉서(508)의 출력은 실행 명령의 어드레스 부분(503)으로서 사용될 수 있다. 패치 명령의 OP 코드 부분(504)은 도 5에 도시한 것과 같이 실행 명령의 OP 코드 부분(502)으로서 사용될 수 있다.
본 발명의 방법과 기술을 구현하는 어드레스 생성 장치가 도 6에 예시되어 있다. 도 6을 참조하면, 증가/감소 로드값(520)이 FSR2(320)에 입력될 수 있다. W 레지스터(516)의 값은 하나 이상의 +1 값 및 증가/감소/오프셋 내부값(622)과 함께 멀티플렉서(614)에 입력될 수 있다. 멀티플렉서(614)는 패치 명령의 리터럴 부분(602)의 값을 입력으로서 받아들일 수도 있다. 멀티플렉서(614)의 출력과 FSR2(320)의 값은 가산기(512)에 입력으로서 사용될 수 있다. 가산기(512)의 출력은 도 6에 도시한 것과 같이 멀티플렉서(510)로의 입력과 FSR2(320)에 대한 입력값으로 사용될 수 있다. 가산기(512)로부터의 값에 추가하여, 멀티플렉서(510)는 프리/포스트 값(511) 및/또는 FSR2(320)로부터의 값을 입력으로서 받아들일 수도 있다. 멀티플렉서(510)의 출력은 멀티플렉서(508)로 전달될 수 있다. 멀티플렉서(510)로부터의 출력에 추가하여, 멀티플렉서(508)는 파일값(609) 및/또는 패치 명령의 리터럴 부분(602)를 입력으로서 받아들일 수도 있다. 멀티플렉서(508)의 출력은 실행 명령에 대한 어드레스 부분(603)으로서 사용될 수 있다. 패치 명령의 OP 코드 부분(504)은 실행 명령에 대한 OP 코드(502)로서 사용될 수 있다. 도 5의 실시예에서와 같이, 어드레스 생성 장치(600)는 도 6에 도시한 RAM(302) 및 뱅크(308)와 동작가능하다.
이 어드레스 지정 모드를 구현하기 위하여, (도 5에 예시한 것과 같이) 종래 기술의 마이크로컨트롤러에 존재하는 어드레스 생성 장치(500)의 FSR(521)에 광범위한 변화가 있을 수 있다. 이전의 마이크로컨트롤러는 3가지 타입의 인디렉션(도 5 참조)을 이용하여 어드레스를 만들 수 있다.
● Indirect(INDF)
● Indirect with increment/decrement(FSR+),(+FSR), and (FSR-)
● Indirect with offset(FSR+W, 여기서 W의 컨텐츠는 오프셋으로 사용됨)
리터럴 오프셋 모드로 인덱스를 지원하기 위하여, 명령 레지스터(602)의 하위 7 비트는 4개의 가능한 값들중 하나로서 포함되어 FSR2(320)의 컨텐츠에 가산될 수 있다. 명령 레지스터(IR:Instruction Register)(504/602)에 포함되어 있는 데이터는 무부호 정수로 고려되어 그 결과는 FSR2에 저장되지 않을 수 있다. 도 6에 도시한 실시예에 대한 4가지 어드레스 지정 모드는 다음을 포함한다.
● Indirect(INDF)
● Indirect with increment/decrement(FSR2+),(+FSR2), and (FSR2-)
● Indirect with off set(FSR2+ W, 여기서 W 레지스터(516)의 컨텐츠는 오프셋으로 사용됨)
● Indirect with literal offset(FSR2(320) + literal(602))
따라서, 도 6의 어드레스 생성 장치(600)는 도 6에 도시한 방법(400)을 구현할 수 있다. 개시되어 있는 본 발명의 정신을 일탈하지 않고 어드레스 생성 장치의 변형이 가능하다는 것을 이해할 것이다. 또한, 어드레스 모드 선택 방법도 여기에 개시되어 있는 본 발명의 정신을 일탈하지 않고 변형될 수 있다.
따라서, 본 발명은 상술한 목적 및 장점 뿐만 아니라 여기에 속하는 것들도 달성할 수 있다. 본 발명이 실시예를 참조하여 특별히 설명되고 정의되었지만, 거기에 본 발명을 한정하려는 것이 아니며 이러한 한정을 내포하지도 않는다. 본 발명은 이 기술분야의 당업자에 의해 형태와 기능에 있어서 수정물, 대체물, 및 등가물이 가능하다. 본 발명의 전술한 실시예들은 단지 예로서 본 발명의 범위를 한정 하지 않는다. 결론적으로, 본 발명은 모든 측면에 있어 등가물에 대한 완전한 인식을 제공하는 첨부한 청구범위의 정신에 의해서만 한정되어야 한다.

Claims (10)

  1. 리터럴 오프셋 모드의 인덱스로서 작용하도록 첫번째 어드레스 모드를 이용하기 위한 시스템으로서, 상기 시스템은:
    하나 이상의 뱅크들중 하나를 선택하기 위하여 뱅크 선택 레지스터를 구비하고, 액세스 부분을 가지고 있는 하나 이상의 뱅크의 랜덤 액세스 메모리;
    상기 메모리내의 어드레스와 액세스 비트를 가지는 하나 이상의 명령; 및
    스택 포인터를 포함하고,
    상기 액세스 비트가 설정된 경우에, 상기 첫번째 어드레스 모드에서 상기 액세스 부분을 오프셋으로서 이용하기 위하여 상기 스택 포인터를 이용함으로써 리터럴 오프셋 어드레스 모드를 이루는 것을 특징으로 하는 시스템.
  2. 제 1항에 있어서, 상기 액세스 부분의 어드레스는 상기 스택 포인터내의 어드레스의 리터럴 오프셋인 것을 특징으로 하는 시스템.
  3. 제 1항에 있어서, 상기 액세스 비트는 '1'로 설정되어 있는 것을 특징으로 하는 시스템.
  4. 제 1항에 있어서, 상기 액세스 비트는 '0'으로 설정되어 있는 것을 특징으로 하는 시스템.
  5. 제 1항에 있어서, 상기 첫번째 어드레스 모드는 다이렉트 쇼트인 것을 특징으로 하는 시스템.
  6. 제 1항에 있어서, 상기 첫번째 어드레스 모드는 다이렉트 포스드인 것을 특징으로 하는 시스템.
  7. 액세스 비트가 설정되어 있는 지를 판단하는 단계;
    상기 액세스 비트가 설정되어 있지 않으면, 첫번째 어드레스 지정 모드를 선택하는 단계; 및
    액세스 비트가 설정되어 있으면,
    어드레스를 얻기 위하여 명령을 디코딩하는 단계;
    상기 어드레스가 소정값보다 큰 지를 판단하는 단계;
    어드레스가 소정값보다 크면, 두번째 어드레스 지정 모드를 선택하고, 그렇지 않으면 세번째 어드레스 지정 모드를 선택하는 단계를 포함하는 방법.
  8. 제 7항에 있어서, 상기 첫번째 어드레스 지정 모드는 다이렉트 쇼트 어드레스 지정 모드인 것을 특징으로 하는 방법.
  9. 제 7항에 있어서, 상기 두번째 어드레스 지정 모드는 다이렉트 포스드 어드 레스 지정 모드인 것을 특징으로 하는 방법.
  10. 제7항에 있어서, 상기 세번째 어드레스 지정 모드는 리터럴 오프셋 인덱스드 어드레스 지정 모드인 것을 특징으로 하는 방법.
KR1020067009060A 2003-10-24 2004-10-20 스택 메모리로의 고속 액세스를 위한 방법 및 시스템 KR100965196B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US51402903P 2003-10-24 2003-10-24
US60/514,029 2003-10-24

Publications (2)

Publication Number Publication Date
KR20060120091A KR20060120091A (ko) 2006-11-24
KR100965196B1 true KR100965196B1 (ko) 2010-06-24

Family

ID=34549315

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067009060A KR100965196B1 (ko) 2003-10-24 2004-10-20 스택 메모리로의 고속 액세스를 위한 방법 및 시스템

Country Status (6)

Country Link
US (1) US7401176B2 (ko)
EP (1) EP1680734B1 (ko)
KR (1) KR100965196B1 (ko)
CN (1) CN101084484B (ko)
TW (1) TWI333616B (ko)
WO (1) WO2005043384A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080052663A1 (en) * 2006-07-17 2008-02-28 Rod Cope Project extensibility and certification for stacking and support tool
US7971034B2 (en) * 2008-03-19 2011-06-28 International Business Machines Corporation Reduced overhead address mode change management in a pipelined, recycling microprocessor
US8521979B2 (en) 2008-05-29 2013-08-27 Micron Technology, Inc. Memory systems and methods for controlling the timing of receiving read data
US7979757B2 (en) * 2008-06-03 2011-07-12 Micron Technology, Inc. Method and apparatus for testing high capacity/high bandwidth memory devices
US8756486B2 (en) 2008-07-02 2014-06-17 Micron Technology, Inc. Method and apparatus for repairing high capacity/high bandwidth memory devices
US8289760B2 (en) 2008-07-02 2012-10-16 Micron Technology, Inc. Multi-mode memory device and method having stacked memory dice, a logic die and a command processing circuit and operating in direct and indirect modes
US7855931B2 (en) 2008-07-21 2010-12-21 Micron Technology, Inc. Memory system and method using stacked memory device dice, and system using the memory system
US8127204B2 (en) 2008-08-15 2012-02-28 Micron Technology, Inc. Memory system and method using a memory device die stacked with a logic die using data encoding, and system using the memory system
KR101283469B1 (ko) * 2009-08-31 2013-07-12 한국전자통신연구원 프로세서 명령어의 메모리 액세스 방법 및 장치
US8400808B2 (en) 2010-12-16 2013-03-19 Micron Technology, Inc. Phase interpolators and push-pull buffers
US9171597B2 (en) 2013-08-30 2015-10-27 Micron Technology, Inc. Apparatuses and methods for providing strobe signals to memories

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010043826A (ko) * 1999-03-26 2001-05-25 씨. 필립 채프맨 마이크로 컨트롤러 명령어 집합

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6029241A (en) 1997-10-28 2000-02-22 Microchip Technology Incorporated Processor architecture scheme having multiple bank address override sources for supplying address values and method therefor
US6058467A (en) * 1998-08-07 2000-05-02 Dallas Semiconductor Corporation Standard cell, 4-cycle, 8-bit microcontroller

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010043826A (ko) * 1999-03-26 2001-05-25 씨. 필립 채프맨 마이크로 컨트롤러 명령어 집합

Also Published As

Publication number Publication date
KR20060120091A (ko) 2006-11-24
EP1680734A1 (en) 2006-07-19
CN101084484B (zh) 2010-08-18
TW200534095A (en) 2005-10-16
TWI333616B (en) 2010-11-21
US20050091471A1 (en) 2005-04-28
EP1680734B1 (en) 2016-12-21
CN101084484A (zh) 2007-12-05
WO2005043384A1 (en) 2005-05-12
US7401176B2 (en) 2008-07-15

Similar Documents

Publication Publication Date Title
US10776114B2 (en) Variable register and immediate field encoding in an instruction set architecture
US9870824B2 (en) Iterator register for structured memory
Anh et al. Index compression using 64‐bit words
Gordon-Ross et al. Exploiting fixed programs in embedded systems: A loop cache example
US7203935B2 (en) Hardware/software platform for rapid prototyping of code compression technologies
KR100965196B1 (ko) 스택 메모리로의 고속 액세스를 위한 방법 및 시스템
Rayside et al. Compact java binaries for embedded systems
Durov Telegram Open Network Virtual Machine
US20030086620A1 (en) System and method for split-stream dictionary program compression and just-in-time translation
US6968549B1 (en) Method and system for dynamically loading data structures into memory with global constant pool
US6886159B2 (en) Computer system, virtual machine, runtime representation of object, storage media and program transmission apparatus
US6934726B2 (en) Storing and retrieving of field descriptors in Java computing environments
JP2002182926A (ja) コンパイル方法及びコンピュータ読み取り可能な記録媒体
US6961933B2 (en) Representation of Java data types in virtual machines
EP4134828B1 (en) Address translation circuitry and method for performing address translations
Torosyan et al. Runtime and compiler support for HAMTs
CN109074257B (zh) 增强型低成本微控制器
Kumar et al. Code compression for performance enhancement of variable-length embedded processors
Wang et al. Code size reduction by compressing repeated instruction sequences
Neal Representing numeric data in 32 bits while preserving 64-bit precision
Lin et al. Compressing MIPS code by multiple operand dependencies
KR20050063818A (ko) 자바가상머신에서 배열 접근을 위한 통합 바이트 코드, 그 수행방법 및 매핑 방법
Pan et al. Efficient RTL-based code generation for specified DSP C-compiler

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140528

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150527

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160602

Year of fee payment: 7