KR20140110070A - 물리적 어드레스들을 통해 비-할당 메모리 액세스 - Google Patents

물리적 어드레스들을 통해 비-할당 메모리 액세스 Download PDF

Info

Publication number
KR20140110070A
KR20140110070A KR1020147022169A KR20147022169A KR20140110070A KR 20140110070 A KR20140110070 A KR 20140110070A KR 1020147022169 A KR1020147022169 A KR 1020147022169A KR 20147022169 A KR20147022169 A KR 20147022169A KR 20140110070 A KR20140110070 A KR 20140110070A
Authority
KR
South Korea
Prior art keywords
memory
physical address
memory access
processor
accessing
Prior art date
Application number
KR1020147022169A
Other languages
English (en)
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 KR20140110070A publication Critical patent/KR20140110070A/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/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]

Landscapes

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

Abstract

물리적 어드레스를 통해 비-할당 메모리 액세스 명령들을 수행하기 위한 시스템들 및 방법들이 제공된다. 시스템은 프로세서, 하나 이상의 레벨들의 캐시들, 메모리, TLB(translation look-aside buffer), 및 프로세서에 의한 메모리 액세스 및 연관된 물리적 어드레스를 특정하는 메모리 액세스 명령을 포함한다. 실행 로직은 메모리 액세스 명령에 대해 TLB를 우회하고 물리적 어드레스를 통해 메모리 액세스를 수행하도록 구성되는 반면에, 미스(miss)가 직면될 수 있는 하나 이상의 중간 레벨들의 캐시들의 할당을 방지한다.

Description

