KR20080091481A - 효율적인 메모리 계층 관리 - Google Patents

효율적인 메모리 계층 관리 Download PDF

Info

Publication number
KR20080091481A
KR20080091481A KR1020087020033A KR20087020033A KR20080091481A KR 20080091481 A KR20080091481 A KR 20080091481A KR 1020087020033 A KR1020087020033 A KR 1020087020033A KR 20087020033 A KR20087020033 A KR 20087020033A KR 20080091481 A KR20080091481 A KR 20080091481A
Authority
KR
South Korea
Prior art keywords
instruction
cache
data
data cache
command
Prior art date
Application number
KR1020087020033A
Other languages
English (en)
Other versions
KR100955101B1 (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 KR20080091481A publication Critical patent/KR20080091481A/ko
Application granted granted Critical
Publication of KR100955101B1 publication Critical patent/KR100955101B1/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned cache, e.g. separate instruction and operand caches
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)
  • Communication Control (AREA)
  • Automatic Assembly (AREA)

Abstract

프로세서에서, 명령들 및 프로그램의 소정의 부분들이 프로그램의 실행에 앞서 데이터 캐시에 잔여 할 수도 있다. 하드웨어 및 소프트웨어 기술이, 프로세서의 성능을 향상시키기 위해 명령 캐시에서 누락을 가진 후 데이터 캐시에서 명령을 인출하기 위해 제공된다. 만일 명령이 명령 캐시에 존재하지 않으면, 명령 인출 어드레스는 데이터 인출 어드레스로서 데이터 캐시에 전달된다. 만일 제공된 명령 인출 어드레스에서 유효한 데이터가 데이터 캐시에 존재하지 않으면, 데이터는 실질적으로 명령이며, 데이터 캐시 엔트리는 인출되고 명령으로서 프로세서 컴플렉스에 제공된다. 추가의 히트는 명령 페이지 테이블에 포함되어 명령 캐시에서의 누락에 대해 데이터 캐시가 명령에 대해 체크되어야 함을 나타낸다.

Description

