KR101283469B1 - 프로세서 명령어의 메모리 액세스 방법 및 장치 - Google Patents

프로세서 명령어의 메모리 액세스 방법 및 장치 Download PDF

Info

Publication number
KR101283469B1
KR101283469B1 KR1020090081450A KR20090081450A KR101283469B1 KR 101283469 B1 KR101283469 B1 KR 101283469B1 KR 1020090081450 A KR1020090081450 A KR 1020090081450A KR 20090081450 A KR20090081450 A KR 20090081450A KR 101283469 B1 KR101283469 B1 KR 101283469B1
Authority
KR
South Korea
Prior art keywords
stack
local
offset
item
processor
Prior art date
Application number
KR1020090081450A
Other languages
English (en)
Other versions
KR20110023513A (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 KR1020090081450A priority Critical patent/KR101283469B1/ko
Priority to US12/832,313 priority patent/US8478970B2/en
Publication of KR20110023513A publication Critical patent/KR20110023513A/ko
Application granted granted Critical
Publication of KR101283469B1 publication Critical patent/KR101283469B1/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
    • 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/342Extension of operand address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

본 발명은 프로세서 명령어의 메모리 액세스 방법 및 장치에 관한 것으로서, 프로세서 명령어 내의 로컬변수를 나타내는 스택 포인터 오프셋으로부터 오프셋 값을 추출하는 스택 오프셋 추출부; 각 아이템의 활성화 여부를 나타내는 활성화 비트, 스택 포인터의 오프셋 값을 저장하는 오프셋 및 스택 포인터의 로컬변수 값을 저장하는 엘리먼트로 이루어진 다수의 아이템을 포함하는 로컬 스택 저장부; 상기 추출된 오프셋 값과 각 아이템의 오프셋 값을 비교하여 상기 로컬 스택 저장부에 상기 추출된 오프셋 값에 대응되는 아이템이 존재하는지 여부를 판단하는 오프셋 비교부; 및 상기 오프셋 비교부의 판단 결과에 따라 프로세서가 상기 로컬 스택 저장부 또는 캐쉬 메모리로 액세스하도록 제어하는 스택 액세스 제어부를 포함한다.
Figure R1020090081450
프로세서, 스택, 메모리, 액세스, 오프셋

Description

프로세서 명령어의 메모리 액세스 방법 및 장치{Method and Apparatus for Memory Access of Processor Instruction}
본 발명은 프로세서 구조에 관한 것으로, 더욱 상세하게는 프로세서가 로컬변수가 저장된 스택 메모리에 액세스할 때 메모리 액세스 빈도를 줄이기 위한 프로세서 명령어의 메모리 액세스 방법 및 장치에 관한 것이다.
본 발명은 지식경제부의 IT원천기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다[과제관리번호:2006-S-048-04, 과제명:오디오 비디오 신호처리용 임베디드 DSP Platform]
프로세서는 메모리 또는 디스크 등의 저장 장치에 저장된 명령어를 읽어들여 명령어에 인코딩된 동작에 따라서 피연산자(Operand)에 특정 연산을 수행하고, 이 결과를 다시 저장함으로써 특정 응용 영역(Application)을 위한 알고리즘을 실행하는 하드웨어 또는 IP(Information Provider)를 의미한다.
애플리케이션 알고리즘을 프로세서의 명령어로 컴파일(Compilation)하면 애플리케이션 알고리즘은 일련의 명령어로 변환된다. 이때, 알고리즘 상의 전역변수 (Global Variable)는 메인 메모리(Main Memory) 또는 캐시 메모리(Cache Memory) 상에 저장되는 반면, 함수의 로컬변수(Local Variable)는 스택(Stack)에 저장된다.
스택은 일반적으로 메인 메모리 또는 캐시 메모리 상에 할당된 일정한 크기의 메모리 영역으로서, 알고리즘에서 각 함수의 로컬변수는 함수 내에서만 사용되고, 함수가 종료되면 사용되지 않기 때문에 로컬변수를 저장하는 데 스택을 사용한다. 함수가 호출되면서 함수의 깊이(Function Depth)는 증가하게 되고, 스택도 성장하게 되며, 함수 호출이 완료되면 함수에서 사용된 로컬변수의 개수에 비례하여 스택도 줄어들게 된다.
한편, 프로세서가 적용되는 특정 애플리케이션의 알고리즘을 분석해 보면, 함수를 수행하는 중에 함수 내의 로컬변수가 상당수 액세스되는 현상이 발생한다. 게다가, 로컬변수가 실제로 저장되는 공간은 스택이 저장되는 메모리 공간인데, 함수의 호출과 함수의 종료가 이루어지는 동안 서로 다른 함수의 로컬변수들이 스택 영역에 저장됨으로써 실제적으로는 동일한 스택 영역을 반복적으로 메모리 액세스하게 되는 현상이 발생한다.
따라서, 프로세서의 에너지 소모 분포를 살펴보면 프로세서의 내부 로직에서 소모되는 에너지보다 비교적 많은 양의 에너지가 캐시 메모리 또는 메인 메모리를 액세스하는 데 소모되며, 이로 인해 캐시 메모리 또는 메인 메모리의 액세스 빈도를 증가시키는 문제점이 있었다.
본 발명은 상기한 바와 같은 문제점을 해결하기 위하여 안출된 것으로서, 프로세서 내에 일정 용량의 로컬 스택 저장부(Local Stack Storage)를 구성하여, 로컬변수 액세스를 위한 스택 메모리 액세스 빈도를 감소시키기 위한 프로세서 명령어의 메모리 액세스 방법 및 장치를 제공하는 데 그 목적이 있다.
이와 같은 목적을 달성하기 위한 본 발명은, 프로세서 명령어 내의 로컬변수를 나타내는 스택 포인터 오프셋으로부터 오프셋 값을 추출하는 스택 오프셋 추출부; 각 아이템의 활성화 여부를 나타내는 활성화 비트, 스택 포인터의 오프셋 값을 저장하는 오프셋 및 스택 포인터의 로컬변수 값을 저장하는 엘리먼트로 이루어진 다수의 아이템을 포함하는 로컬 스택 저장부; 상기 추출된 오프셋 값과 각 아이템의 오프셋 값을 비교하여 상기 로컬 스택 저장부에 상기 추출된 오프셋 값에 대응되는 아이템이 존재하는지 여부를 판단하는 오프셋 비교부; 및 상기 오프셋 비교부의 판단 결과에 따라 프로세서가 상기 로컬 스택 저장부 또는 캐쉬 메모리로 액세스하도록 제어하는 스택 액세스 제어부를 포함하는 프로세서 명령어의 메모리 액세스 장치를 제공한다.
본 발명은, 스택 오프셋 추출부가, 프로세서 명령어 내의 로컬변수를 나타내는 스택 포인터 오프셋으로부터 오프셋 값을 추출하는 오프셋 추출단계; 오프셋 비교부가, 상기 추출된 오프셋 값과 로컬 스택 저장부의 각 아이템의 오프셋 값을 비교하여 상기 로컬 스택 저장부에 상기 추출된 오프셋 값에 대응되는 아이템이 존재하는지 여부를 판단하는 오프셋 비교단계; 및 상기 오프셋 비교부의 판단 결과에 따라, 프로세서가, 상기 로컬 스택 저장부 또는 캐쉬 메모리로 액세스하여 로컬변수 값을 불러오는 로컬변수 로딩단계;를 포함하며, 여기서, 상기 로컬 스택 저장부는, 각 아이템의 활성화 여부를 나타내는 활성화 비트, 스택 포인터의 오프셋 값을 저장하는 오프셋 및 스택 포인터의 로컬변수 값을 저장하는 엘리먼트로 이루어진 다수의 아이템을 포함하는 것을 특징으로 하는 프로세서 명령어의 메모리 액세스 방법을 제공한다.
본 발명은, 스택 오프셋 추출부가, 프로세서 명령어 내의 로컬변수를 나타내는 스택 포인터 오프셋으로부터 오프셋 값을 추출하는 오프셋 추출단계; 오프셋 비교부가, 상기 추출된 오프셋 값과 로컬 스택 저장부의 각 아이템의 오프셋 값을 비교하여 상기 로컬 스택 저장부에 상기 추출된 오프셋 값에 대응되는 아이템이 존재하는지 여부를 판단하는 오프셋 비교단계; 및 상기 오프셋 비교부의 판단 결과에 따라, 프로세서가, 상기 로컬 스택 저장부 또는 캐쉬 메모리로 액세스하여 로컬변수 값을 저장하는 로컬변수 저장단계;를 포함하며, 여기서, 상기 로컬 스택 저장부는, 각 아이템의 활성화 여부를 나타내는 활성화 비트, 스택 포인터의 오프셋 값을 저장하는 오프셋 및 스택 포인터의 로컬변수 값을 저장하는 엘리먼트로 이루어진 다수의 아이템을 포함하는 것을 특징으로 하는 프로세서 명령어의 메모리 액세스 방법을 제공한다.
이상에서 설명한 바와 같이 본 발명에 의하면, 프로세서 내에 일정 용량의 로컬 스택 저장부를 구성하여, 로컬변수 액세스를 위한 스택 메모리 액세스 빈도를 감소시키기 위한 프로세서 명령어의 메모리 액세스 방법 및 장치를 제공함으로써, 프로세서의 에너지 소비를 절감하고, 프로세서의 성능을 향상시키는 효과가 있다.
이하, 본 발명의 일실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
도 1은 일반적인 프로세서 명령어의 필드 구조를 나타낸 도면이다.
프로세서 명령어의 타입에 따라 다양한 형태의 피연산자가 존재하지만, 본 발명의 일실시예에서는 대표적인 명령어 필드만을 도 1에 도시하였다.
도 1을 참조하면, 프로세서 명령어는 연산자를 의미하는 인코딩 필드(110), 좌측 피연산자(120), 우측 피연산자(130) 및 수행 결과 피연산자(140) 등을 포함한다.
좌측 피연산자(120), 우측 피연산자(130) 및 수행 결과 피연산자(140) 중 어느 것이든 로컬변수를 의미할 수 있다.
로컬변수를 의미하는 피연산자는 스택 포인터 오프셋(이하, 'SP(offset)'이라 칭함)(150)으로 나타낼 수 있다. SP(offset)에서 SP는 스택 포인터(Stack Pointer)를 나타내고, offset은 로컬변수가 위치한 로컬 메모리 어드레스에 대하여 SP로부터의 오프셋 값을 의미한다.
도 2는 본 발명의 일실시예에 따른 프로세서 명령어의 메모리 액세스 장치를 나타낸 구성도이다.
도 2를 참조하면, 본 발명에 따른 프로세서 명령어의 메모리 액세스 장치는 로컬 메모리 어드레스 추출부(Local Memory Address Extractor)(210), 스택 오프셋 추출부(Stack Offset Extractor)(220), 오프셋 비교부(Offset Comparator)(230), 로컬 스택 저장부(Local Stack Storage)(240), 로컬 스택 엘리먼트 추출부(Local Stack Element Extractor)(250), 스택 액세스 제어부(Stack Access Controller)(260) 등을 포함한다.
로컬 메모리 어드레스 추출부(210)는 SP(offset)으로부터 논리 메모리 어드레스를 계산한다. 즉, 로컬 메모리 어드레스 추출부(210)는 스택 포인터가 가지는 값에 오프셋 값을 부가하여 논리 메모리 어드레스를 계산한다.
스택 오프셋 추출부(220)는 SP(offset)으로부터 오프셋 값을 추출한다. 여기서, 추출된 오프셋 값은 오프셋 비교부(230)로 입력된다.
로컬 스택 저장부(240)는 일련의 레지스터 파일로서, 활성화 비트(242), 오프셋(244) 및 엘리먼트(246)로 이루어진 다수의 아이템(248)을 포함한다. 여기서, 활성화 비트(242)는 각 아이템의 활성화 여부를 나타내고, 오프셋(244)은 스택 포인터의 오프셋 값을 저장하며, 엘리먼트(246)는 스택 포인터의 로컬변수 값을 저장한다.
오프셋 비교부(230)는 프로세서 명령어가 읽기 명령일 경우, 스택 오프셋 추출부(220)를 이용하여 추출된 오프셋 값과 활성화 비트가 '1'인 아이템의 오프셋 값을 비교하여 로컬 스택 저장부(240)에 추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하는지 여부를 판단한다.
로컬 스택 저장부(240)에 추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하는 경우, 스택 액세스 제어부(260)는 로컬 스택 엘리먼트 추출부(250)를 이용하여 해당 아이템들의 엘리먼트 중 하나를 선택하고, 선택된 엘리먼트를 프로세서로 공급한다.
로컬 스택 저장부(240)에 추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하지 않는 경우, 스택 액세스 제어부(260)는 미리 계산된 논리 메모리 어드레스를 캐쉬 메모리 제어부(270)로 전송하여 프로세서가 캐쉬 메모리로 액세스하도록 한다. 이때, 로컬 스택 저장부(240) 내에 비활성화 상태의 아이템이 존재하는 경우, 스택 액세스 제어부(260)는 캐쉬 메모리로부터 읽어들인 로컬변수 값을 비활성화 상태의 아이템의 엘리먼트에 저장하고, 오프셋 값을 오프셋에 저장하며, 활성화 비트를 '0'에서 '1'로 전환한다.
오프셋 비교부(230)는 프로세서 명령어가 쓰기 명령일 경우, 스택 오프셋 추출부(220)를 이용하여 추출된 오프셋 값과 활성화 비트(242)가 '1'인 아이템의 오프셋 값을 비교하여 로컬 스택 저장부(240)에 추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하는지 여부를 판단한다.
로컬 스택 저장부(240)에 추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하는 경우, 스택 액세스 제어부(260)는 로컬 스택 엘리먼트 추출부(250)를 이용하여 프로세서 명령어의 연산 결과로 계산된 로컬변수 값을 해당 아이템들의 엘리먼트 중 하나에 저장한다.
오프셋 비교부(230)는 로컬 스택 저장부(240)에 추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하지 않는 경우, 로컬 스택 저장부(240)에 비활성화 상태의 아이템이 존재하는지 여부를 판단한다. 이때, 로컬 스택 저장부(240)에 비활성화 상태의 아이템이 존재하는 경우, 스택 액세스 제어부(260)는 프로세서 명령어의 연산 결과로 계산된 로컬변수 값을 비활성화 상태의 아이템의 엘리먼트에 저장하고, 오프셋 값을 오프셋에 저장하며, 활성화 비트를 '0'에서 '1'로 전환한다.
로컬 스택 저장부(240)에 비활성화 상태의 아이템이 존재하지 않는 경우, 스택 액세스 제어부(260)는 미리 계산된 논리 메모리 어드레스를 캐쉬 메모리 제어부(270)로 전송하여 프로세서 명령어의 연산 결과로 계산된 로컬변수 값을 캐쉬 메모리에 저장한다.
도 3은 본 발명의 일실시예에 따른 프로세서 명령어가 읽기 명령일 때, 프로세서 명령어의 메모리 액세스 방법을 나타낸 흐름도이다.
도 3을 참조하면, 초기에 프로세서는 초기 상태에서 정상 상태로 진입하고, 정상 상태 하에서 스택 포인터의 변화를 하드웨어로 감지하여 스택 포인터에 변화가 있는지 여부를 판단한다(S310).
스택 포인터에 변화가 있는 경우, 로컬 스택 저장부(240)에 저장된 모든 로컬변수 값을 캐쉬 메모리에 저장하고, 로컬 스택 저장부(240)의 모든 아이템들을 비활성화한다(S312).
스택 포인터에 변화가 없는 경우, 프로세서 명령어를 분석하여 SP(offset)을 추출한다(S320).
SP(offset)을 이용하여 논리 메모리 어드레스를 계산하고, SP(offset)으로부터 오프셋 값을 추출한다(S330). 즉, 스택 포인터가 가지는 값에 오프셋 값을 부가하여 논리 메모리 어드레스를 계산한다.
이어서, 로컬 스택 저장부(240)에 추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하는지 여부를 판단한다(S340). 즉, 추출된 오프셋 값과 활성화 비트(242)가 '1'인 아이템의 오프셋 값을 비교하여 추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하는지 여부를 판단한다.
추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하는 경우, 추출된 오프셋 값에 대응되는 활성화 상태의 아이템들 중 하나를 프로세서로 공급한다(S350). 즉, 해당 아이템들의 엘리먼트 중 하나를 선택하여 프로세서로 공급한다.
추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하지 않는 경우, 프로세서가 캐쉬 메모리로 액세스하도록 한다(S342). 즉, 미리 계산된 논리 메모리 어드레스를 캐쉬 메모리 제어부(270)로 전송하여 프로세서가 캐쉬 메모리로 액세스하도록 한다.
도 4는 본 발명의 일실시예에 따른 프로세서 명령어가 쓰기 명령일 때, 프로세서 명령어의 메모리 액세스 방법을 나타낸 흐름도이다.
도 4를 참조하면, 초기에 프로세서는 초기 상태에서 정상 상태로 진입하고, 정상 상태 하에서 스택 포인터의 변화를 하드웨어로 감지하여 스택 포인터에 변화가 있는지 여부를 판단한다(S410).
스택 포인터에 변화가 있는 경우, 로컬 스택 저장부(240)에 저장된 모든 로컬변수 값을 캐쉬 메모리에 저장하고, 로컬 스택 저장부(240)의 모든 아이템들을 비활성화한다(S412).
스택 포인터에 변화가 없는 경우, 프로세서 명령어를 분석하여 SP(offset)을 추출한다(S420).
SP(offset)을 이용하여 논리 메모리 어드레스를 계산하고, SP(offset)으로부터 오프셋 값을 추출한다(S430). 즉, 스택 포인터가 가지는 값에 오프셋 값을 부가하여 논리 메모리 어드레스를 계산한다.
이어서, 로컬 스택 저장부(240)에 추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하는지 여부를 판단한다(S440). 즉, 추출된 오프셋 값과 활성화 비트(242)가 '1'인 아이템의 오프셋 값을 비교하여 추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하는지 여부를 판단한다.
추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하는 경우, 추출된 오프셋 값에 대응되는 활성화 상태의 아이템들 중 하나를 프로세서로 공급한다(S442). 즉, 해당 아이템들의 엘리먼트 중 하나를 선택하여 프로세서로 공급한다.
추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하지 않는 경우, 로컬 스택 저장부(240)에 비활성화 상태의 아이템이 존재하는지 여부를 판단한다(S450). 즉, 로컬 스택 저장부(240)에 활성화 비트(242)가 '0'인 아이템이 존재하는지 여부를 판단한다.
로컬 스택 저장부(240)에 비활성화 상태의 아이템이 존재하는 경우, 프로세서 명령어의 연산 결과로 계산된 로컬변수 값을 비활성화 상태의 아이템의 엘리먼트에 저장하고, 오프셋 값을 오프셋에 저장하며, 활성화 비트를 '0'에서 '1'로 전환한다(S460).
로컬 스택 저장부(240)에 비활성화 상태의 아이템이 존재하지 않는 경우, 프로세서가 캐쉬 메모리로 액세스하도록 한다(S452). 즉, 미리 계산된 논리 메모리 어드레스를 캐쉬 메모리 제어부(270)로 전송하여 프로세서 명령어의 연산 결과로 계산된 로컬변수 값을 캐쉬 메모리에 저장한다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
도 1은 일반적인 프로세서 명령어의 필드 구조를 나타낸 도면,
도 2는 본 발명의 일실시예에 따른 프로세서 명령어의 메모리 액세스 장치를 나타낸 구성도,
도 3은 본 발명의 일실시예에 따른 프로세서 명령어가 읽기 명령일 때, 프로세서 명령어의 메모리 액세스 방법을 나타낸 흐름도,
도 4는 본 발명의 일실시예에 따른 프로세서 명령어가 쓰기 명령일 때, 프로세서 명령어의 메모리 액세스 방법을 나타낸 흐름도이다.
< 도면의 주요 부분에 대한 부호의 설명 >
210: 로컬 메모리 어드레스 추출부 220: 스택 오프셋 추출부
230: 오프셋 비교부 240: 로컬 스택 저장부
250: 로컬 스택 엘리먼트 추출부 260: 스택 액세스 제어부
270: 캐쉬 메모리 제어부

Claims (17)

  1. 프로세서 명령어 내의 로컬변수를 나타내는 스택 포인터 오프셋으로부터 오프셋 값을 추출하는 스택 오프셋 추출부;
    각 아이템의 활성화 여부를 나타내는 활성화 비트, 스택 포인터의 오프셋 값을 저장하는 오프셋 및 스택 포인터의 로컬변수 값을 저장하는 엘리먼트로 이루어진 다수의 아이템을 포함하는 로컬 스택 저장부;
    상기 추출된 오프셋 값과 각 아이템의 오프셋 값을 비교하여 상기 로컬 스택 저장부에 상기 추출된 오프셋 값에 대응되는 아이템이 존재하는지 여부를 판단하는 오프셋 비교부; 및
    상기 오프셋 비교부의 판단 결과에 따라 프로세서가 상기 로컬 스택 저장부 또는 캐쉬 메모리로 액세스하도록 제어하는 스택 액세스 제어부;
    를 포함하는 프로세서 명령어의 메모리 액세스 장치.
  2. 제1항에 있어서,
    상기 스택 액세스 제어부는 상기 프로세서 명령어가 읽기 명령일 때, 상기 로컬 스택 저장부에 상기 추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하는 경우, 로컬 스택 엘리먼트 추출부를 이용하여 해당 아이템들의 엘리먼트 중 하나를 선택하고, 선택된 엘리먼트를 상기 프로세서로 공급하는 것을 특징으로 하는 프로세서 명령어의 메모리 액세스 장치.
  3. 제2항에 있어서,
    상기 스택 액세스 제어부는 상기 로컬 스택 저장부에 상기 추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하지 않는 경우, 상기 프로세서가 상기 캐쉬 메모리로 액세스하도록 하는 것을 특징으로 하는 프로세서 명령어의 메모리 액세스 장치.
  4. 제3항에 있어서,
    상기 스택 액세스 제어부는 상기 로컬 스택 저장부에 비활성화 상태의 아이템이 존재하는 경우, 상기 캐쉬 메모리로부터 읽어들인 로컬변수 값을 상기 비활성화 상태의 아이템의 엘리먼트에 저장하고, 상기 비활성화 상태의 아이템을 활성화 상태로 전환하는 것을 특징으로 하는 프로세서 명령어의 메모리 액세스 장치.
  5. 제1항에 있어서,
    상기 스택 액세스 제어부는 상기 프로세서 명령어가 쓰기 명령일 때, 상기 로컬 스택 저장부에 상기 추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하는 경우, 로컬 스택 엘리먼트 추출부를 이용하여 상기 프로세서 명령어의 연산 결과로 계산된 로컬변수 값을 해당 아이템들의 엘리먼트 중 하나에 저장하는 것을 특징으로 하는 프로세서 명령어의 메모리 액세스 장치.
  6. 제5항에 있어서,
    상기 스택 액세스 제어부는 상기 로컬 스택 저장부에 상기 추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하지 않고 비활성화 상태의 아이템이 존재하는 경우, 상기 프로세서 명령어의 연산 결과로 계산된 로컬변수 값을 비활성화 상태의 아이템의 엘리먼트에 저장하고, 상기 비활성화 상태의 아이템을 활성화 상태로 전환하는 것을 특징으로 하는 프로세서 명령어의 메모리 액세스 장치.
  7. 제5항에 있어서,
    상기 스택 액세스 제어부는 상기 로컬 스택 저장부에 활성화 상태 및 비활성화 상태의 아이템 존재하지 않는 경우, 상기 프로세서 명령어의 연산 결과로 계산된 로컬변수 값을 상기 캐쉬 메모리에 저장하는 것을 특징으로 하는 프로세서 명령어의 메모리 액세스 장치.
  8. 스택 오프셋 추출부가, 프로세서 명령어 내의 로컬변수를 나타내는 스택 포인터 오프셋으로부터 오프셋 값을 추출하는 오프셋 추출단계;
    오프셋 비교부가, 상기 추출된 오프셋 값과 로컬 스택 저장부의 각 아이템의 오프셋 값을 비교하여 상기 로컬 스택 저장부에 상기 추출된 오프셋 값에 대응되는 아이템이 존재하는지 여부를 판단하는 오프셋 비교단계; 및
    상기 오프셋 비교부의 판단 결과에 따라, 프로세서가, 상기 로컬 스택 저장부 또는 캐쉬 메모리로 액세스하여 로컬변수 값을 불러오는 로컬변수 로딩단계;
    를 포함하며,
    여기서, 상기 로컬 스택 저장부는, 각 아이템의 활성화 여부를 나타내는 활성화 비트, 스택 포인터의 오프셋 값을 저장하는 오프셋 및 스택 포인터의 로컬변수 값을 저장하는 엘리먼트로 이루어진 다수의 아이템을 포함하는 것을 특징으로 하는 프로세서 명령어의 메모리 액세스 방법.
  9. 제8항에 있어서, 상기 로컬변수 로딩단계는,
    상기 추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하는 경우, 해당 아이템들 중 하나를 상기 프로세서로 공급하는 단계;
    를 포함하는 것을 특징으로 하는 프로세서 명령어의 메모리 액세스 방법.
  10. 제9항에 있어서,
    상기 추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하지 않는 경우, 상기 프로세서가 상기 캐쉬 메모리로 액세스하는 단계;
    를 더 포함하는 것을 특징으로 하는 프로세서 명령어의 메모리 액세스 방법.
  11. 제10항에 있어서, 상기 프로세서가 상기 캐쉬 메모리로 액세스하는 단계에서,
    비활성화 상태의 아이템이 존재하는 경우, 상기 캐쉬 메모리로부터 읽어들인 로컬변수 값을 상기 비활성화 상태의 아이템에 저장하고, 상기 비활성화 상태의 아이템을 활성화 상태로 전환하는 것을 특징으로 하는 프로세서 명령어의 메모리 액세스 방법.
  12. 제8항에 있어서,
    스택 포인터에 변화가 있는지 여부를 판단하는 단계; 및
    상기 스택 포인터에 변화가 있는 경우, 상기 로컬 스택 저장부에 저장된 모든 로컬변수 값을 상기 캐쉬 메모리에 저장하고, 상기 로컬 스택 저장부의 모든 아이템을 비활성화하는 단계;
    를 더 포함하는 것을 특징으로 하는 프로세서 명령어의 메모리 액세스 방법.
  13. 스택 오프셋 추출부가, 프로세서 명령어 내의 로컬변수를 나타내는 스택 포인터 오프셋으로부터 오프셋 값을 추출하는 오프셋 추출단계;
    오프셋 비교부가, 상기 추출된 오프셋 값과 로컬 스택 저장부의 각 아이템의 오프셋 값을 비교하여 상기 로컬 스택 저장부에 상기 추출된 오프셋 값에 대응되는 아이템이 존재하는지 여부를 판단하는 오프셋 비교단계; 및
    상기 오프셋 비교부의 판단 결과에 따라, 프로세서가, 상기 로컬 스택 저장부 또는 캐쉬 메모리로 액세스하여 로컬변수 값을 저장하는 로컬변수 저장단계;
    를 포함하며,
    여기서, 상기 로컬 스택 저장부는, 각 아이템의 활성화 여부를 나타내는 활성화 비트, 스택 포인터의 오프셋 값을 저장하는 오프셋 및 스택 포인터의 로컬변수 값을 저장하는 엘리먼트로 이루어진 다수의 아이템을 포함하는 것을 특징으로 하는 프로세서 명령어의 메모리 액세스 방법.
  14. 제13항에 있어서, 상기 로컬변수 저장단계는,
    상기 추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하는 경우, 상기 프로세서 명령어의 연산 결과로 계산된 로컬변수 값을 해당 아이템들 중 하나에 저장하는 단계;
    를 포함하는 것을 특징으로 하는 프로세서 명령어의 메모리 액세스 방법.
  15. 제14항에 있어서,
    상기 추출된 오프셋 값에 대응되는 활성화 상태의 아이템이 존재하지 않고 비활성화 상태의 아이템이 존재하는 경우, 상기 프로세서 명령어의 연산 결과로 계산된 로컬변수 값을 비활성화 상태의 아이템에 저장하고, 상기 비활성화 아이템을 활성화 상태로 전환하는 단계;
    를 더 포함하는 것을 특징으로 하는 프로세서 명령어의 메모리 액세스 방법.
  16. 제15항에 있어서,
    활성화 상태 및 비활성화 상태의 아이템이 존재하지 않는 경우, 상기 프로세서 명령어의 연산 결과로 계산된 로컬변수 값을 캐쉬 메모리에 저장하는 단계;
    를 더 포함하는 것을 특징으로 하는 프로세서 명령어의 메모리 액세스 방법.
  17. 제13항에 있어서,
    스택 포인터에 변화가 있는지 여부를 판단하는 단계; 및
    상기 스택 포인터에 변화가 있는 경우, 상기 로컬 스택 저장부에 저장된 모든 로컬변수 값을 상기 캐쉬 메모리에 저장하고, 상기 로컬 스택 저장부의 모든 아이템을 비활성화하는 단계;
    를 더 포함하는 것을 특징으로 하는 프로세서 명령어의 메모리 액세스 방법.
KR1020090081450A 2009-08-31 2009-08-31 프로세서 명령어의 메모리 액세스 방법 및 장치 KR101283469B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090081450A KR101283469B1 (ko) 2009-08-31 2009-08-31 프로세서 명령어의 메모리 액세스 방법 및 장치
US12/832,313 US8478970B2 (en) 2009-08-31 2010-07-08 Accessing value for local variable from function call stack upon offset matching with instruction extracted stack pointer offset or from cache

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090081450A KR101283469B1 (ko) 2009-08-31 2009-08-31 프로세서 명령어의 메모리 액세스 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20110023513A KR20110023513A (ko) 2011-03-08
KR101283469B1 true KR101283469B1 (ko) 2013-07-12

Family

ID=43626555

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090081450A KR101283469B1 (ko) 2009-08-31 2009-08-31 프로세서 명령어의 메모리 액세스 방법 및 장치

Country Status (2)

Country Link
US (1) US8478970B2 (ko)
KR (1) KR101283469B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120066305A (ko) * 2010-12-14 2012-06-22 한국전자통신연구원 비디오 움직임 예측 및 보상용 캐싱 장치 및 방법
GB2518022B (en) * 2014-01-17 2015-09-23 Imagination Tech Ltd Stack saved variable value prediction

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002157128A (ja) 2000-11-20 2002-05-31 Hitachi Ltd コンパイラのスタック領域割り付け方法及びコンパイラ
JP3785596B2 (ja) 2001-03-26 2006-06-14 関西ティー・エル・オー株式会社 関数実行方法、関数実行装置、コンピュータプログラム、及び記録媒体
KR20060120091A (ko) * 2003-10-24 2006-11-24 마이크로칩 테크놀로지 인코포레이티드 스택 메모리로의 고속 액세스를 위한 방법 및 시스템
JP2006323824A (ja) 2005-02-28 2006-11-30 Sony Computer Entertainment Inc プロセッサシステム内においてスタックを分離して管理する方法および装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4597044A (en) * 1982-10-14 1986-06-24 Honeywell Information Systems, Inc. Apparatus and method for providing a composite descriptor in a data processing system
US4928239A (en) * 1986-06-27 1990-05-22 Hewlett-Packard Company Cache memory with variable fetch and replacement schemes
US5930820A (en) * 1996-03-18 1999-07-27 Advanced Micro Devices, Inc. Data cache and method using a stack memory for storing stack data separate from cache line storage
US6289418B1 (en) * 1997-03-31 2001-09-11 Sun Microsystems, Inc. Address pipelined stack caching method
US7318164B2 (en) 2001-12-13 2008-01-08 International Business Machines Corporation Conserving energy in a data processing system by selectively powering down processors
US7260106B2 (en) 2002-01-24 2007-08-21 Intel Corporation Method and apparatus for managing energy usage of processors while executing protocol state machines
US7139877B2 (en) * 2003-01-16 2006-11-21 Ip-First, Llc Microprocessor and apparatus for performing speculative load operation from a stack memory cache
US7174469B2 (en) 2003-09-30 2007-02-06 International Business Machines Corporation Processor power and energy management
US7386739B2 (en) 2005-05-03 2008-06-10 International Business Machines Corporation Scheduling processor voltages and frequencies based on performance prediction and power constraints

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002157128A (ja) 2000-11-20 2002-05-31 Hitachi Ltd コンパイラのスタック領域割り付け方法及びコンパイラ
JP3785596B2 (ja) 2001-03-26 2006-06-14 関西ティー・エル・オー株式会社 関数実行方法、関数実行装置、コンピュータプログラム、及び記録媒体
KR20060120091A (ko) * 2003-10-24 2006-11-24 마이크로칩 테크놀로지 인코포레이티드 스택 메모리로의 고속 액세스를 위한 방법 및 시스템
JP2006323824A (ja) 2005-02-28 2006-11-30 Sony Computer Entertainment Inc プロセッサシステム内においてスタックを分離して管理する方法および装置

Also Published As

Publication number Publication date
US8478970B2 (en) 2013-07-02
US20110055526A1 (en) 2011-03-03
KR20110023513A (ko) 2011-03-08

Similar Documents

Publication Publication Date Title
EP2776971B1 (en) Methods, devices, and systems for detecting return-oriented programming exploits
TWI388983B (zh) 用於促進快閃記憶體系統之快速喚起的方法及系統
JP4837456B2 (ja) 情報処理装置
US10558569B2 (en) Cache controller for non-volatile memory
CN101111819B (zh) 用于页内程序计数器相对或绝对地址转移指令的转换后备缓冲器(tlb)访问抑制
US20120011401A1 (en) Dynamically modeling and selecting a checkpoint scheme based upon an application workload
US20070130450A1 (en) Unnecessary dynamic branch prediction elimination method for low-power
US6880074B2 (en) In-line code suppression
CN114328281B (zh) 固态硬盘异常掉电处理方法、装置、电子设备及介质
CN103543815A (zh) 信息处理设备和信息处理方法
WO2017196614A1 (en) Selective data persistence in computing systems
KR101283469B1 (ko) 프로세서 명령어의 메모리 액세스 방법 및 장치
US8521988B2 (en) Control system and control method of virtual memory
KR102441992B1 (ko) 분리 메모리 관리 방법 및 장치
KR20210043631A (ko) 페치 그룹의 순차에 대한 분기 예측 유닛에 대한 액세스 제어
KR20130000083A (ko) 명령어 큐 제어장치
US7836277B2 (en) Pre-tracing instructions for CGA coupled processor in inactive mode for execution upon switch to active mode and continuing pre-fetching cache miss instructions
KR101076815B1 (ko) 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템
US9857864B1 (en) Systems and methods for reducing power consumption in a memory architecture
US20200364052A1 (en) Branch penalty reduction using memory circuit
US9983932B2 (en) Pipeline processor and an equal model compensator method and apparatus to store the processing result
JP6477352B2 (ja) 演算処理装置、演算処理装置の制御方法および演算処理装置の制御プログラム
JP2011159184A (ja) 情報処理システム及びプログラム
US11550651B2 (en) Execution circuits using discardable state
JP2008293060A (ja) 半導体装置及び半導体装置の電圧の制御方法

Legal Events

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

Payment date: 20160628

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170627

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180627

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190625

Year of fee payment: 7