물리적 어드레스들을 통해 비-할당 메모리 액세스{NON-ALLOCATING MEMORY ACCESS WITH PHYSICAL ADDRESS}
35 U.S.C.§119 하의 우선권 주장
[0001] 본 특허 출원은 2012년 1월 10일 출원되고 발명의 명칭이 "Non-Allocating Memory Access with Physical Address"이며 본원의 양수인에게 양도되고 그에 의해 본원에 인용에 의해 명시적으로 포함되는 가출원 번호 제61/584,964호를 우선권으로 주장한다.
기술 분야
[0002] 개시된 실시예들은 물리적 어드레스들을 이용한 메모리 액세스 동작들에 관한 것이다. 보다 구체적으로, 예시적인 실시예들은 가상-물리적 어드레서 변환을 우회하고 캐시들의 하나 이상의 중간 레벨들의 할당을 방지하도록 설계된 메모리 액세스 명령들에 관한 것이다.
[0003] 당 분야에 잘 알려진 바와 같은 가상 메모리는 가상 어드레스들에 의해 어드레싱될 수 있다. 가상 어드레스 공간은 종래에는 "페이지들" 또는 연속적인 가상 메모리 어드레스들의 블록들로 분할된다. 프로그램들이 가상의 어드레스들을 참조하여 작성될 수 있지만, 물리적 어드레스들로의 변환은 프로세서들에 의한 프로그램 명령들의 실행을 위해 필수적일 수 있다. 페이지 표들은 가상의 어드레스들을 대응하는 물리적 어드레스들로 맵핑하도록 이용될 수 있다. MMU(memory management unit)들은 종래에는 변환을 처리하기 위해 가상-물리적 어드레스 맵핑들을 보유한 페이지 표들을 룩-업(look-up)하는데 이용된다. 연속적인 가상의 어드레스들은 연속적인 물리적 어드레스들로 알맞게 맵핑하지 않을 수 있기 때문에, MMU들은 원하는 변환을 위해 몇 개의 페이지 표들을 통해 워크(walk)("페이지 표 워크(page table walk)"로서 알려짐)할 필요가 있을 수 있다.
[0004] MMU들은 TLB(translation lookaside buffer)와 같은 하드웨어를 포함할 수 있다. TLB는 태깅된 하드웨어 룩업표에서 빈번하게 액세스되는 페이지들에 대한 변환들을 캐시할 수 있다. 따라서, 가상 메모리가 TLB에서 히트(hit)하는 경우, 대응하는 물리적 어드레스 변환은, 페이지 표 워크와 연관되는 비용들을 초래할 필요 없이 TLB로부터 재사용될 수 있다.
[0005] MMU들은 소프트웨어에서 페이지 표 워크들을 수행하도록 또한 구성될 수 있다. 소프트웨어 페이지 표 워크들은 종종 PTE(page table entry)의 가상 어드레스가 알려지지 않고 이에 따라 PTE가 연관된 프로세서 캐시들 또는 메인 메모리 중 하나에 위치되지가 또한 알려지지 않는다는 제한을 경험한다. 따라서, 변환 프로세스는 지루하고 시간 소모적일 수 있다.
[0006] 변환 프로세스는 "하이퍼바이저(hypervisor)" 또는 VMM(virtual machine manager)과 연관되는 부가적인 단점들을 경험할 수 있다. VMM은 호스트 프로세싱 시스템 상에서 동시에 실행되기 위해, 2개 이상의 운영 체제들("게스트들"로서 당 분야에 알려짐)을 허용할 수 있다. VMM은 가상 동작 플랫폼을 제시하며 게스트 운영 체제들의 실행을 관리할 수 있다. 그러나, 종래의 VMM들이 게스트들에 의해 액세스되는 메모리 엘리먼트들(데이터/명령들)의, "캐시됨" 또는 "캐시되지 않음"과 같은 캐시성 타입(cacheability type)에 대한 가시성을 갖지 않는다. 따라서, 게스트가 메모리 엘리먼트들의 캐시성 타입을 변경하는 것이 가능하며, 이러한 변경은 VMM이 알아차릴 수 없게 될 수 있다. 또한, VMM은 게스트들에 의해 변경될 수 있는 가상-물리적 어드레스 맵핑들을 계속 추적할 수 없을 수 있다. 알려진 아키텍처들이 게스트들에 특정한 가상-물리적 어드레스들의 일시적 맵핑을 보유(hold)하기 위한 매커니즘들을 채택하지만, 이러한 맵핑 매커니즘들은 매우 느린 경향이 있다.
[0007] 부가적인 단점들은 디버거들과 연관될 수 있다. 디버그 소프트웨어 또는 하드웨어는 때때로 디버깅되는 프로세싱 시스템의 특정한 어드레스에 존재하는 데이터 값을 질의하기 위한 명령들을 이용할 수 있다. 질의된 데이터 값을 리턴하는 것은 연관된 어드레스의 캐시성 타입에 의존하여 캐시 이미지들에 영향을 미칠 수 있다. 또한, 페이지 표 워크들 또는 TLB 액세스들은 프로세싱 시스템의 자원들을 침해(impinge)할 수 있는 디버거들을 고려하여 트리거될 수 있다.
[0008] 이에 따라, 프로세싱 시스템들에서, 가상-물리적 어드레스 변환과 연관되는 상술한 단점들을 방지하는 것이 당 분야에 필요하다.
[0009] 본 발명의 예시적인 실시예들은 가상-물리적 어드레스 변경을 우회하고 하나 이상의 중간 레벨들의 캐시들에 할당하는 것을 방지하도록 설계된 메모리 액세스 명령들에 대한 시스템들 및 방법들에 관한 것이다.
[0010] 예를 들어, 예시적인 실시예는 메모리에 액세스하기 위한 방법에 관한 것이며, 이 방법은 메모리 액세스를 위한 물리적 어드레스를 특정하는 단계; 가상-물리적 어드레스 변환(virtual-to-physical address translation)을 우회하는 단계; 및 상기 물리적 어드레스를 이용하여 상기 메모리 액세스를 수행하는 단계를 포함한다.
다른 예시적인 실시예는 프로세서에 의해 메모리에 액세스하기 위한 메모리 액세스 명령에 관한 것이며, 상기 메모리 액세스 명령은, 상기 메모리 액세스에 대한 어드레스에 대응하는 제 1 필드; 액세스 모드에 대응하는 제 2 필드; 및 동작 코드를 포함하는 제 3 필드를 포함하고, 상기 동작 코드는 실행 로직에 지시하여, 상기 액세스 모드의 제 1 모드에서, 물리적 어드레스인 것으로 상기 제 1 필드의 어드레스들을 결정하고; 가상-물리적 어드레스 변환을 우회하고; 그리고 상기 물리적 어드레스를 통해 상기 메모리 액세스를 수행하게 한다. 상기 동작 코드는 또한 실행 로직에 지시하여, 상기 액세스 모드의 제 2 모드에서, 가상 어드레스인 것으로 상기 제 1 필드의 어드레스를 결정하고; 상기 물리적 어드레스를 결정하기 위해 상기 가상 어드레스로부터 가상-물리적 모리 변환을 수행하고; 그리고 상기 물리적 어드레스를 통해 상기 메모리 액세스를 수행하게 한다.
다른 예시적인 실시예는 프로세싱 시스템에 관한 것이며, 이 프로세싱 시스템은 레지스터 파일을 포함하는 프로세서; 메모리; 가상-물리적 어드레스들을 변환하도록 구성된 TLB(translation look-aside buffer); 및 메모리 액세스 및 연관된 물리적 어드레스를 특정하는 메모리 액세스 명령에 응답하여, 상기 메모리 액세스 명령에 대한 가상-물리적 메모리 변환을 우회하고, 상기 물리적 어드레스를 통해 상기 메모리 액세스를 수행하도록 구성된 실행 로직을 포함한다.
다른 예시적인 실시예는 메모리에 액세스하기 위한 시스템에 관한 것이며, 상기 메모리에 액세스하기 위한 시스템은 메모리 액세스를 위한 물리적 어드레스를 특정하기 위한 수단; 가상-물리적 어드레스 변환을 우회하기 위한 수단; 및 상기 물리적 어드레스를 이용하여 상기 메모리 액세스를 수행하기 위한 수단을 포함한다.
다른 예시적인 실시예는 프로세싱 시스템에 의해 실행될 때, 상기 프로세싱 시스템으로 하여금 메모리에 액세스하기 위한 동작들을 수행하게 하는 코드를 포함하는 비-일시적인 컴퓨터-판독 가능한 저장 매체에 관한 것이며, 상기 비-일시적인 컴퓨터-판독 가능한 저장 매체는, 메모리 액세스를 위한 물리적 어드레스를 특정하기 위한 코드; 가상-물리적 어드레스 변환을 우회하기 위한 코드; 및 상기 물리적 어드레스를 이용하여 상기 메모리 액세스를 수행하기 위한 코드를 포함한다.
[0015] 첨부 도면들은 본 발명의 실시예들의 설명에 도움이 되도록 제시되며 실시예들의 한정이 아니라 단지 실시예들의 예시를 위해서만 제공된다.
[0016] 도 1은 예시적인 실시예들에 따라 예시적인 메모리 액세스 명령들을 구현하도록 구성된 프로세싱 시스템(100)을 예시한다.
[0017] 도 2는 로드를 특정하는 예시적인 메모리 액세스 명령의 논리적 구현을 예시한다.
도 3은 예시적인 실시예들에 따라 메모리에 액세스하는 방법의 예시적인 동작 흐름을 예시한다.
도 4는 예시적인 실시예들에 따라 구성되는 다중-코어 프로세서를 포함하는 무선 디바이스의 블록도를 예시한다.
[20] 본 발명의 양상들이 본 발명의 특정 실시예들에 관련한 다음의 설명 및 관련 도면들에서 개시된다. 본 발명의 범위를 벗어나지 않으면서 대안적인 실시예들이 안출될 수 있다. 추가로, 본 발명의 잘 알려진 엘리먼트들은 본 발명의 관련 세부사항들을 모호하게 하지 않도록 상세히 설명되지 않거나 생략될 것이다.
[21] "예시적인"이라는 단어는 본 명세서에서 "예시, 실례 또는 예증으로서의 역할"을 의미하는데 사용된다. 본 명세서에서 "예시적인" 것으로서 설명되는 어떠한 실시예도 다른 실시예들보다 반드시 선호되거나 유리한 것으로 해석되는 것은 아니다. 마찬가지로, "본 발명의 실시예들"이라는 용어는 본 발명의 모든 실시예들이 논의되는 특징, 이점 또는 동작 모드를 포함할 것을 요구하는 것은 아니다.
[22] 본 명세서에서 사용되는 용어는 단지 특정 실시예들을 설명할 목적일 뿐이며 본 발명의 실시예들의 한정인 것으로 의도되지는 않는다. 본 명세서에서 사용되는 바와 같이, "하나의"라는 단수 형태들은 문맥상 명백하게 달리 표시하지 않는 한, 복수 형태들도 역시 포함하는 것으로 의도된다. 또한, "포함하는"("comprises", "comprising,", "includes" 및/또는 "including")이라는 용어들은 본 명세서에서 사용될 때, 언급되는 특징들, 정수들, 단계들, 동작들, 엘리먼트들 및/또는 컴포넌트들의 존재를 명시하지만, 하나 이상의 다른 특징들, 정수들, 단계들, 동작들, 엘리먼트들, 컴포넌트들, 및/또는 이들의 그룹들의 존재 또는 부가를 배제하는 것은 아니라고 이해될 것이다.
[23] 또한, 많은 실시예들은 예를 들어, 컴퓨팅 디바이스의 엘리먼트들에 의해 수행될 동작들의 시퀀스들에 관하여 설명된다. 본 명세서에서 설명되는 다양한 동작들은 특정 회로들(예를 들어, 주문형 집적 회로(ASIC: application specific integrated circuit)들)에 의해, 하나 이상의 프로세서들에 의해 실행되는 프로그램 명령들에 의해, 또는 이 둘의 결합에 의해 수행될 수 있다고 인지될 것이다. 추가로, 본 명세서에서 설명되는 이러한 동작들의 시퀀스는, 실행시 연관된 프로세서로 하여금 본 명세서에서 설명된 기능을 수행하게 할 대응하는 세트의 컴퓨터 명령들을 저장하고 있는 임의의 형태의 컴퓨터 판독 가능 저장 매체 내에 전부 구현되는 것으로 여겨질 수 있다. 따라서 본 발명의 다양한 양상들은, 전부 청구된 청구대상의 범위 내에 있다고 여겨진 다수의 다양한 형태들로 구현될 수 있다. 또한, 본 명세서에서 설명되는 실시예들 각각에 대해, 임의의 이러한 실시예들의 대응하는 형태는 본 명세서에서, 예를 들어 설명되는 동작을 수행"하도록 구성된 로직"으로서 설명될 수 있다.
[0024] 예시적인 실시예들은 가상으로 어드레싱된 메모리 공간을 포함하는 프로세싱 시스템들에 관한 것이다. 실시예들은 가상 어드레스 대신 물리적 어드레스를 특정하는 명령들 및 방법들을 포함할 수 있다. 예시적인 메모리 액세스 명령은 로드 또는 저장일 수 있다. 상세히 설명될 바와 같이, 예시적인 메모리 액세스 명령들은 소프트웨어 페이지 표 워크들을 단순하게 하고 VMM 기능들을 개선하고 디버깅을 더 쉽게 할 수 있다.
[0025] 이제 도 1을 참조하면, 예시적인 프로세싱 시스템(100)이 예시된다. 프로세싱 시스템(100)은 CPU 또는 프로세서 코어일 수 있는 프로세서(102)를 포함할 수 있다. 프로세서(102)는 당 분야에 잘 알려진 바와 같이, 하나 이상의 스레드들, 하나 이상의 레지스터 파일들(집합적으로 레지스터 파일(104)로서 도시됨) 및 다른 컴포넌트들을 지원할 수 있는 하나 이상의 실행 파이프라인들(도시되지 않음)을 포함할 수 있다. 프로세서(102)는 I-캐시(108) 및 D-캐시(110)와 같은 로컬(또는 L1) 캐시들은 물론, L2 캐시들 등과 같은 하나 이상의 더 높은 레벨들의 캐시들(명시적으로 도시되지 않음)에 커플링될 수 있다. 캐시들은 궁극적으로 메모리(112)와 같은 메인 메모리와 통신할 수 있다. 프로세서(102)는 캐시들 또는 메모리(112) 상에서 메모리 액세스 동작들(로드들/저장들)을 수행하기 위해 가상-물리적 어드레스들의 변환을 획득하도록 MMU(106)와 상호작용할 수 있다. MMU(106)는 TLB(도시되지 않음) 및 페이지 표 워크들을 수행하기 위한 부가적인 하드웨어/소프트웨어를 포함할 수 있다. 가상 머신 관리자(VMM)(114)는 프로세서(102)와 통신하는 것으로 도시된다. VMM(114)은 프로세싱 시스템(100) 상에서 동작하도록 하나 이상의 게스트들(116)을 지원할 수 있다. 프로세싱 시스템(100)의 도시된 구성은 단지 예시 목적들을 위한 것이며, 당업자들은 개시된 실시예들의 범위로부터 벗어남 없이 프로세싱 시스템(100)에 대한 적합한 수정들 및 부가적인 컴포넌트들 및 연결들을 인지할 것이다.
[0026] 도 1을 계속 참조하면, 예시적인 메모리 액세스 명령(120)이 이제 설명될 것이다. 명령(120)은 명령의 실행 시에 형성될 수 있는 통신 경로들을 표현하는 점선들에 의해 도 1에서 예시된다. 당업자들은 명령(120)의 구현이 프로세싱 시스템(100)의 특정한 구성들에 맞게 적절히 수정될 수 있다는 것을 인지할 것이다. 또한, 명시적으로 예시되지 않지만, 예시적인 실시예들에 따라 프로세싱 시스템(100)에서 명령(120)의 실행에 수반되는 다양한 동작들을 수행하도록 활용될 적절한 논리적 블록들 및 하드웨어 모듈들을 일반적으로 포함하는 것으로 이해되는 "실행 로직"에 대한 참조가 본 명세서에서 이루어진다. 당업자들은 이러한 실행 로직에 대한 적합한 구현들을 인지할 것이다.
[0027] 일 예시적인 실시예에서, 명령(120)은 로드 명령이며, 여기서 로드 명령은 종래의 기술에서 알려진 바와 같은 가상 어드레스 대신, 로드에 대한 물리적 어드레스를 직접 특정할 수 있다. 로드에 대한 물리적 어드레스를 특정함으로써, 명령(120)은 가상-물리적 어드레스 변환에 대한 필요성을 방지하고, 이에 따라 명령(120)의 실행은 MMU(106)(도 1에서 도시된 바와 같음)의 액세스를 방지할 수 있다. 따라서, 명령(120)의 실행은 로드에 대한 물리적 어드레스를 이용하여 I-캐시(108) 및 D-캐시(110)와 같은 캐시들에 직접 질의함으로써 진행될 수 있다.
[0028] 하나의 시나리오에서, 로드에 대한 물리적 어드레스는 캐시들 중 하나에서 히트할 수 있다. 예를 들어, 명령(120)의 실행은 우선 로컬 캐시들에 질의하고 미스(miss)가 존재하는 경우 실행은 히트가 있을 때까지 다음 레벨 캐시로 진행하는 식일 수 있다. 어느 캐시 레벨이 히트를 생성하는지 무관하게, 로드에 대한 물리적 어드레스에 대응하는 데이터 값이 히팅 캐시(hitting cache)로부터 리트리브(retrieve)되고, 레지스터 파일(104)로 직접 전달될 수 있다.
[0029] 로드에 대한 물리적 어드레스가 캐시들 중 어느 것에서도 히트하지 않는 시나리오에서, 대응하는 데이터 값이 메인 메모리(112)로부터 페치(fetch)될 수 있다. 그러나 이는 캐시되지 않은 로드 또는 비-할당 로드로서 취급될 것이다. 즉, 캐시들은 미스에 이은 데이터 값으로 업데이트되지 않을 것이다. 프로세싱 시스템(100) 상의 디버그 동작들을 수행하는 디버거(도시되지 않음)의 일 예에서, 명령(120)은 디버거에 의한 물리적 어드레스에 대한 로드 요청에 이어 생성될 수 있다. 명령(120)의 위의 예시적인 실행은 명령(120)의 비-할당 성질로 인해 디버거들의 요청에 의해 동요되지 않은 캐시 이미지들을 남기도록 인지될 수 있다. 종래의 구현들에 비해, 프로세싱 시스템(100)은 이에 따라 캐시 이미지들에 영향을 미치는 디버거로 인한 보통의 동작들의 방해로부터 자유로운 채로 남아있을 수 있다.
[0030] 다른 예시적인 실시예에서, 명령(120)은 저장 명령일 수 있으며, 여기서 저장 명령은 종래 기술에서 알려진 바와 같이, 가상 어드레스 대신 저장을 위한 물리적 어드레스를 직접 특정할 수 있다. 위에서 설명된 바와 같은 로드 명령의 동작과 유사하게, 저장 명령은 로컬 캐시들에 먼저 질의할 수 있고, 히트가 있는 경우, 저장이 수행될 수 있다. 적어도 2개의 다양한 저장 동작들(라이트 스루(write-through) 및 라이트-백(write-back))은 명령(120)의 동작 코드에 의해 특정될 수 있다. 라이트-쓰루 저장에서, I-캐시(108) 및 D-캐시(108)와 같은 캐시들에는 물리적 어드레스가 질의될 수 있고, 히트의 경우에, 다음의 더 높은 레벨의 캐시 계층, 및 궁극적으로 메인 메모리(메모리(112))가 또한 질의되고 업데이트될 수 있다. 다른 한편, 라이트-백 저장을 위해, 히트의 경우에, 저장 동작은 더 높은 레벨의 캐시 계층으로 진행하지 않고 종료한다.
[0031] 양자의 라이트-백 및 라이트-쓰루 저장들에 대해, 미스가 직면되는 경우, 저장은 물리적 어드레스를 다음 레벨 캐시에 그리고 이어서 필요한 경우 메인 메모리(112)에 질의하도록 진행할 수 있다. 그러나 미스는 로드들과 유사하게, 예시적인 실시예들에서 캐시 할당을 수반하지 않을 것이다. 전용 버퍼 또는 데이터 어레이는 도 2를 참조하여 추가로 설명되는 바와 같이, 몇몇 실시예들에서 이러한 비-할당 저장 동작들을 위해 포함될 수 있다.
[0032] 이제 도 2를 참조하면, 명령(120)의 예시적인 하드웨어 구현이 예시된다. D-캐시(110)와 같은 캐시의 확장된 도면은 컴포넌트 어레이들: 데이터 값들을 저장하는 데이터 어레이들(210), 데이터 어레이(210)에 저장된 대응하는 데이터의 물리적 어드레스들의 선택된 비트들을 포함하는 태그 어레이(202); 대응하는 세트에 대한 연관된 상태 정보를 저장하는 상태 어레이(204); 및 대응하는 할당을 위해 대체되는 웨이(way)를 요구할 수 있는 임의의 할당 로드 또는 저장 동작을 위한 연관된 웨이 정보를 저장하는 대체 포인터 어레이(206)를 포함하는 것으로 도시된다. 명령(120)의 실행을 위해 액세스되지 않지만, DTLB(214)는 빈번하게 액세스되는 어드레스들에 대한 가상-물리적 어드레스 변환들을 보유할 수 있다. DTLB(214)는 예를 들어, MMU(106)에 포함될 수 있다.
[0033] 먼저, 로드들에 관하여, 예시적인 로드에 대한 명령(120)이 프로세서(102)에 의한 프로세싱을 위해 수신될 때, 로드에 대한 명령(120)에서 특정된 물리적인 어드레스 필드가 리트리브된다. 물리적 어드레스 필드는 필드들, 즉 로드 어드레스에 대한 태그와 연관된 비트에 대응하는 PA [Tag Bits](208a); 로드 어드레스와 연관되는 세트에 대응하는 PA [Set Bits](208b); 및 D-캐시(110)에서 히트하는 로드 어드레스에 대한 데이터 어레이(210)의 위치에 대응하는 PA [Data Array Bits](208c)에 대해 분석된다. 일 구현에서, PA[Data Array Bits](208c)는 로드 어드레스의 위치를 특정하기 위해 라인 오프셋 값 및 PA[Set Bits](208b)의 결합에 의해 형성된다. 예를 들어, 데이터 어레이(210)는 캐시라인 블록들을 포함할 수 있다. 라인 오프셋 값은 바이트, 하프워드(halfword), 워드, 더블워드 등과 같은 로드의 크기 및 로드에 대한 물리적 어드레스에 기초하여 캐시라인 블록들에 위치된 데이터의 원하는 바이트들을 특정하는데 이용될 수 있다.
[0034] 명령(120)의 실행은 또한 선택기(216)가 DTLB(214)로부터 유도될 수 있는 비트들 상에서 PA [Tag Bits](208a)를 직접 선택하게 하는 커맨드 Select PA Directly(216)을 어서트(assert)하는 것을 포함할 수 있으며 DTLB(214)에 의한 가상-물리적 어드레스 변환을 또한 억제할 수 있다. 태그 어레이(202) 및 상태 어레이(204)는 PA [Set Bits](208b)를 이용하여 액세스될 수 있고, 비교기들(218)은 이어서 태그 비트들(PA [Tag Bits](208a))이 태그 어레이(202)에 존재하는지 그리고 그들의 상태 정보가 적절한지(예를 들어, "유효")를 비교할 수 있다. 비교기(218)가 히트/미스 라인(220) 상에서 히트를 생성하여 로드 어드레스가 존재하며 유효하다는 것을 확인하는 경우, PA[Data Array Bits](208c) 및 대체 포인터 어레이(206)로부터 유도된 연관된 웨이 정보는 명령(120)에 의해 특정된 예시적인 로드 명령에 대한 원하는 데이터 값을 리트리브하도록 데이터 어레이(210)에 액세스하는데 공동으로 이용될 수 있다. 원하는 데이터 값은 이어서 판독 데이터 라인(224)을 판독할 수 있고, 프로세서(102)에, 예를 들어, 레지스터 파일(104)로 직접 전달될 수 있다.
[0035] 로드를 특정하는 명령(120)의 예시적인 실시예들에 따라 D-캐시(110)로부터 데이터를 질의 및 리트리브하는 위의 구현에서, D-캐시(110)의 것과 같은 캐시 이미지들은 변경되지 않은 채로 남아있을 수 있다. 즉, 히트 또는 미스가 있었는지와 무관하게, 태그 어레이(202), 상태 어레이(204), 대체 포인터 어레이(206) 및 데이터 어레이(210)는 변경되지 않는다.
[0036] 이제 저장들로 넘어가서, 동작은 라이트-쓰루 및 라이트-백 저장들 둘 다에 대해 유사하다. 예를 들어, 명령(120)이 물리적 어드레스로의 데이터의 저장을 특정하는 경우, 일 구현에서, 로컬 캐시, 즉 D-캐시(110)는 라이트-쓰루 및 라이트-백 저장 둘 다에 대해 질의될 수 있고, 물리적 어드레스가 발견되는 경우, 데이터는 전용 어레이, 즉 도 2에서 도시된 바와 같이 데이터 어레이(210)에 포함될 수 있는 기록 데이터 어레이(222)에 기록될 수 있다. 라이트-쓰루 저장들의 경우에, 동작은 위에서 설명된 바와 같이 다음의 더 높은 레벨의 캐시(도시되지 않음)에 질의하고 업데이트하도록 진행되는 반면에, 라이트-백의 경우에, 동작은 기록 데이터 어레이(222)에 기록하는 것과 함께 종료할 수 있다.
[0037] 라이트-쓰루 및 라이트-백 저장들에 대해, 물리적 어드레스가 발견되지 않는 경우, 즉 미스가 존재하는 경우, D-캐시(110)의 어레이들로의 임의의 업데이트들이 스킵(skip)될 수 있고, 데이터는 메모리(112)의 물리적 어드레스 위치에 직접 기록될 수 있다. 즉, 저장은 비-할당 저장으로서 취급될 수 있다. 명령(120)에 의해 특정되는 이러한 예시적인 저장 동작들은 예를 들어, 디버거에 의한 디버그 동작들에서 이용될 수 있다.
[0038] D-캐시(110)에 관련될 수 있는 데이터에 대한 명령(120)에 의해 특정될 수 있는 로드/저장 명령들과 유사하게, 예시적인 실시예들은 I-캐시(108)에 관련되는 명령 값들에 대한 로드/저장 명령들을 또한 포함할 수 있다. 예를 들어, 물리적 어드레스 페치 명령이 특정될 수 있으며, 이는 위에서 설명된 명령(120)과 유사한 방식으로 실행될 수 있다. 물리적 어드레스 페치 명령은 비-할당 방식으로 물리적 어드레스에 대응하는 명령 값을 로케이팅(locating)하는데 이용될 수 있다. 따라서 I-캐시(108)가 먼저 질의될 수 있다. 히트가 직면되는 경우, 원하는 페치 동작은 명령에서 특정된 물리적 어드레스로부터 명령 값을 페치함으로써 진행될 수 있다. 미스가 직면되는 경우, I-캐시(108)의 할당은 스킵될 수 있고, 실행은 임의의 다음 레벨 캐시 및 요구되는 경우 궁극적으로 메인 메모리(112)에 질의하도록 진행될 수 있다.
[0039] 위의 설명이 일반적으로 명령(120)의 각각의 인스턴스 동안 MMU(106)/DTLB(214)를 우회하는 것에 관한 것이지만, 명령(120)의 변동은 부가적으로 또는 대안적으로 몇몇 실시예들에 포함될 수 있다. 일반성의 손실 없이, 명령(120)의 변동은 명령(120')(도시되지 않음)으로서 지정될 수 있으며, 여기서 명령(120')은 MMU들 또는 TLB들의 우회를 제어하기 위한 특정된 모드 비트들을 포함할 수 있다. 예를 들어, 명령(120')의 모드 비트들에 의해 정의된 제 1 모드에서, 명령(120')에서 특정된 어드레스 값은 가상 어드레스로서 취급될 수 있으며, MMU(106)는 가상-물리적 어드레스 변환을 위해 액세스될 수 있다. 다른 한편, 명령(120')의 모드 비트들에 의해 정의된 제 2 모드에서, 어드레스 값은 물리적 어드레스로서 취급될 수 있고, MMU(106)는 우회될 수 있다.
[0040] 이에 따라, 몇몇 실시예들에서, 명령(120')은 다음의 필드들을 포함할 수 있다. 명령(120')의 제 1 필드는 위에서 설명된 모드들에 기초하여 물리적 어드레스 또는 가상 어드레스인 것으로 결정될 수 있는, 메모리 액세스를 위한 어드레스에 대응할 수 있다. 명령(120')의 제 2 필드는 위의 제 1 모드 또는 제 2 모드 사이에서 선택할 액세스 모드에 대응할 수 있으며, 명령(120')의 제 3 필드는 명령(120')의 동작 코드(또는 당 분야에 알려진 바와 같은 OpCode)를 포함할 수 있다. 액세스 모드가 제 1 모드로 세팅되는 경우, 실행 로직은 물리적 어드레스인 것으로 제 1 필드의 어드레스를 결정하고 MMU(106)/DTLB(214)에서 가상-물리적 어드레스 변환을 우회하고 물리적 어드레스를 통해 메모리 액세스를 수행할 수 있다. 다른 한편, 액세스 모드는 제 2 모드로 세팅되고 실행 로직은 가상 어드레스인 것으로 제 1 필드의 어드레스를 결정하고 MMU(106)/DTLB(214)를 인보크(invoke)함으로써 물리적 어드레스를 결정하기 위해 가상 어드레스로부터 임의의 요구되는 가상-물리적 어드레스 변환을 수행하고, 이어서 물리적 어드레스를 통해 메모리 액세스를 수행하도록 진행될 수 있다.
[0041] 실시예들이 본 명세서에서 개시된 프로세스들, 기능들 및/또는 알고리즘들을 수행하기 위한 다양한 방법들을 포함한다고 인지될 것이다. 예를 들어, 도 3에서 예시된 바와 같이, 실시예는 메모리(예를 들어, D-캐시(210))에 액세스하기 위한 방법을 포함할 수 있으며, 이 방법은 메모리 액세스를 위한 물리적 어드레스를 특정하는 단계(예를 들어, 비트들(208a, 208b 및 208c)을 포함하는 물리적 어드레스를 특정하는 명령(120))(블록 302), 어드레스 변환을 우회(예를 들어, DTLB(214)를 우회함)하는 단계(블록 304) 및 물리적 어드레스를 이용하여 메모리 액세스를 수행(예를 들어, DTLB(214)로부터의 가상-물리적 어드레스 변환 대신, 물리적 어드레스 비트들(208a, 208b, 및 208c)을 선택하도록 구성된 선택기(216))하는 단계(블록 306)를 포함한다.
[42]당업자들은 정보 및 신호들이 다양한 다른 기술들 및 기법들 중 임의의 것을 이용하여 표현될 수 있음을 이해할 것이다. 예를 들어, 상기 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령들, 명령어들, 정보, 신호들, 비트들, 심벌들 및 칩들은 전압들, 전류들, 전자파들, 자기 필드들 또는 자기 입자들, 광 필드들 또는 광 입자들, 또는 이들의 임의의 결합으로 표현될 수 있다.
[43] 또한, 당업자들은, 본 명세서에 개시된 실시예들과 관련하여 설명된 다양한 예시적인 로직 블록들, 모듈들, 회로들 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 결합들로 구현될 수 있다고 인지할 것이다. 하드웨어와 소프트웨어의 이러한 상호 호환성을 명확히 설명하기 위해, 각종 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들은 일반적으로 이들의 기능과 관련하여 위에서 설명되었다. 이러한 기능이 하드웨어로 구현되는지 아니면 소프트웨어로 구현되는지는 전체 시스템에 부과된 설계 제약들 및 특정 애플리케이션에 좌우된다. 당업자들은 설명된 기능을 특정 애플리케이션마다 다양한 방식들로 구현할 수도 있지만, 이러한 구현 결정들이 본 발명의 범위를 벗어나게 하는 것으로 해석되지는 않아야 한다.
[44] 본 명세서에 개시된 실시예들과 관련하여 설명된 방법들, 시퀀스들 및/또는 알고리즘들은 직접 하드웨어로, 프로세서에 의해 실행되는 소프트웨어 모듈로, 또는 이 둘의 결합으로 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드디스크, 착탈식 디스크, CD-ROM, 또는 해당 기술분야에 알려진 임의의 다른 형태의 저장 매체에 상주할 수 있다. 예시적인 저장 매체는 프로세서가 저장 매체로부터 정보를 읽고 저장 매체에 정보를 기록할 수 있도록 프로세서에 커플링된다. 대안으로, 저장 매체는 프로세서에 통합될 수도 있다.
[0045] 도 4를 참조하면, 예시적인 실시예들에 따라 구성된 다중 코어 프로세서를 포함하는 무선 디바이스의 특정한 예시적인 실시예의 블록도가 도시되며 일반적으로 400으로 명시된다. 디바이스(400)는 DSP(digital signal processor)(464)를 포함한다. 프로세싱 시스템(100)과 유사하게, DSP(464)는 도 1의 MMU(106), 레지스터 파일(104)을 포함하는 프로세서(102), I-캐시(108) 및 D-캐시(110)를 포함할 수 있으며, DSP(464)는 도시된 바와 같이 메모리(432)에 커플링될 수 있다. 디바이스(400)는 이전의 실시예들에서 설명된 바와 같이 가상-물리적 어드레스 변환을 수행함 없이 명령들(120 및 120')을 실행하도록 구성될 수 있다. 도 4는 또한 DSP(464)에 그리고 디스플레이(428)에 커플링되는 디스플레이 제어기(426)를 도시한다. 코더/디코더(코덱(CODEC))(434)(예를 들어, 오디오 및/또는 음성 CODEC)가 DSP(464)에 커플링될 수 있다. (모뎀을 포함할 수 있는) 무선 제어기(440)와 같은 다른 컴포넌트들이 또한 예시된다. 스피커(436)와 마이크로폰(438)이 코덱(434)에 커플링될 수 있다. 도 4는 또한, 무선 제어기(440)가 무선 안테나(442)에 커플링될 수 있음을 나타낸다. 특정 실시예에서, DSP(464), 디스플레이 제어기(426), 메모리(432), 코덱(434) 및 무선 제어기(440)는 시스템-인-패키지(system-in-package) 또는 시스템-온-칩(system-on-chip) 디바이스(422)에 포함된다.
[46] 특정 실시예에서, 입력 디바이스(430) 및 전원(444)이 시스템-온-칩 디바이스(422)에 커플링된다. 더욱이, 도 4에 예시된 바와 같이, 특정 실시예에서 디스플레이(428), 입력 디바이스(430), 스피커(436), 마이크로폰(438), 무선 안테나(442) 및 전원(444)은 시스템-온-칩 디바이스(422) 외부에 있다. 그러나 디스플레이(428), 입력 디바이스(430), 스피커(436), 마이크로폰(438), 무선 안테나(442) 및 전원(444) 각각은 인터페이스나 제어기와 같은 시스템-온-칩 디바이스(422)의 컴포넌트에 커플링될 수 있다.
[47] 도 4는 무선 통신 디바이스를 도시하고 있지만, DSP(464)와 메모리(432)가 또한 셋톱박스, 뮤직 플레이어, 비디오 플레이어, 엔터테인먼트 유닛, 네비게이션 디바이스, 개인용 디지털 보조기기(PDA: personal digital assistant), 고정 위치 데이터 유닛 또는 컴퓨터에 통합될 수도 있다는 점에 주의해야 한다. 프로세서(예를 들어, DSP(464))가 또한 이러한 디바이스에 통합될 수도 있다.
[0048] 이에 따라, 본 발명의 실시예는 물리적 어드레스를 이용하여 메모리에 액세스하고 가상-물리적 어드레스 변환을 위해 구성된 MMU를 우회하기 위한 방법을 이용하는 컴퓨터-판독 가능한 매체들을 포함할 수 있다. 이에 따라, 본 발명은 예시된 예들로 제한되지 않으며, 본 명세서에서 설명된 기능을 수행하기 위한 임의의 수단은 본 발명의 실시예들에 포함된다.
[49] 상기의 개시는 본 발명의 예시적인 실시예들을 보여주지만, 첨부된 청구항들에 의해 정의된 대로 본 발명의 범위를 벗어나지 않으면서 본 명세서에서 다양한 변경들 및 수정들이 이루어질 수 있다는 점에 유의해야 한다. 본 명세서에서 설명된 본 발명의 실시예들에 따른 방법 청구항들의 기능들, 단계들 및/또는 동작들은 어떠한 특정 순서로 수행될 필요는 없다. 더욱이, 본 발명의 엘리먼트들은 단수로 설명 또는 청구될 수 있지만, 단수로의 한정이 명시적으로 언급되지 않는 한 다수가 고려된다.

Claims (23)

  1. 메모리에 액세스하기 위한 방법으로서,
    메모리 액세스를 위한 물리적 어드레스를 특정하는 단계;
    가상-물리적 어드레스 변환(virtual-to-physical address translation)을 우회하는 단계; 및
    상기 물리적 어드레스를 이용하여 상기 메모리 액세스를 수행하는 단계
    를 포함하는,
    메모리에 액세스하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 메모리 액세스는 프로세서에 의해 개시된 로드 요청이며, 상기 방법은,
    상기 로드 요청의 물리적 어드레스와 연관된 데이터에 대해 상기 메모리와 상기 프로세서 간에 구성되는 하나 이상의 레벨들의 캐시들을 트래버싱(traversing)하는 단계; 및
    상기 로드 요청이 미스(miss)에 직면하는 어떠한 중간 캐시 레벨들의 상태도 수정함 없이, 상기 데이터가 먼저 발견된 메모리 또는 캐시 레벨로부터 상기 프로세서로 직접 데이터를 리턴(return)하는 단계
    를 더 포함하는,
    메모리에 액세스하기 위한 방법.
  3. 제 2 항에 있어서,
    상기 로드 요청이 미스에 직면하는 중간 캐시 레벨들로의 데이터의 할당을 방지하는 단계
    를 더 포함하는,
    메모리에 액세스하기 위한 방법.
  4. 제 1 항에 있어서,
    상기 물리적 어드레스와 연관된 페이지 속성들의 룩-업을 방지하는 단계
    를 더 포함하는,
    메모리에 액세스하기 위한 방법.
  5. 제 1 항에 있어서,
    상기 메모리 액세스는 프로세서에 의해 개시된 저장 요청이며, 상기 방법은,
    상기 저장 요청의 물리적 어드레스에 대해 상기 메모리와 상기 프로세서 간에 구성된 하나 이상의 레벨들의 캐시들을 트래버싱하는 단계; 및
    상기 저장 요청이 미스에 직면한 어떠한 중간 캐시 레벨들의 상태들도 수정함 없이, 상기 물리적 어드레스가 먼저 발견된 메모리 또는 캐시 레벨에, 상기 프로세서로부터의 상기 저장 요청과 연관된 데이터를 직접 기록하는 단계
    를 더 포함하는,
    메모리에 액세스하기 위한 방법.
  6. 제 5 항에 있어서,
    상기 저장 요청이 미스에 직면한 임의의 중간 캐시 레벨들의 할당을 방지하는 단계
    를 더 포함하는,
    메모리에 액세스하기 위한 방법.
  7. 제 5 항에 있어서,
    상기 저장 요청은 라이트-쓰루 동작(write-through operation)으로서 실행되어서, 상기 물리적 어드레스가 제 1 캐시 레벨에서 먼저 발견되는 경우, 상기 방법은 상기 제 1 캐시 레벨과 상기 메모리 간에 존재하는 임의의 캐시 레벨에 상기 데이터를 기록하는 단계
    를 더 포함하는,
    메모리에 액세스하기 위한 방법.
  8. 제 1 항에 있어서,
    상기 물리적 어드레스는 레지스터 파일의 레지스터들에 대응하는,
    메모리에 액세스하기 위한 방법.
  9. 프로세서에 의해 메모리에 액세스하기 위한 메모리 액세스 명령으로서,
    상기 메모리 액세스 명령은,
    상기 메모리 액세스에 대한 어드레스에 대응하는 제 1 필드;
    액세스 모드에 대응하는 제 2 필드; 및
    동작 코드를 포함하는 제 3 필드를 포함하고,
    상기 동작 코드는 실행 로직에 지시하여,
    상기 액세스 모드의 제 1 모드에서 물리적 어드레스인 것으로 상기 제 1 필드의 어드레스들을 결정하고;
    가상-물리적 어드레스 변환을 우회하고; 그리고
    상기 물리적 어드레스를 통해 상기 메모리 액세스를 수행하게 하는,
    메모리 액세스 명령.
  10. 제 9 항에 있어서,
    상기 동작 코드는 실행 로직에 지시하여,
    상기 액세스 모드의 제 2 모드에서, 가상 어드레스인 것으로 상기 제 1 필드의 어드레스를 결정하고;
    상기 물리적 어드레스를 결정하기 위해 상기 가상 어드레스로부터 가상-물리적 모리 변환을 수행하고; 그리고
    상기 물리적 어드레스를 통해 상기 메모리 액세스를 수행하게 하는,
    메모리 액세스 명령.
  11. 프로세싱 시스템으로서,
    레지스터 파일을 포함하는 프로세서;
    메모리;
    가상-물리적 어드레스들을 변환하도록 구성된 TLB(translation look-aside buffer); 및
    메모리 액세스 및 연관된 물리적 어드레스를 특정하는 메모리 액세스 명령에 응답하여, 상기 메모리 액세스 명령에 대한 가상-물리적 메모리 변환을 우회하고, 상기 물리적 어드레스를 통해 상기 메모리 액세스를 수행하도록 구성된 실행 로직
    을 포함하는,
    프로세싱 시스템.
  12. 제 11 항에 있어서,
    상기 메모리 액세스는 로드이고, 상기 실행 로직은,
    상기 로드 요청의 물리적 어드레스와 연관된 데이터에 대해 상기 메모리와 상기 프로세서 간에 구성되는 하나 이상의 레벨들의 캐시들을 트래버싱(traversing)하도록; 그리고
    상기 로드 요청이 미스(miss)에 직면하는 어떠한 중간 캐시 레벨들의 상태도 수정함 없이, 상기 데이터가 먼저 발견된 메모리 또는 캐시 레벨로부터 상기 레지스터 파일의 물리적 어드레스에 대응하는 레지스터로 직접 데이터를 리턴(return)하도록
    구성되는,
    프로세싱 시스템.
  13. 제 12 항에 있어서,
    상기 실행 로직은 또한,
    상기 로드 요청이 미스에 직면하는 중간 캐시 레벨들로의 데이터의 할당을 방지하도록
    구성되는,
    프로세싱 시스템.
  14. 제 11 항에 있어서,
    상기 실행 로직은 또한,
    상기 물리적 어드레스와 연관된 페이지 속성들의 룩-업을 방지하도록
    구성되는,
    프로세싱 시스템.
  15. 제 11 항에 있어서,
    상기 메모리 액세스는 저장이며, 상기 실행 로직은,
    상기 저장 요청의 물리적 어드레스에 대해 상기 메모리와 상기 프로세서 간에 구성된 하나 이상의 레벨들의 캐시들을 트래버싱하도록; 그리고
    상기 저장 요청이 미스에 직면한 어떠한 중간 캐시 레벨들의 상태들도 수정함 없이, 상기 물리적 어드레스가 먼저 발견된 메모리 또는 캐시 레벨에, 상기 프로세서로부터의 상기 저장 요청과 연관된 데이터를 직접 기록하도록
    구성되는,
    프로세싱 시스템.
  16. 제 15 항에 있어서,
    상기 실행 로직은 또한,
    상기 저장 요청이 미스에 직면한 임의의 중간 캐시 레벨들의 할당을 방지하도록 구성되는,
    프로세싱 시스템.
  17. 제 15 항에 있어서,
    상기 메모리 액세스는 또한,
    라이트-쓰루 동작(write-through operation)으로서 특정되어서, 상기 물리적 어드레스가 제 1 캐시 레벨에서 먼저 발견되는 경우, 상기 실행 로직은 상기 제 1 캐시 레벨과 상기 메모리 간에 존재하는 임의의 캐시 레벨에 상기 데이터를 기록하도록 구성되는,
    프로세싱 시스템.
  18. 제 11 항에 있어서,
    반도체 다이에 통합되는,
    프로세싱 시스템.
  19. 제 11 항에 있어서,
    셋 톱 박스, 음악 재생기, 비디오 재생기, 엔터테인먼트 유닛, 네비게이션 디바이스, 통신 디바이스, 개인용 디지털 보조기기(PDA), 고정 위치 데이터 유닛 및 컴퓨터로 구성된 그룹으로부터 선택된 디바이스에 통합되는,
    프로세싱 시스템.
  20. 메모리에 액세스하기 위한 시스템으로서,
    메모리 액세스를 위한 물리적 어드레스를 특정하기 위한 수단;
    가상-물리적 어드레스 변환을 우회하기 위한 수단; 및
    상기 물리적 어드레스를 이용하여 상기 메모리 액세스를 수행하기 위한 수단
    을 포함하는,
    메모리에 액세스하기 위한 시스템.
  21. 제 20 항에 있어서,
    상기 메모리 액세스는 프로세서에 의해 개시된 로드 요청이며, 상기 시스템은,
    상기 로드 요청의 물리적 어드레스와 연관된 데이터에 대해 상기 메모리와 상기 프로세서 간에 구성되는 하나 이상의 레벨들의 캐시들을 트래버싱(traversing)하기 위한 수단; 및
    상기 로드 요청이 미스(miss)에 직면하는 어떠한 중간 캐시 레벨들의 상태도 수정함 없이, 상기 데이터가 먼저 발견된 메모리 또는 캐시 레벨로부터 상기 프로세서로 직접 데이터를 리턴(return)하기 위한 수단
    을 더 포함하는,
    메모리에 액세스하기 위한 시스템.
  22. 제 20 항에 있어서,
    상기 메모리 액세스는 프로세서에 의해 개시된 저장 요청이며, 상기 시스템은,
    상기 저장 요청의 물리적 어드레스에 대해 상기 메모리와 상기 프로세서 간에 구성된 하나 이상의 레벨들의 캐시들을 트래버싱하기 위한 수단; 및
    상기 저장 요청이 미스에 직면한 어떠한 중간 캐시 레벨들의 상태들도 수정함 없이, 상기 물리적 어드레스가 먼저 발견된 메모리 또는 캐시 레벨에, 상기 프로세서로부터의 상기 저장 요청과 연관된 데이터를 직접 기록하기 위한 수단
    을 더 포함하는,
    메모리에 액세스하기 위한 시스템.
  23. 프로세싱 시스템에 의해 실행될 때, 상기 프로세싱 시스템으로 하여금 메모리에 액세스하기 위한 동작들을 수행하게 하는 코드를 포함하는 비-일시적인 컴퓨터-판독 가능한 저장 매체로서,
    메모리 액세스를 위한 물리적 어드레스를 특정하기 위한 코드;
    가상-물리적 어드레스 변환을 우회하기 위한 코드; 및
    상기 물리적 어드레스를 이용하여 상기 메모리 액세스를 수행하기 위한 코드를 포함하는,
    비-일시적인 컴퓨터-판독 가능한 저장 매체.
KR1020147022169A 2012-01-10 2013-01-10 물리적 어드레스들을 통해 비-할당 메모리 액세스 KR20140110070A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261584964P 2012-01-10 2012-01-10
US61/584,964 2012-01-10
US13/398,927 2012-02-17
US13/398,927 US20130179642A1 (en) 2012-01-10 2012-02-17 Non-Allocating Memory Access with Physical Address
PCT/US2013/021050 WO2013106583A1 (en) 2012-01-10 2013-01-10 Non-allocating memory access with physical address

Publications (1)

Publication Number Publication Date
KR20140110070A true KR20140110070A (ko) 2014-09-16

Family

ID=48744770

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147022169A KR20140110070A (ko) 2012-01-10 2013-01-10 물리적 어드레스들을 통해 비-할당 메모리 액세스

Country Status (6)

Country Link
US (1) US20130179642A1 (ko)
EP (1) EP2802993A1 (ko)
JP (1) JP6133896B2 (ko)
KR (1) KR20140110070A (ko)
CN (1) CN104067246B (ko)
WO (1) WO2013106583A1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9639476B2 (en) * 2013-09-26 2017-05-02 Cavium, Inc. Merged TLB structure for multiple sequential address translations
US9268694B2 (en) 2013-09-26 2016-02-23 Cavium, Inc. Maintenance of cache and tags in a translation lookaside buffer
US9645941B2 (en) * 2013-09-26 2017-05-09 Cavium, Inc. Collapsed address translation with multiple page sizes
US9208103B2 (en) * 2013-09-26 2015-12-08 Cavium, Inc. Translation bypass in multi-stage address translation
US20150161057A1 (en) * 2013-12-05 2015-06-11 Qualcomm Incorporated System and method for providing client-side address translation in a memory management system
US11775443B2 (en) * 2014-10-23 2023-10-03 Hewlett Packard Enterprise Development Lp Supervisory memory management unit
US20160210231A1 (en) * 2015-01-21 2016-07-21 Mediatek Singapore Pte. Ltd. Heterogeneous system architecture for shared memory
GB2536880B (en) * 2015-03-24 2021-07-28 Advanced Risc Mach Ltd Memory management
US10078597B2 (en) * 2015-04-03 2018-09-18 Via Alliance Semiconductor Co., Ltd. System and method of distinguishing system management mode entries in a translation address cache of a processor
US10180908B2 (en) * 2015-05-13 2019-01-15 Qualcomm Incorporated Method and apparatus for virtualized control of a shared system cache
US9672159B2 (en) * 2015-07-02 2017-06-06 Arm Limited Translation buffer unit management
US10223289B2 (en) * 2015-07-07 2019-03-05 Qualcomm Incorporated Secure handling of memory caches and cached software module identities for a method to isolate software modules by means of controlled encryption key management
US20170046158A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Determining prefetch instructions based on instruction encoding
US10019380B2 (en) * 2015-09-25 2018-07-10 Qualcomm Incorporated Providing memory management functionality using aggregated memory management units (MMUs)
DE102017000530B4 (de) 2016-02-09 2023-12-21 Avago Technologies International Sales Pte. Limited Skalierbare Maschinennetzkopplungsstruktur mit niedriger Latenz für Switch-Chips
US10102168B2 (en) * 2016-02-09 2018-10-16 Avago Technologies General Ip (Singapore) Pte. Ltd. Scalable low-latency mesh interconnect for switch chips
US20170255569A1 (en) * 2016-03-01 2017-09-07 Qualcomm Incorporated Write-allocation for a cache based on execute permissions
US9823854B2 (en) * 2016-03-18 2017-11-21 Qualcomm Incorporated Priority-based access of compressed memory lines in memory in a processor-based system
US11221971B2 (en) 2016-04-08 2022-01-11 Qualcomm Incorporated QoS-class based servicing of requests for a shared resource
US10482021B2 (en) * 2016-06-24 2019-11-19 Qualcomm Incorporated Priority-based storage and access of compressed memory lines in memory in a processor-based system
US10061698B2 (en) * 2017-01-31 2018-08-28 Qualcomm Incorporated Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur
CN116431530B (zh) * 2023-02-08 2024-03-15 北京超弦存储器研究院 一种cxl内存模组、内存的处理方法及计算机系统

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5307477A (en) * 1989-12-01 1994-04-26 Mips Computer Systems, Inc. Two-level cache memory system
DE4323929A1 (de) * 1992-10-13 1994-04-14 Hewlett Packard Co Software-geführtes Mehrebenen-Cache-Speichersystem
US5623632A (en) * 1995-05-17 1997-04-22 International Business Machines Corporation System and method for improving multilevel cache performance in a multiprocessing system
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US5740399A (en) * 1995-08-23 1998-04-14 International Business Machines Corporation Modified L1/L2 cache inclusion for aggressive prefetch
US6085291A (en) * 1995-11-06 2000-07-04 International Business Machines Corporation System and method for selectively controlling fetching and prefetching of data to a processor
US5737751A (en) * 1996-03-26 1998-04-07 Intellectual Business Machines Corporation Cache memory management system having reduced reloads to a second level cache for enhanced memory performance in a data processing system
US5956507A (en) * 1996-05-14 1999-09-21 Shearer, Jr.; Bennie L. Dynamic alteration of operating system kernel resource tables
US5892970A (en) * 1996-07-01 1999-04-06 Sun Microsystems, Inc. Multiprocessing system configured to perform efficient block copy operations
US5983332A (en) * 1996-07-01 1999-11-09 Sun Microsystems, Inc. Asynchronous transfer mode (ATM) segmentation and reassembly unit virtual address translation unit architecture
US5960465A (en) * 1997-02-27 1999-09-28 Novell, Inc. Apparatus and method for directly accessing compressed data utilizing a compressed memory address translation unit and compression descriptor table
US6014740A (en) * 1997-04-11 2000-01-11 Bmc Software, Inc. Single instruction method of seizing control of program execution flow in a multiprocessor computer system
US6145054A (en) * 1998-01-21 2000-11-07 Sun Microsystems, Inc. Apparatus and method for handling multiple mergeable misses in a non-blocking cache
US6341325B2 (en) * 1999-01-12 2002-01-22 International Business Machines Corporation Method and apparatus for addressing main memory contents including a directory structure in a computer system
US6385712B1 (en) * 1999-10-25 2002-05-07 Ati International Srl Method and apparatus for segregation of virtual address space
US6625714B1 (en) * 1999-12-17 2003-09-23 Hewlett-Packard Development Company, L.P. Parallel distributed function translation lookaside buffer
US6741258B1 (en) * 2000-01-04 2004-05-25 Advanced Micro Devices, Inc. Distributed translation look-aside buffers for graphics address remapping table
US6711653B1 (en) * 2000-03-30 2004-03-23 Intel Corporation Flexible mechanism for enforcing coherency among caching structures
US6549997B2 (en) * 2001-03-16 2003-04-15 Fujitsu Limited Dynamic variable page size translation of addresses
US6889308B1 (en) * 2002-01-18 2005-05-03 Advanced Micro Devices, Inc. Method and apparatus for protecting page translations
RU2005115094A (ru) * 2002-11-18 2006-01-20 Арм Лимитед (Gb) Отображение адресов виртуальной памяти на физические адреса в системе с наличием защищенного домена и незащищенного домена
US20040193833A1 (en) * 2003-03-27 2004-09-30 Kathryn Hampton Physical mode addressing
US7076635B1 (en) * 2003-09-04 2006-07-11 Advanced Micro Devices, Inc. Method and apparatus for reducing instruction TLB accesses
US7302528B2 (en) * 2004-11-19 2007-11-27 Intel Corporation Caching bypass
US9280473B2 (en) * 2004-12-02 2016-03-08 Intel Corporation Method and apparatus for accessing physical memory from a CPU or processing element in a high performance manner
US7237065B2 (en) * 2005-05-24 2007-06-26 Texas Instruments Incorporated Configurable cache system depending on instruction type
JP5076411B2 (ja) * 2005-11-30 2012-11-21 ソニー株式会社 記憶装置、コンピュータシステム
US7376807B2 (en) * 2006-02-23 2008-05-20 Freescale Semiconductor, Inc. Data processing system having address translation bypass and method therefor
US20080229026A1 (en) * 2007-03-15 2008-09-18 Taiwan Semiconductor Manufacturing Co., Ltd. System and method for concurrently checking availability of data in extending memories
US9710384B2 (en) * 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
JP2009093559A (ja) * 2007-10-11 2009-04-30 Nec Corp プロセッサ、情報処理装置、プロセッサのキャッシュ制御方法
US8145874B2 (en) * 2008-02-26 2012-03-27 Qualcomm Incorporated System and method of data forwarding within an execution unit
US8185692B2 (en) * 2009-02-09 2012-05-22 Oracle America, Inc. Unified cache structure that facilitates accessing translation table entries

Also Published As

Publication number Publication date
CN104067246B (zh) 2018-07-03
JP2015503805A (ja) 2015-02-02
CN104067246A (zh) 2014-09-24
EP2802993A1 (en) 2014-11-19
JP6133896B2 (ja) 2017-05-24
WO2013106583A1 (en) 2013-07-18
US20130179642A1 (en) 2013-07-11

Similar Documents

Publication Publication Date Title
KR20140110070A (ko) 물리적 어드레스들을 통해 비-할당 메모리 액세스
US20220050791A1 (en) Linear to physical address translation with support for page attributes
KR101587361B1 (ko) 다수의 순차적 어드레스 변환들을 위한 통합된 tlb 구조
JP5108002B2 (ja) 物理タグ付け動作を用いる仮想タグ付き命令キャッシュ
KR101598353B1 (ko) 다중-스테이지 어드레스 변환에서의 변환 바이패스
JP6081672B2 (ja) 多数の異なるアドレス空間をサポートするプロセッサにおける効率的なアドレス変換キャッシング
US9619387B2 (en) Invalidating stored address translations
CA2088978C (en) Translation buffer for virtual machines with address space match
KR101467069B1 (ko) 일련의 페이지의 캐시 플러싱 및 일련의 엔트리의 tlb 무효화를 위한 시스템, 방법 및 장치
US7734892B1 (en) Memory protection and address translation hardware support for virtual machines
US10083126B2 (en) Apparatus and method for avoiding conflicting entries in a storage structure
US9632776B2 (en) Preload instruction control
KR20170100003A (ko) 가상 주소들을 사용하여 액세스된 캐시
US8819342B2 (en) Methods and apparatus for managing page crossing instructions with different cacheability
TW201734807A (zh) 基於執行許可之一快取之寫分配
JP7449694B2 (ja) 変換索引バッファにおける構成可能なスキューアソシエイティビティ
CN112639750A (zh) 用于控制存储器存取的装置及方法
JP2022548219A (ja) 変換ルックアサイドバッファ無効化

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application