효율적인 메모리 계층 관리{EFFICIENT MEMORY HIERARCHY MANAGEMENT}
본 발명은 통상적으로 명령 캐시 및 데이터 캐시를 갖는 메모리로부터 명령들을 인출하는 기술에 관한 것이며, 특히, 명령이 존재할 경우 데이터 캐시로부터 명령을 직접 인출함으로써 명령 캐시에서 누락 후 명령을 인출하는 진보된 방식에 관한 것이다.
셀폰, 랩탑 컴퓨터, 개인용 디지털 보조기(PDA) 등과 같은 통상적인 휴대용 제품들은 통신 및 멀티미디어 프로그램과 같은 프로세서 실행 프로그램의 사용을 필요로 한다. 이러한 제품들에 대한 프로세싱 시스템은 명령 및 데이터를 저장하기 위한 프로세서 및 메모리 컴플렉스를 포함한다. 예를 들어, 명령 및 데이터는 예를 들어, 명령 캐시, 데이터 캐시 및 시스템 메모리를 포함하는 다수의 레벨의 캐시들로 구성된 계층 메모리에 저장될 수도 있다. 개별 명령 캐시 및 개별 데이터 캐시의 사용은 하버드 구조(Harvard architecture)으로 알려져 있다. 하버드 구조가 데이터 캐시로부터 명령 캐시를 분리하기 때문에, 명령들이 데이터 캐시에 저장될 때 문제가 발생할 수도 있다.
하버드 구조로 프로세싱하는 일반적인 시스템에서, 명령들이 데이터 캐시에 저장될 수도 있는 상황들이 발생할 수도 있다. 예를 들어, 만일 프로그램이 암호 화 또는 압축된 형태일 경우, 프로그램이 실행하기 전에 복호화/압축해제 되어야 한다. 복호화/압축해제 프로세스는 암호화/압축된 프로그램을 프로세싱하고 복호화/압축해제된 명령들을 시스템 메모리로 향하는 도중에, 예를 들어, 레벨1 데이터 캐시인 데이터 캐시에 데이터로서 저장하기 위해, 암호화/압축된 프로그램을 데이터로서 처리한다. 자바 바이트 코드들로부터 명령들을 생성하는 것은 또 다른 상황인데, 이 러한 상황에서, 명령들은 데이터 캐시를 포함하는 데이터 경로를 이용하여 시스템 메모리에 저장되는 데이터로서 초기에 다뤄진다. 프로그램 명령들이 데이터 캐시로서 취급되는 프로그램의 초기 상태는 메모리 계층 내에서 코히어런트 문제를 발생시키는데, 이는 적어도 일부의 프로그램이 프로그램의 실행에 앞서 데이터 캐시에 존재할 수도 있기 때문이다.
코히어런트 문제를 해결하기 위해, 데이터 캐시에서 프로그램 또는 프로그램 세그먼트들이 프로그램 제어하에 시스템 메모리로 옮겨지는 소프트웨어 방식이 통상적으로 선택되며, 명령 캐시는 통상적으로 소정의 오래된 프로그램 세그먼트들의 캐시를 삭제하기 위해 통상적으로 무효화되며, 이어 프로그램을 포함하는 명령들은 시스템 메모리로부터 인출된다. 데이터 캐시로부터 시스템 메모리로의 명령들의 이동 및 실행 이전에 시스템 메모리로부터의 명령들의 인출은, 프로세서 상에서 프로그램 실행에 앞서 데이터 캐시에 초기에 존재하는 명령들을 액세스하기 위해 발생되어야 하는 프로세싱 시간 오버헤드로 인해 프로세서의 성능을 감소시키는 몇몇 사이클들을 거칠 수도 있다.
몇몇 특징 중에서, 본 발명은 데이터 캐시에서 명령들을 처리하는 오버헤드가 프로세서의 성능을 제한하고, 가능하게는 달성될 서비스의 품질을 제한할 수도 있음을 인식하고 있다. 본 발명은 또한 데이터 캐시에 존재하는 명령들을 액세스하는 것이 바람직할 수도 있음을 인식하고 있다.
더욱이, 본 발명은, 명령이 명령 캐시에서 발견되지 않는 명령 캐시 누락, 및 명령이 데이터 캐시에 존재할 것으로 결정된 때, 데이터 캐시로부터 명령을 직접 인출하기 위한 장치들, 방법들 및 컴퓨터 판독 가능 매체를 개시하고 있다. 데이터 캐시로부터 직접 명령을 인출함으로써, 명령 캐시 누락 이후, 프로세서 성능은 개선될 수도 있다.
이를 위해, 본 발명의 실시예는 명령 캐시와 분리된 데이터 캐시에서 명령을 탐색하는 방법을 포함한다. 이러한 방법에서, 명령 인출 어드레스에서의 명령을 위해 인출 시도가 명령 캐시에서 누락되었음이 결정된다. 명령 인출 어드레스는 데이터 인출 어드레스로 변환된다. 또한, 데이터 캐시에서 인출 시도는 변환된 데이터 인출 어드레스에서 명령을 위해 행해진다.
본 발명의 다른 실시예는 명령들을 인출하기 위해 프로세서 컴플렉스를 어드레싱한다. 프로세서 컴플렉스는 명령 캐시, 데이터 캐시 및 제1 선택자를 적절하게 포함한다. 제1 선택자는 명령 인출 어드레스 또는 데이터 인출 어드레스를 선택하기 위해 사용된다. 선택된 인출 어드레스는 데이터 캐시에 적용되며, 그로 인해 명령들 또는 데이터는 데이터 캐시로부터 선택적으로 인출될 수도 있다.
본 발명의 개념의 더욱 완전한 이해는, 첨부된 도면을 참조하여 이하에서 개시된다.
도1은 개시가 사용될 수도 있는 실시예에서 예로든 무선 통신 시스템의 블록도이다.
도2는 본 발명의 실시예에 따라 명령 인출의 메모리 효율적인 동작을 위해 데이터 캐시 동작이 적용되는 프로세서 및 메모리 컴플렉스의 블록도이다.
도3은 본 발명에 따라 데이터 캐시에 데이터로서 초기에 저장된 명령과 관련한 누락 조절 오버헤드를 감소시키기 위해 데이터 캐시에 저장된 명령을 인출하는 방법의 예를 나타낸 흐름도이다.
도4는 데이터 캐시 동작이 본 발명에 따른 효율적인 명령 인출에 적용되는 명령 페이지 테이블을 포함하는 프로세서 및 메모리 컴플렉스의 기능 블록도이다.
도5는 본 발명에 따라 데이터 캐시에 저장된 명령을 인출하는 방법의 예를 나타낸 흐름도이다.
도6은 본 발명에 따라 데이터 캐시에 저장되고 데이터로서 생성된 실행 코드에 대한 방법의 예를 나타낸 흐름도이다.
본 발명의 특징은 개시된 실시예에서 첨부한 도면에 따라 더욱 완전하게 이해될 것이다. 그러나 본 발명의 실시예는 다양한 방식으로 실시될 수도 있으며, 설명된 실시예에 한정되지 않는다. 오히려, 이러한 실시예들은 이러한 개시가 전체적으로 완전하게 되도록 제공되며, 기술 분야의 당업자기 본 발명의 사상을 완전 히 이해하게 할 것이다.
본 발명은 방법, 시스템 또는 컴퓨터 프로그램 제품으로 개시될 수도 있다. 결론적으로, 개시된 본 발명의 개념은 하드웨어 실시예, 소프트웨어 실시예 또는 소프트웨어 및 하드웨어 특징을 결합한 실시예의 행태로 설명될 수도 있다. 더욱이, 본 발명의 개념은 매체에 실시된 컴퓨터 사용 가능 프로그램 코드를 갖는 컴퓨터 이용가능 저장 매체 상에서 컴퓨터 프로그램 제품의 형태를 취할 수도 있다. 하드 디스크, CD-ROM, 광학 저장 장치, 플래시 메모리 또는 자기 저장 장치를 포함하는 소정의 적절한 컴퓨터 판독 가능 매체가 사용될 수도 있다.
컴파일링되고, 어셈블링되고, 프로세서에 로딩될 수도 있는 컴퓨터 프로그램 코드는 본 발명의 기술에 따라, 초기에는 C, C++, 네이티브 어셈블리, JAVA®, Smalltalk, JavaScript®, Visual Basic®, TSQL, Perl 또는 다양한 다른 프로그래밍 언어로 기록될 수도 있다. 프로그램 코드 또는 컴퓨터 판독 가능 매체는, 포맷이 프로세서에 의해 이해될 수 있는 목적 코드와 같은 기계 언어 코드로 언급된다. 본 발명의 소프트웨어 실시예는 특정 프로그램밍 언어에 다른 구현에 의존하지 않는다. 프로그래밍 코드가 실행될 때, 프로그램 코드에 대한 동작 환경을 한정하는 새로운 태스크가 수정된다.
도1은 본 발명의 실시예가 사용될 수도 있는 무선 통신 시스템(100)의 예를 도시한다. 설명을 위해, 도1은 3개의 원격 유닛(120, 130 및 150) 및 두 개의 기지국(140)을 도시한다. 통상의 무선 통신 시스템들은 원격 유닛들 및 기지국들을 가질 수도 있음을 이해할 것이다. 원격 유닛들(120, 130 및 150)은 하드웨어 컴포 넌트, 소프트웨어 컴포넌트, 또는 컴포넌트(125A, 125C 및 125B)들에 의해 각각 표현된 바와 같이 이 둘 모두를 포함하는데, 이들은 이하의 설명된 실시예를 실행하기 위해 적용된다. 도1은 기지국(140)으로부터 원격 유닛들(120, 130 및 150)로의 순방향 링크 신호들(180) 및 원격 유닛들(120, 130 및 150)로부터 기지국들(140)로의 역방향 링크 신호들(190)을 나타낸다.
도1에서, 원격 유닛(120)은 모바일 전화로서 도시되며, 원격 유닛(130)은 휴대용 컴퓨터로 도시되며, 원격 유닛(150)은 무선 로컬 루프 시스템에서 고정 위치 원격국으로서 도시된다. 예를 들어, 원격 유닛들은 셀폰들, 휴대용 개인용 통신 시스템(PCS) 유닛들, 개인용 데이터 보조기들과 같은 휴대용 데이터 유닛들, 또는 미터 판독 설비와 같은 고정 위치 데이터 유닛들일 수도 있다. 비록 도1이 본 발명의 기술에 따른 원격 유닛들을 도시하지만, 개시는 이러한 설명된 유닛들의 예에 한정되지 않는다. 상기 개시는 명령 캐시, 데이터 캐시 및 시스템 메모리를 갖는 프로세서를 가진 소정의 장치에서 적절하게 실행될 수도 있다.
도2는 통상의 데이터 캐시 동작이 이하에서 추가로 설명될 더욱 효율적인 명령 인출에 적용되는 프로세서 및 메모리 컴플렉스(200)의 기능 블록도이다. 프로세서 및 메모리 컴플렉스(200)는 프로세서(202), 레벨1(L1) 명령 캐시(204), L1 명령 캐시 제어 유닛(206), L1 데이터 캐시(208), L1 데이터 캐시 제어 유닛(210), 제어 섹션(211), 및 시스템 메모리(211)를 포함한다. L1 명령 캐시 제어 유닛(206)은 일 세트의 연관 케이블에서 사용될 수 있듯이, 명령 태그 매칭을 위해 명령 콘텐츠 어드레싱 가능한 메모리를 포함할 수도 있다. 제어 섹션(211)은 멀티 플렉싱 엘리먼트(220, 226 및 234), 게이팅 장치(232 및 238), 및 인버터(240)를 포함한다. 프로세서 컴플렉스에 접속할 수 있는 주변 장치들은 본 발명의 개시의 논의의 명확화를 위해 도시되지 않는다. 프로세서 및 메모리 컴플렉스(200)는 시스템 메모리(212)에 저장된 프로그램 코드를 실행하기 위해 컴포넌트(125A-C)에서 적절하게 사용될 수도 있다.
프로세서 및 메모리 컴플렉스(200)에서 명령을 인출하기 위해, 프로세서(202)는 원하는 명령의 명령 인출 어드레스(IA)(214)를 생성하며, 명령 인출 어드레스를 L1 명령 캐시 제어 유닛(206)에 전달한다. L1 명령 캐시 제어 유닛(206)은 명령이 L1 명령 캐시(204)에 존재하는 지를 알기 위해 체크한다. 이러한 체크는 예를 들어, 제공된 명령 인출 어드레스와의 부합에 대한 연관 탐색에서 내부 콘텐츠 어드레싱 가능 메모리(CAM)의 사용을 통해 달성된다. 명령이 존재할 경우, 부합이 발생하고 L1 명령 캐시 제어 유닛(206)은 명령이 명령 캐시(204)에 존재함을 표시한다. 만일 명령이 존재하지 않으면 어떠한 부합도 CAM 연관 탐색에서 발견되지 않을 것이며, L1 명령 캐시 제어 유닛(206)은 명령이 명령 캐시(204)에 존재하지 않는다고 표시한다.
만일 명령이 존재하면, 명령 인출 어드레스에서의 명령은 명령 캐시(204)로부터 선택된다. 이어 명령은 멀티플렉싱 엘리먼트(226)를 통해 프로세서(202)로 명령 출력 버스(216) 상에서 전달된다.
만일 명령이 명령 캐시에 존재하지 않으면, 명령 캐시 누락 신호(I$M=1)(218)는 활성으로 설정되어 누락이 발생했음을 나타낸다. 명령 캐시에서 누락을 검출한 때, 프로세서 및 메모리 컴플렉스(200)는 L1 데이터 캐시(208)로부터 원하는 명령을 인출하도록 시도한다. 이를 위해, 멀티플렉싱 엘리먼트(220)는 명령 인출 어드레스(214)를 선택하기 위해 누락 신호(I$M=1)에 의해 이네이블된다. 이어 명령 인출 어드레스(214)는 Daddress 버스(222)로 멀티플렉싱 엘리먼트(220)를 통과하며 데이터 인출 어드레스로서 L1 데이터 캐시 제어 유닛(210)으로 전달된다. 프로세서 및 메모리 컴플렉스(200)는 시스템의 논리적 뷰를 나타내는 것으로 이해되는데, 이는 예를 들어, Daddress 버스(222) 상으로 명령 인출 어드레스(214)의 애플리케이션이 Daddress 버스(222)가 획득되기에 앞서 중재 또는 대기 기간을 필요로 할 수도 있기 때문이다. 프로세서 생성 데이터 어드레스(223)를 사용하여 명령 인출 어드레스(214)를 멀티플렉싱하기 위해 취해진 방식은 변화될 수도 있으며 명령 캐시 및 데이터 캐시 설계에서 취해진 특정 방식에 의존한다.
L1 데이터 캐시 제어 유닛(210)은 예를 들어, 제공된 명령 인출 어드레스에 대한 내부 연관 탐색을 통해 제공된 명령 인출 어드레스에서 L1 데이터 캐시(208)에 히트가 존재하는 지를 체크한다. 히트는 제공된 명령 인출 어드레스에 존재하는 데이터가 있음을 나타낸다. 이러한 데이터는 실질적으로 명령이며 데이터 캐시 엔트리는 L1 데이터 캐시(208)로부터 인출되고 데이터 출력 버스(224) 상에 위치된다. 명령으로서 L1 데이터 캐시(208)로부터 인출된 데이터를 제공하기 위해, 멀티플렉싱 엘리먼트(226)가 적절하게 사용될 수도 있다. 데이터 출력 버스(224)는, 명령 인출 어드레스에서 데이터 캐시의 히트 이전의 명령 캐시에서의 누락이 존재할 때, 데이터 캐시로부터 인출된 데이터를 프로세서의 명령 버스(228)에 배치시키 는 멀티플렉싱 엘리먼트(228)에 의해 선택된다. 액티브 하이인 히트 신호(D$H=1)(230)에 의해 표시된 동일한 명령 인출 어드레스에서 데이터 캐시의 히트에 앞서, 액티브 하이인 누락 신호(I$M=1)(218)에 의해 표시되는 명령 캐시에서의 누락의 발생은 AND 게이트(232)에 의해 논리적으로 표시된다. AND 게이트(232)의 출력은 멀티플렉싱 엘리먼트(226)에 대한 선택 신호(233)이다. 데이터 캐시에서 발견된 명령은 또한 AND 게이트(232)에 의해 국부적으로 제공된 선택 신호(233)를 이용하여 엘리먼트(234)를 멀티플렉싱함으로써 명령 캐시(204)로 로팅하기 위해 멀티플렉싱된다. 데이터 출력 버스(224)가 프로세서로 명령을 전달하는 동안, 프로세서의 판독 데이터 입력(136)은 선택 신호(233)의 반전을 제공하기 위해 인버터(240)를 이용하여 AND 게이트(238)에 의해 비활성화된다.
만일 제공된 명령 인출 어드레스에서 데이터 캐시에 누락이 존재한다고 결정된 경우, 명령은 데이터 캐시에 있지 않으며, 명령은 시스템 메모리(212)로부터 인출된다. 히트 신호(D$H=1)(230)는, 데이터 캐시에 명령을 위치시키기 위한 시도에서 누락이 발생했음을 자신의 비활성 상태에 의해 나타내기 위해 L1 명령 캐시 제어 유닛(206)에 또한 전달된다. 다른 시그널링 수단이 데이터 캐시(208)에 명령을 위치시키기 위한 시도에서 누락이 발생했음을 나타내기 위해 사용될 수도 있다. 명령이 명령 캐시(204)에 있지 않고 데이터 캐시(208)에 있지 않기 때문에, 명령은 시스템 메모리(212)로부터 인출되어야 한다. 일단 명령이 시스템 메모리(212)로부터 획득되면, 이는 프로세서(202)로 전달된다. 명령 캐시 또는 데이터 캐시에서의 누락으로 인해 명령을 제공하고, 데이터 캐시에서의 누락으로 인해 데이터를 제공 하는 시스템 메모리로부터의 경로들은 본 발명을 명확하게 하기 위해 도시되지 않았음을 이해해야 한다.
도3은 데이터 캐시에 데이터로서 초기에 저장된 명령의 조절과 공통적으로 관련된 오버헤드를 최소화하기 위해 명령 캐시에서의 누락을 가진 후 데이터 캐시에서 명령을 직접 인출하는 방법(300)의 흐름도의 예이다. 도3의 단계들과 도2의 구성 요소들 사이의 관계의 예는 프로세서 및 메모리 컴플렉스(200)로부터의 엘리먼트들이 방법(300)의 단계들을 실행하기 위해 어떻게 협력하는지를 설명함으로써 표시된다.
명령을 인출하기 위해, 명령 인출 어드레스는 단계(304)에서 생성된다. 예를 들어, 프로세서(202)와 같은 프로세서는 원하는 명령의 명령 인출 어드레스를 생성하고 명령 인출 어드레스(214)를 L1 명령 캐시 제어기(206)로 전달한다. 단계(308)에서, 명령 캐시 히트 또는 누락이 존재하는 지가 결정된다. 예를 들어, L1 명령 캐시 제어기(206)는 명령이 명령 캐시(204)에 존재하는 지를 체크한다. 만일 명령이 존재하면, 그 존재는 히트로서 표시된다. 만일 명령이 존재하면, 상기 방법(300)은 단계(312)로 진행하며, 명령 인출 어드레스에서의 명령이 선택된다. 단계(316)에서, 명령은 프로세서로 전달된다. 예를 들어, 선택된 명령은 명령 출력 버스(216)에 위치되며, 멀티플렉싱 엘리먼트(226)를 통해 프로세서(202)로 전달된다.
만일 단계(308)에서 결정된 대로 명령이 명령 캐시에 존재하지 않으면, 누락이 발생했다는 표시가 제시되며 단계(320)에서 데이터 캐시로부터 명령을 인출하기 위한 시도가 행해진다. 예를 들어, 명령 인출 어드레스(214)는 멀티플렉싱 엘리먼트(220)를 통해 데이터 인출 어드레스(222)로서 데이터 캐시(208)로 전달된다. 단계(324)에서, 제공된 명령 인출 어드레스에서 유효한 데이터가 존재하는 지를 알기 위해 예를 들어, L1 데이터 캐시 제어기(210)에 의해 체크가 행해진다. 만일 제공된 명령 인출 어드레스에서 데이터 캐시에 유효한 데이터가 있으면, 데이터는 실질적으로 명령이며 데이터 캐시 엔트리는 단계(328)에서 인출된다. 단계(316)에서, 데이터 캐시로부터 인출된 데이터는 명령으로서 프로세서에 전달된다. 예를 들어, 데이터 캐시(208)로부터 데이터 출력 버스(224)를 통해 인출된 데이터는 멀티플렉싱 엘리먼트(226)를 통해 전달되고 명령으로서 명령 버스(228)를 통해 프로세서로 제공된다.
단계(324)에서, 만일 제공된 명령 인출 어드레스에서 데이터 캐시에 누락이 존재했다면, 명령은 데이터 캐시에 있지 않으며, 단계(332)에서 명령은 시스템 메모리로부터 인출된다. 예를 들어, 데이터 캐시 히트 신호(D$H=1)(230)는 L1 명령 캐시 제어기 유닛(206)으로 전달되어 데이터 캐시(208)에 명령을 위치시키기 위한 시도에서 누락이 발생했음을 비활성 상태로 표시한다. 명령이 명령 캐시(204)에 있지 않고 데이터 캐시(208)에 있지 않기 때문에, 명령은 시스템 메모리(212)로부터 인출되어야 한다. 일단 명령이 시스템 메모리(212)로부터 획득되면, 단계(316)에 나타낸 바와 같이, 명령은 프로세서(202)로 전달된다.
도4는 표준 데이터 캐시 동작이 본 발명에 따라 명령 인출의 유효한 동작을 위해 적용되는 명령 페이지를 포함하는 프로세서 및 메모리 컴플렉스(400)의 블록 도이다. 프로세서 및 메모리 컴플렉스(400)는 프로세서(402), 레벨1(L1) 명령 캐시(404), 명렬 메모리 관리 유닛(IMMU) 및 캐시 제어(IMMU/$Control)(406), 제어 섹션(411), 및 메모리 계층(412)을 포함한다. (IMMU/$Control)(406)은 예를 들어, 가상-물리 명령 어드레스 변환 프로세스를 포함한다. 제어 섹션(411)은 멀티플렉싱 엘리먼트(432, 438 및 448), 게이팅 장치(428, 444 및 452), 및 인버터(454)를 포함한다. 프로세서 컴플렉스에 연결될 수도 있는 주변 장치들은 본 발명의 논의를 명확하게 하기 위해 도시되지 않는다. 프로세서 및 메모리 컴플렉스(400)는 시스템 메모리(412)에 저장된 프로그램 코드를 실행하기 위해 컴포넌트들(125A-C)에서 적절하게 사용될 수도 있다.
명령 캐시는 명령 캐시의 성능을 향상시키기 위해 명령 페이지 테이블을 포함하는 변환 룩어사이드 버퍼(TLB)를 사용할 수도 있다. 명령 페이지 테이블은 예를 들어, 가상 페이지 번호들 및 각각의 페이지 번호 엔트리와 관련된 추가의 정보와 관련한 물리적 페이지 번호들의 리스트를 갖는다. 명령 페이지 테이블 엔트리는, 명령 어드레스 영역의 메모리의 페이지가 명령 캐시 또는 데이터 캐시에 로딩될 때 생성된다. 메모리의 페이지의 로딩은 운영 체계(OS)의 감독하에 발생할 수도 있다. 동작에서, 명령 페이지 테이블은 TLB에 제공된 가상 페이지 번호와의 부합에 대해 검사된다. 명령 페이지 테이블을 갖는 TLB가 명령 MMU 및 캐시 제어(406)의 일부로서 개시된 반면, 택일적인 방식이 사용될 수 있음이 이해될 것이다.
프로세서 및 메모리 컴플렉스(400)에서 명령을 인출하기 위해, 프로세 서(402)는 원하는 명령을 위해 명령 인출 어드레스(IA)(414)를생성하고 명령 인출 어드레스를 IMMU/$Control(406)에 전달한다. IMMU/$Control(406)에 위치된 페이지 테이블(416)과 같은 명령 페이지 테이블의 적절한 엔트리는 IA(414)의 일부인 제공된 페이지 번호에 기초하여 선택된다. 선택된 페이지 테이블 엔트리에 기초한 명령 어드레스는, L1 명령 캐시(404)에 초기에 제공된 명령 어드레스(GA)를 생성하는 IA(414)의 일부이기도 한 페이지 어드레스와 결합된다. 페이지 테이블(416)로부터 선택된 엔트리는 엔트리와 함께 저장된 추가의 정보를 포함한다. 각각의 페이지 테이블 엔트리와 함께 저장될 수도 있는 정보의 추가 비트들 중 하나는 D 비트(420)로 표시된 체크 데이터 캐시 속성이다.
명령 페이지 테이블에서 엔트리가 명령들의 페이지를 데이터 캐시로 로딩함으로써 생성된 때, 또는 프로세싱 동안 데이터 캐시에서 페이지에 저장된 명령들을 생성할 때, D 비트는 1로 설정된다. D 비트는 통상적으로 페이지의 콘텐츠들이 데이터 및 명령들로 사용될 수도 있음을 나타내기 위해 운영 체계(OS)에 의해 설정된다. 예로든 시나리오에서, 명령들로서 사용될 데이터를 생성하는 프로그램은 적절한 페이지들이 관련된 페이지 테이블 엔트리들에서 D 비트를 설정함으로써 마킹되는 것을 요청하기 위해 OS를 호출한다. 다른 시나리오에서, 프로그램은 이미 D 비트 설정된 페이지들을 OS로부터 요청할 수도 있다. D 비트는 명백하게 제거될 필요가 반드시 있는 것은 아니다. 만일 프로그램이 적절한 D 비트 또는 D 비트들이 설정되게 함으로써 데이터 캐시가 명령들을 포함할 수도 있음을 규정하면, 상기 규정은 프로그램의 수명 동안 유효할 수도 있다. 이어 D 비트 또는 D 비트들은 페이 지 테이블이 상이한 프로세스 동안 사용될 때 이후에 제거될 수도 있다.
IMMU/$Control(406)은 명령이 명령 캐시(404)에 존재하는 지를 체크한다. 마일 명령이 존재하면, 이러한 존재는 히트로서 표시된다. 명령이 존재하면, 명령 인출 어드레스에서의 명령은 명령 캐시(404)로부터 선택된다. 이어 명령은 명령 출력 버스(422) 상에서 멀티플렉싱 엘리먼트(438)를 통해 프로세서(402)로 전달된다. 명령이 존재하지 않으면, 표시는 누락이 발생했다는 표시가 주어지고, 명령 캐시 누락 신호(I$M=1)(424)는 활성으로 설정되어 누락이 발생했음을 나타낸다.
"1"로 설정될 선택된 D 비트와 관련하여 명령 캐시에서의 누락을 검출할 때, 프로세서 및 메모리 컴플렉스(400)는 L1 데이터 캐시(408)로부터 원하는 명령의 인출을 시도한다. 이러한 시도는 예를 들어, 게이팅 함수에서 선택된 D 비트를 사용함으로써 적절하게 달성될 수도 있다. 선택된 페이지 테이블 엔트리로부터의 D 비트(420)는 D 비트 신호(426)로서 출력된다. D 비트 신호(426)는 예를 들어, AND 게이트(428)에 의해 누락 표시(1$M=1)(424)와 AND 연산된다. 이어 AND 게이트(428)의 출력(430)은 생성된 명령 어드레스(GA)(418) 또는 프로세서(402)로부터의 데이터 어드레스(33)를 선택하기 위해 멀티플렉싱 엘리먼트(432)에 의해 사용된다. 선택될 때, GA(418)는 멀티플렉싱 엘리먼트(432)를 통해 D어드레스 버스(DA)(434)로 전달되고 데이터 MMU 및 캐시 제어기(410)로 전달되어 명령이 데이터 인출 어드레스의 데이터 캐시(408)에 존재하는 지를 결정한다. 프로세서 및 메모리 컴플렉스(400)는 시스템의 로컬 뷰를 나타내는데, 그 이유는 예를 들어, D어드레스 버스(434)로 생성된 명령 어드레스(418)를 적용하는 것이 D어드레스 버 스(434)로의 액세스가 획득될 수 있기 전에 중재 또는 대기 기간을 필요로 하기 때문임을 이해해야 한다. 생성된 명령 어드레스(418)를 프로세서 생성된 데이터 어드레스(433)오 멀티플렉싱하도록 취해진 방식은 변화될 수도 있으며, 명령 캐시 및 데이터 캐시 설계에서 취해진 특정 방식에 의존한다.
이어 데이터 캐시는 제공된 명령 인출 어드레스에 유효 데이터가 존재하는지를 체크한다. 만일 유효 데이터가 제공된 명령 인출 어드레스에 존재하면, 데이터는 실질적으로 명령이며 데이터 캐시 엔트리는 L1 데이터 캐시(408)로부터 인출되고 데이터 출력 버스(436)에 배치된다. 명령으로서 데이터 캐시 엔트리를 프로세서에 제공하기 위해, 멀티플렉싱 엘리먼트(438)가 예를 들어 사용된다. 멀티플렉싱 엘리먼트(438)는 명령 캐시에 누락이 있을 때 데이터 출력 버스(436)를 프로세서의 명령 버스(440)로 이네이블되며, 선택된 D 비트가 명령 인출 어드레스의 데이터 캐시에서 히트 이전에 "1"로 설정된다. 액티브 하이인 누락 신호(T$M=1)(424)에 의해 표시된 명령 캐시에서 누락의 발생, 및 액티브 하이인 히트 신호(D$H=1)(442)에 의해 표시된, 생성된 명령 어드레스의 데이터 캐시에서 히트 이전에 "1"로 설정된 D 비트 신호가 AND 게이트(444)에 의해 논리적으로 표현된다. AND 게이트(444) 출력은 멀티플렉싱 엘리먼트(438)에 대한 선택 신호(446)이다. 데이터 출력 버스 상의 명령은 또한 섹션 신호(446)를 이용하는 멀티플렉싱 엘리먼트에 의해 명령 캐시로 로딩하기 위해 멀티플렉싱된다. L1 데이터 캐시 데이터 출력 버스(436)는 명령을 프로세서(402)로 전달하는 반면, 데이터 출력 버스(436)는 인버터(454)에 의해 제공된 선택 신호(446)의 반전을 이용하여 AND 게이트(452)에 의해 프로세서의 판독 데이터 입력(450)에 대해 전달을 위해 게이팅 오프된다.
만일 제공된 명령 인출 어드레스에서 데이터 캐시에 누락이 존재한다고 결정되었다면, 명령은 데이터 캐시에 있지 않으며, 명령은 시스템 메모리(412)로부터 인출된다. 히트 신호(D$H=1)(442)는 또한 데이터 캐시(408)에 명령을 위치시키기 위한 시도에서 누락이 발생했음을 비활성 상태로 표시하기 위해 IMMU/$Control(406)로 전달된다. 일단 명령이 시스템 메모리(412)로부터 획득되면, 명령은 프로세서(402)로 전달된다. 명령 캐시 또는 데이터 캐시에서 누락으로 인해 명령을 제공하고 데이터 캐시에서 누락으로 인해 데이터를 제공하는 메모리 계층으로부터의 경로들이 도시되지 않지만, 접속 방식의 소정의 다양한 변화가 사용된 애플리케이션 및 프로세서와 일치하여 사용될 수도 있다.
도5는 명령 캐시에서 누락을 가진 후 데이터 캐시에서 명령을 인출하기 위한 방법의 흐름도이며, 체크 데이터 캐시 속성은 데이터 캐시가 명령에 대해 체크되어야 함을 나타낸다. 도5 및 도4의 엘리먼트들 사이의 관계들의 예는 도5의 방법(500)의 단계를 실행하기 위해 적절히 사용될 수도 있는 프로세서 및 메모리 컴플렉스(400)로부터 엘리먼트들의 예를 참조하여 표시된다.
명령을 인출하기 위해, 원하는 명령에 대한 명령 인출 어드레스가 단계(502)에서 생성된다. 예를 들어, 프로세서(402)와 같은 프로세서는 명령 인출 어드레스를 생성하고 명령 인출 어드레스(414)를 L1 명령 캐시 제어기(406)로 전달한다. 명령 인출 어드레스는 페이지 번호(504) 및 페이지 어드레스(506)로 구성된 가상 어드레스일 수도 있다. 단계(508)에서, 명령 페이지 테이블(416)과 같은 명령 페 이지 테이블에서 적절한 엔트리가 제공된 페이지 번호(504)에 기초하여 선택된다. 선택된 페이지 테이블 엔트리에 기초하여 생성된 어드레스는 명령 캐시 어드레스를 생성하기 위해 단계(509)에서 페이지 어드레스(506)와 결합된다.
명령 페이지 테이블(416)로부터 선택된 엔트리는 엔트리와 함께 저장된 추가정보를 포함한다. 각각의 페이지 테이블 엔트리와 함께 저장될 수도 있는 정보의 추가 비트들 중 하나는 D 비트(420)로 라벨링된 비트와 같은 체크 데이터 캐시 속성이다. 이러한 속성은 단계(510)에서 선택된다.
단계(512)에서, 명령 캐시 히트 또는 누락이 존재하는 지가 결정된다. 예를 들어, 명령 캐시는 명령이 존재하는지를 체크한다. 만일 명령이 존재하면, 명령의 존재는 히트로서 표시된다. 명령이 존재하면, 방법(500)은 단계(514)로 진행하고 명령 인출 어드레스에서 명령이 선택된다. 단계(516)에서, 명령은 프로세서로 전달된다. 예를 들어, 선택된 명령은 명령 출력 버스(422)에 배치되며 멀티플렉싱 엘리먼트(438)를 통해 프로세서(402)의 명렬 버스(440)로 전달된다.
만일 명령이 단계(512)에서 결정된 바와 같이 명령 캐시에 존재하지 않으면, 누락이 발생했다는 표시가 주어지며 방법(500)은 단계(518)로 진행한다. 단계(518)에서는, 단계(510)에서 선택된 D 비트가, 데이터 캐시가 명령을 위해 체크되어야 함을 나타내는 "1"로 설정되었는 지를 알기 위해 체크된다. 만일 D 비트가 "1"로 설정되었다면, 단계(520)에서 프로세서는 명령을 데이터 캐시로부터 인출하려고 시도한다. 예를 들어, 생성된 명령 인출 어드레스(418)는 데이터 인출 어드레스(434)로서 데이터 캐시로 전달된다.
단계(524)에서, 데이터 캐시는 제공된 명령 인출 어드레스에 유효한 데이터가 존재하면, 데이터는 실질적으로 명령이며 데이터 캐시 엔트리는 단계(528)에서 인출된다. 만일 제공된 명령 인출 어드레스에 유효한 데이터가 존재하면, 데이터는 실질적으로 명령이며, 단계(528)에서 데이터 캐시 엔트리가 인출된다. 단계(516)에서, 데이터 캐시로부터 인출된 데이터는 명령으로서 프로세서에 전달된다. 예를 들어, 데이터 출력 버스(436)를 통해 인출된 데이터는 멀티플렉싱 엘리먼트(438)를 통해 전달되며 명령으로서 명령 버스(440)를 통해 프로세서(402)에 제공된다.
단계(518)로 돌아가서, 만일 단계(518)에서 D 비트가 "0" 이었다고 결정되면, 명령은 데이터 캐시에 존재하지 않으며 방법(500)은 단계(522)로 진행하는 것을 알 수 있다. 단계(522)는 또한 단계(524)에서 결정된 바와 같이, 제공된 명령 인출 어드레스에서 데이터 캐시에 누락이 존재했다는 상황에 귀결된다. 어떤 경우든, 명령은 명령 캐시 또는 데이터 캐시에 존재하지 않는 것으로 알려지며, 명령은 단계(522)에 나타낸 바와 같이 시스템 메모리로부터 인출된다. 예를 들어, 시스템 메모리(412)는 명령을 위해 액세스될 것이다. 일단 명령이 시스템 메모리(412)로부터 획득되면, 명령은 단계(516)에 표시된 대로 프로세서로 전달된다.
도6은 데이터로서 생성되고 데이터 캐시에 저장된 프로그램 코드를 실행하는 방법(600)의 흐름도의 예이다. 이러한 방법을 따르는 프로그램 코드는 도2 및 4와 관련하여 논의된 바와 같이 명령 캐시, 데이터 캐시 및 시스템 메모리를 갖는 프로세서 및 메모리 컴플렉스 상에서 실행될 수도 있으며, 도1의 컴포넌트(125A-C)에서 적절하게 사용될 수도 있다.
단계(602)에서, 프로그램은 코드를 생성한다. 이러한 생성은 예를 들어, 프로그램이 압축된 프로그램으로부터 실행가능한 코드를 생성할 때 발생할 수도 있다. 생성된 코드는 초기에 데이터로서 취급되고 생성된 후 데이터 캐시에 저장된다. 프로그램을 실행하기에 앞서, 명령 캐시는 단계(604)에서 무효화된다. 무효화 단계는 생성된 코드와 동일한 어드레스에 어떠한 구조도 없음을 보장한다. 단계(606)에서, 생성된 코드는 명령 캐시에서 프로그램 어드레스 공간으로부터 명령들을 인출함으로써 프로세서에 의해 실행되며 데이터 캐시에 저장된 명령들을 포함할 수도 있다. 데이터 캐시에 저장된 이러한 명령들에 대해, 본 발명의 기술들은 본 발명의 기술이 따르며, 데이터 캐시가 명령 캐시에서 누락의 발생시 명령에 대해 체크되게 한다. 데이터 캐시에서 명령을 발견할 시, 명령은 프로세서 상에서 실행을 위해 데이터 캐시로부터 직접 인출된다.
본 발명이 개시되었지만, 본 발명의 기술은 이하에 개시된 청구항과 조화될 수 있는 다양한 설명으로 개시될 수 있음이 이해될 것이다.

Claims (20)

  1. 명령 캐시와 분리된 데이터 캐시에서 명령을 탐색하는 방법으로서,
    인출 시도가 명령 인출 어드레스에서의 명령에 대해 상기 명령 캐시에서 누락되었는지를 결정하는 단계;
    상기 명령 인출 어드레스를 데이터 인출 어드레스로 변환시키는 단계; 및
    상기 변환된 데이터 인출 어드레스에서 상기 명령에 대해 상기 데이터 캐시에서 인출 시도를 실시하는 단계를 포함하는,
    명령 캐시와 분리된 데이터 캐시에서 명령을 탐색하는 방법.
  2. 제1항에 있어서,
    데이터로서 상기 데이터 캐시에 저장되는 명령들을 생성할 때 체크 데이터 캐시 속성을 활성으로 설정하는 단계를 더 포함하는 것을 특징으로 하는 명령 캐시와 분리된 데이터 캐시에서 명령을 탐색하는 방법.
  3. 제2항에 있어서,
    체크 데이터 캐시 속성이 활성인지를 결정하는 단계, 및
    상기 체크 데이터 캐시 속성이 활성인 경우만 상기 명령에 대해 상기 데이터 캐시에서 상기 인출 시도를 이네이블하는 단계를 더 포함하는 것을 특징으로 하는 명령 캐시와 분리된 데이터 캐시에서 명령을 탐색하는 방법.
  4. 제2항에 있어서,
    상기 체크 데이터 캐시 속성은 명령 페이지 테이블에 저장된 비트인 것을 특징으로 하는 명령 캐시와 분리된 데이터 캐시에서 명령을 탐색하는 방법.
  5. 제1항에 있어서, 상기 명령 인출 어드레스를 변환시키는 단계는,
    상기 명령 인출 어드레스 및 데이터 인출 어드레스를 멀티플렉싱하는 단계; 및
    변환된 데이터 인출 어드레스로서 상기 데이터 캐시에 대해 애플리케이션에 대한 상기 명령 인출 어드레스를 선택하는 단계를 포함하며, 상기 명령 인출 어드레스는 상기 명령 인출 시도가 상기 명령 캐시에서 누락되었음을 결정한 후 선택되는 것을 특징으로 하는 명령 캐시와 분리된 데이터 캐시에서 명령을 탐색하는 방법.
  6. 제1항에 있어서, 상기 데이터 캐시에서 인출 시도를 실시하는 단계는,
    상기 데이터 캐시에서 상기 명령 히트를 결정하는 단계; 및
    상기 명령을 상기 데이터 캐시로부터 인출하는 단계를 더 포함하는 것을 특징으로 하는 명령 캐시와 분리된 데이터 캐시에서 명령을 탐색하는 방법.
  7. 제1항에 있어서,
    상기 데이터 캐시에서 상기 인출 시도가 누락되었음을 결정하는 단계; 및
    상기 데이터 캐시에서 상기 인출 시도가 누락되었음을 명령 메모리 제어에 알리는 단계를 더 포함하는 것을 특징으로 하는 명령 캐시와 분리된 데이터 캐시에서 명령을 탐색하는 방법.
  8. 제7항에 있어서,
    시스템 메모리로부터 상기 명령을 인출하는 단계를 더 포함하는 것을 특징으로 하는 명령 캐시와 분리된 데이터 캐시에서 명령을 탐색하는 방법.
  9. 프로세서 컴플렉스로서,
    명령 캐시;
    데이터 캐시; 및
    선택 신호에 기초하여 명령 인출 어드레스 또는 데이터 인출 어드레스를 선택하기 위한 제1 선택기를 포함하며, 상기 선택 신호는 상기 명령 인출 어드레스 또는 상기 데이터 인출 어드레스가 상기 데이터 캐시에 적용되게 하며, 그로 인해 명령들 또는 데이터가 상기 데이터 캐시로부터 선택적으로 인출될 수 있는,
    프로세서 컴플렉스.
  10. 제9항에 있어서,
    상기 제1 선택기의 상기 선택 신호는 데이터 액세스 동작에 응답하여 상기 데이터 인출 어드레스를 선택하는 것을 특징으로 하는 프로세서 컴플렉스.
  11. 제9항에 있어서,
    상기 제1 선택기의 선택 신호는, 만일 명령 누락 신호가 상기 명령 캐시에서 명령 인출 동작시 누락이 발생했음을 표시하면, 상기 명령 인출 어드레스를 선택하는 것을 특징으로 하는 프로세서 컴플렉스.
  12. 제9항에 있어서,
    프로세서의 명령 버스 입력에 적용되도록 상기 명령 캐시로부터 명령 출력 버스를 또는 상기 데이터 캐시로부터 데이터 출력 버스를 선택하는 제2 선택기를 더 포함하는 것을 특징으로 하는 프로세서 컴플렉스.
  13. 제12항에 있어서,
    상기 제2 선택기는, 만일 상기 명령 캐시에서 누락이 발생하고 상기 제1 선택기를 통해 선택된 상기 명령 인출 어드레스에서의 상기 데이터 캐시에서 히트가 발생하면, 상기 데이터 캐시로부터 상기 데이터 출력 버스를 선택하는 것을 특징으로 하는 프로세서 컴플렉스.
  14. 제12항에 있어서,
    상기 제2 선택기는 만일 상기 명령 캐시에서 히트가 발생하면 상기 명령 출 력 버스를 선택하는 것을 특징으로 하는 프로세서 컴플렉스.
  15. 제9항에 있어서,
    상기 명령 캐시의 명령 버스 입력에 적용되도록 시스템 메모리로부터 메모리 출력 버스를 또는 데이터 캐시로부터 데이터 출력 버스를 선택하는 제3 선택기를 더 포함하는 것을 특징으로 하는 프로세서 컴플렉스.
  16. 제15항에 있어서,
    상기 제3 선택기는 만일 상기 명령 캐시에서 누락이 발생하고 상기 제1 선택기를 통해 선택된 상기 명령 인출 어드레스의 상기 데이터 캐시에서 히트가 발생하면, 상기 데이터 캐시로부터 상기 데이터 출력 버스를 선택하는 것을 특징으로 하는 프로세서 컴플렉스.
  17. 프로그램 코드를 실행하는 방법으로서,
    데이터 캐시에서 데이터로서 저장된 명령들을 생성하는 단계;
    상기 생성된 명령들을 사용하는 상기 프로그램 코드의 실행에 앞서 명령 캐시를 무효화하는 단계; 및
    상기 명령이 상기 명령 캐시에서 탐색되지 않은 경우 상기 데이터 캐시로부터 명령을 직접 인출하여 상기 프로그램 코드가 실행되는 단계를 포함하는,
    프로그램 코드를 실행하는 방법.
  18. 제17항에 있어서,
    상기 명령들을 생성하는 단계는 명령들을 상기 데이터 캐시로 로딩하는 동작을 포함하는 것을 특징으로 하는 프로그램 코드를 실행하는 방법.
  19. 제17항에 있어서, 상기 명령 캐시를 무효화하는 단계는,
    상기 생성된 명령들이 저장되는 상기 명령 캐시의 일부만을 무효화하는 단계를 더 포함하는 것을 특징으로 하는 프로그램 코드를 실행하는 방법.
  20. 제17항에 있어서,
    명령이 상기 데이터 캐시에 있을 수 있음을 나타내기 위해 명령 페이지 테이블에 체크 데이터 캐시 속성을 온(on)으로 설정하는 단계; 및
    만일 명령이 상기 명령 캐시에서 탐색되지 않고 상기 체크 데이터 캐시 속성이 온(on)인 경우 상기 데이터 캐시로부터 상기 명령을 인출하는 단계를 더 포함하는 것을 특징으로 하는 프로그램 코드를 실행하는 방법.
KR1020087020033A 2006-01-20 2007-01-22 효율적인 메모리 계층 관리 KR100955101B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/336,282 US7552283B2 (en) 2006-01-20 2006-01-20 Efficient memory hierarchy management
US11/336,282 2006-01-20

Publications (2)

Publication Number Publication Date
KR20080091481A true KR20080091481A (ko) 2008-10-13
KR100955101B1 KR100955101B1 (ko) 2010-04-28

Family

ID=38058452

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087020033A KR100955101B1 (ko) 2006-01-20 2007-01-22 효율적인 메모리 계층 관리

Country Status (12)

Country Link
US (1) US7552283B2 (ko)
EP (1) EP1974256B1 (ko)
JP (1) JP5065298B2 (ko)
KR (1) KR100955101B1 (ko)
CN (2) CN102866879B (ko)
AT (1) ATE467174T1 (ko)
BR (1) BRPI0707149A2 (ko)
CA (1) CA2635116C (ko)
DE (1) DE602007006276D1 (ko)
ES (1) ES2345733T3 (ko)
RU (1) RU2397534C2 (ko)
WO (1) WO2007085011A2 (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE602005017832D1 (de) * 2004-11-22 2009-12-31 Honda Motor Co Ltd Vorrichtung zur Installation eines weichen Elements
JP4376173B2 (ja) * 2004-11-30 2009-12-02 本田技研工業株式会社 モール装着方法及びその装置
EP1950125B1 (en) * 2005-11-16 2009-07-15 HONDA MOTOR CO., Ltd. Method and device for mounting soft member
EP1953073B1 (en) * 2005-11-24 2011-06-22 Honda Motor Co., Ltd. Method and device for installing open seal
US7555605B2 (en) * 2006-09-28 2009-06-30 Freescale Semiconductor, Inc. Data processing system having cache memory debugging support and method therefor
KR100877611B1 (ko) * 2007-02-08 2009-01-09 삼성전자주식회사 플래시 메모리 내장 마이크로 컨트롤러 유닛 시스템 및상기 마이크로 컨트롤러 유닛의 플래시 메모리 접근 방법
US8255629B2 (en) * 2009-06-22 2012-08-28 Arm Limited Method and apparatus with data storage protocols for maintaining consistencies in parallel translation lookaside buffers
JP5903173B2 (ja) * 2012-02-22 2016-04-13 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. コンピュータ上のオペレーティングシステムからの論理プロセッサの隠蔽
WO2014142867A1 (en) 2013-03-14 2014-09-18 Intel Corporation Power efficient level one data cache access with pre-validated tags
CN105103121B (zh) 2013-03-28 2018-10-26 慧与发展有限责任合伙企业 刀片***以及刀片***的分区执行方法
WO2014158161A1 (en) 2013-03-28 2014-10-02 Hewlett-Packard Development Company, L.P. Error coordination message for a blade device having a logical processor in another system firmware domain
US9781015B2 (en) 2013-03-28 2017-10-03 Hewlett Packard Enterprise Development Lp Making memory of compute and expansion devices available for use by an operating system
US9824021B2 (en) 2014-03-31 2017-11-21 International Business Machines Corporation Address translation structures to provide separate translations for instruction fetches and data accesses
US9734083B2 (en) * 2014-03-31 2017-08-15 International Business Machines Corporation Separate memory address translations for instruction fetches and data accesses
US9715449B2 (en) 2014-03-31 2017-07-25 International Business Machines Corporation Hierarchical translation structures providing separate translations for instruction fetches and data accesses

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4719568A (en) * 1982-12-30 1988-01-12 International Business Machines Corporation Hierarchical memory system including separate cache memories for storing data and instructions
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
US5440707A (en) * 1992-04-29 1995-08-08 Sun Microsystems, Inc. Instruction and data cache with a shared TLB for split accesses and snooping in the same clock cycle
JPH06100982B2 (ja) * 1992-05-20 1994-12-12 工業技術院長 階層キャッシュ・メモリ装置
JPH086853A (ja) * 1994-06-22 1996-01-12 Hitachi Ltd 記憶制御方法
US5737749A (en) 1996-05-20 1998-04-07 International Business Machines Corporation Method and system for dynamically sharing cache capacity in a microprocessor
US6260114B1 (en) * 1997-12-30 2001-07-10 Mcmz Technology Innovations, Llc Computer cache memory windowing
US6480952B2 (en) * 1998-05-26 2002-11-12 Advanced Micro Devices, Inc. Emulation coprocessor
JP2002007212A (ja) * 2000-06-19 2002-01-11 Sony Corp キャッシュ・メモリ・システム及びキャッシュ・メモリ制御方法
US7873776B2 (en) * 2004-06-30 2011-01-18 Oracle America, Inc. Multiple-core processor with support for multiple virtual processors
GB2426082B (en) 2005-05-09 2007-08-15 Sony Comp Entertainment Europe Memory caching in data processing

Also Published As

Publication number Publication date
WO2007085011A3 (en) 2007-10-04
CN102866879A (zh) 2013-01-09
CA2635116A1 (en) 2007-07-26
ATE467174T1 (de) 2010-05-15
EP1974256A2 (en) 2008-10-01
CA2635116C (en) 2011-05-17
BRPI0707149A2 (pt) 2011-04-19
US7552283B2 (en) 2009-06-23
WO2007085011A2 (en) 2007-07-26
ES2345733T3 (es) 2010-09-30
RU2008134124A (ru) 2010-02-27
CN101371224B (zh) 2013-03-27
CN102866879B (zh) 2015-10-28
CN101371224A (zh) 2009-02-18
JP5065298B2 (ja) 2012-10-31
DE602007006276D1 (de) 2010-06-17
RU2397534C2 (ru) 2010-08-20
JP2009524168A (ja) 2009-06-25
EP1974256B1 (en) 2010-05-05
KR100955101B1 (ko) 2010-04-28
US20070174553A1 (en) 2007-07-26

Similar Documents

Publication Publication Date Title
KR100955101B1 (ko) 효율적인 메모리 계층 관리
EP1944696B1 (en) Arithmetic processing apparatus, information processing apparatus, and method for accessing memory of the arithmetic processing apparatus
US5918251A (en) Method and apparatus for preloading different default address translation attributes
US9152572B2 (en) Translation lookaside buffer for multiple context compute engine
US5278963A (en) Pretranslation of virtual addresses prior to page crossing
US8370604B2 (en) Method and system for caching attribute data for matching attributes with physical addresses
US11474956B2 (en) Memory protection unit using memory protection table stored in memory system
KR20090007598A (ko) 물리적으로-태그된 동작을 사용하는 가상으로-태그된 명령 캐시
US11907301B2 (en) Binary search procedure for control table stored in memory system
KR20180008507A (ko) 캐시 태그 압축을 위한 방법 및 장치
US7269825B1 (en) Method and system for relative address translation
US6810473B2 (en) Replacement algorithm for a replicated fully associative translation look-aside buffer
US6931504B2 (en) Method and apparatus for relocating objects within an object-addressed memory hierarchy
CN115080464B (zh) 数据处理方法和数据处理装置
RU2433456C2 (ru) Виртуально маркированный кэш команд с поведением физически маркированного
MX2008009316A (en) Efficient memory hierarchy management

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee