KR102290464B1 - 시스템 온 칩 및 그것의 주소 변환 방법 - Google Patents

시스템 온 칩 및 그것의 주소 변환 방법 Download PDF

Info

Publication number
KR102290464B1
KR102290464B1 KR1020140117790A KR20140117790A KR102290464B1 KR 102290464 B1 KR102290464 B1 KR 102290464B1 KR 1020140117790 A KR1020140117790 A KR 1020140117790A KR 20140117790 A KR20140117790 A KR 20140117790A KR 102290464 B1 KR102290464 B1 KR 102290464B1
Authority
KR
South Korea
Prior art keywords
virtual address
buffer
address
prefetch
memory
Prior art date
Application number
KR1020140117790A
Other languages
English (en)
Other versions
KR20150031402A (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 KR20150031402A publication Critical patent/KR20150031402A/ko
Application granted granted Critical
Publication of KR102290464B1 publication Critical patent/KR102290464B1/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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/1009Address translation using page tables, e.g. page table structures
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main 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)에 이미 존재하는지 결정하는 단계, 그리고 상기 변환 색인 버퍼(TLB)에 상기 가상 주소에 대응하는 페이지 디스크립터가 존재하지 않는 경우, 상기 가상 주소에 대응하는 페이지 디스크립터가 복수의 물리 주소에 대한 페이지 디스크립터들을 저장하기 위한 프리패치 버퍼에 존재하는지 검출하는 단계를 포함하되, 상기 프리패치 버퍼에 상기 가상 주소에 대응하는 페이지 디스크립터가 존재하지 않는 경우에는, 상기 가상 주소에 대응하는 페이지 디스크립터를 메모리 장치로부터 패치하여 상기 프리패치 버퍼에 업데이트하는 단계, 상기 페이지 디스크립터를 사용하여 상기 가상 주소를 물리 주소로 변환하는 단계, 그리고 상기 검출 결과에 따라 상기 페이지 디스크립터로 상기 변환 색인 버퍼(TLB)를 업데이트하는 단계를 포함한다.

Description

시스템 온 칩 및 그것의 주소 변환 방법{SYSTEM-ON-CHIP AND ADDRESS TRANSLATION METHOD THEREOF}
본 발명은 반도체 장치에 관한 것으로, 좀 더 구체적으로는 가상 메모리 기법을 사용하는 시스템 온 칩 및 그것들의 주소 변환 방법에 관한 것이다.
스마트폰, 테이블릿 PC, 디지털 카메라, MP3 플레이어, PDA 등과 같은 모바일 장치의 이용이 폭발적으로 증가하고 있다. 이들 모바일 장치의 핵심 구동 프로세서로서 소위 응용 프로세서(Application Processor)가 사용되고 있다. 다양한 기능 블록들(Intellectual Property: 이하, IP)을 포함하는 응용 프로세서에서 메모리 사용 효율을 높이기 위한 메모리 관리 기법으로 가상 메모리 관리 기법이 사용되고 있다. 가상 메모리 관리 기법(Virtual Memory Management Scheme)에 의하면, 사용자와 기능 블록들(IPs)은 가상 주소(Virtual address)를 통해서 메모리에 접근하게 된다.
가상 주소(Virtual Address: 이하, VA)를 메모리의 물리 주소(Physical Address: 이하, PA)로 변환하는 하드웨어로 메모리 관리 유닛(Memory Management Unit: 이하, MMU)이 있다. 메모리 관리 유닛(MMU)은 입력된 가상 주소(VA)를 물리 주소(PA)로 변환(Translation)하기 위하여 메모리로부터 주소 변환 정보(예를 들면, 페이지 디스크립터)를 패치(Fetch)한다. 그리고 메모리 관리 유닛(MMU)은 페이지 디스크립터를 참조하여 가상 주소(VA)를 물리 주소(PA로 변환하여 메모리 장치에 접근할 것이다.
주소 변환을 수행할 때, 만일 접근 요청된 가상 주소에 대응하는 페이지 디스크립터가 이미 메모리 관리 유닛(MMU)에 존재하는 경우, 별도의 메모리 접근이 불필요하므로 주소 변환 연산은 신속히 수행될 수 있다. 하지만, 접근 요청된 가상 주소에 대응하는 페이지 디스크립터가 메모리 관리 유닛(MMU)의 내부에 존재하지 않는 경우, 메모리 장치로의 접근은 이중으로 발생한다. 즉, 주소 변환 오버헤드(Address Translation Overhead)가 발생하게 된다. 레이턴시가 성능의 결정적인 요인으로 작용하는 서비스를 위해서는 이러한 주소 변환 오버헤드는 최소화시켜야 한다.
본 발명의 목적은, 응용 프로세서의 메모리 접근 동작시에 주소 변환 오버헤드를 줄일 수 있는 메모리 관리 유닛 및 그것을 포함하는 시스템 온 칩, 모바일 장치 및 그것의 동작 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명에 따른 가상 주소 맵핑 방식에 따라 메모리에 접근하는 시스템 온 칩은, 상기 메모리에 로드되는 소프트웨어를 실행하는 프로세싱 유닛, 상기 메모리에 접근하기 위하여 가상 주소를 생성하여 상기 메모리에 대한 접근 요청을 이슈하는 하드웨어 기능 블록, 그리고 상기 가상 주소를 물리 주소로 변환하여 상기 하드웨어 기능 블록의 접근 요청을 수행하는 메모리 관리 유닛을 포함하되, 상기 메모리 관리 유닛은 상기 프로세싱 유닛 또는 상기 하드웨어 기능 블록으로부터 제공되는 접근 방향 정보를 참조하여 상기 하드웨어 기능 블록이 접근 요청할 가상 주소의 페이지 디스크립터를 미리 프리패치한다.
상기 목적을 달성하기 위한 본 발명에 따른 가상 주소 맵핑 방식에 따라 메모리에 접근하는 시스템 온 칩은, 가상 주소를 생성하여 접근 요청을 이슈하는 하드웨어 기능 블록, 그리고 상기 가상 주소를 물리 주소로 변환하여 상기 하드웨어 기능 블록의 접근 요청을 수행하는 메모리 관리 유닛을 포함하되, 상기 메모리 관리 유닛은 상기 하드웨어 기능 블록으로부터의 하드웨어 패치 명령에 응답하여 접근이 예상되는 가상 주소 영역의 페이지 디스크립터를 미리 패치하여 저장한다.
상기 목적을 달성하기 위한 가상 메모리 맵핑 방식에 따라 메모리에 접근하는 시스템 온 칩의 주소 변환 방법은, 접근 요청될 데이터 단위의 시작 주소에 대응하는 제 1 페이지 디스크립터를 상기 메모리로부터 패치하도록 메모리 관리 유닛에 제 1 패치 명령을 제공하는 단계, 상기 데이터 단위에서 접근 방향 정보에 따라 페이지 디스크립터를 프리패치할 때 미스가 발생할 주소에 대응하는 제 2 페이지 디스크립터를 패치하도록 상기 메모리 관리 유닛에 제 2 패치 명령을 제공하는 단계, 상기 데이터 단위에 대한 접근 요청을 이슈하는 단계, 그리고 접근 방향 정보에 따라 상기 시작 주소에 후속하여 접근 요청될 예상 주소에 대응하는 제 3 페이지 디스크립터를 프리패치하는 단계를 포함한다.
이상과 같은 본 발명의 실시 예에 따르면, 주소 변환 오버헤드가 예상되는 다양한 조건에서 페이지 디스크립터를 메모리 관리 유닛(MMU)의 내부에 미리 저장할 수 있다. 이러한 실시 예에 따라 가상 메모리 접근시에 발생하는 주소 변환 오버헤드를 획기적으로 감소시킬 수 있다.
도 1은 본 발명의 실시 예에 따른 시스템 온 칩을 보여주는 블록도이다.
도 2는 본 발명의 프리패치 방법을 보여주는 가상 메모리 맵이다.
도 3은 본 발명의 메모리 관리 유닛의 일 실시 예를 보여주는 블록도이다.
도 4는 본 발명의 프리패치 버퍼(PB)의 운영 방법을 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 프리패치 버퍼 매칭 방법을 보여주는 도면이다.
도 6은 프리패치 버퍼 매칭 방법의 실시 예를 보여주는 블록도이다.
도 7a 및 도 7b는 본 발명의 프리패치 버퍼의 운용 방법의 다른 실시 예를 간략히 보여주는 도면들이다.
도 8은 본 발명의 프리패치 버퍼의 운용 방법의 다른 실시 예를 보여주는 블록도이다.
도 9는 본 발명의 변환 색인 버퍼(TLB)의 조건적 업데이트 방법을 보여주는 순서도이다.
도 10은 본 발명의 실시 예에 따른 프리패치 버퍼를 사용한 주소 변환 방법을 보여주는 순서도이다.
도 11은 도 10의 변환 색인 버퍼(TLB)의 힛트에 따른 프리패치 버퍼(PB)의 업데이트 방법을 간략히 보여주는 순서도이다.
도 12 및 도 13은 각각 도 1의 시스템 온 칩을 변경한 실시 예들을 보여주는 블록도들이다.
도 14는 본 발명의 다른 실시 예에 따른 모바일 장치를 보여주는 블록도이다.
도 15는 도 14의 메모리 관리 유닛의 구성을 예시적으로 보여주는 블록도이다.
도 16은 본 발명의 다이렉트 패치 요청을 사용하는 예를 간략히 보여주는 도면이다.
도 17은 본 발명의 다이렉트 패치 동작을 수행하기 위한 하드웨어들 간의 통신 과정을 간략히 보여주는 도면이다.
도 18은 본 발명의 또 다른 실시 예에 따른 모바일 장치를 보여주는 블록도이다.
도 19는 도 18의 메모리 관리 유닛의 구성을 보여주는 블록도이다.
도 20은 본 발명의 소프트웨어 다이렉트 패치(SDF)을 통해서 패치가 요청되는 가상 주소의 위치를 보여주는 메모리 맵이다.
도 21은 소프트웨어 다이렉트 패치(SDF)의 이슈 지점을 간략히 보여주는 타이밍도이다.
도 22는 소프트웨어 다이렉트 패치 요청(SDF)과 관련된 변환 색인 버퍼의 관리 방법을 보여주는 도면이다.
도 23은 본 발명의 소프트웨어 다이렉트 패치 동작을 보여주는 순서도이다.
도 24는 본 발명의 실시 예에 따른 시스템 온 칩을 포함하는 모바일 장치를 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 시스템 온 칩(SoC)이 본 발명의 특징 및 기능을 설명하기 위한 단위의 예로서 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다.
도 1은 본 발명의 실시 예에 따른 시스템 온 칩을 보여주는 블록도이다. 도 1을 참조하면, 본 발명의 시스템 온 칩(100)은 프로세싱 유닛(110), 하드웨어 기능 블록(120), 메모리 관리 유닛(130), 인터커넥터(140), 그리고 메모리(150)를 포함할 수 있다. 메모리(150)는 시스템 온 칩(100)의 내부 또는 외부에 제공되는 디램이나 에스램과 같은 메모리 자원(Memory resource)을 통칭한다.
프로세싱 유닛(110)은 모바일 장치에서 구동될 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버들)를 실행한다. 더불어, 프로세싱 유닛(110)은 응용 프로그램이나 운영 체제(OS)와 같은 소프트웨어에 의해서 제어되기도 한다. 프로세싱 유닛(110)은 동종 멀티-코어 프로세서(Homogeneous Multi-Core Processor) 또는 이종 멀티-코어 프로세서(Heterogeneous Multi-Core Processor)로 제공될 수 있다. 멀티-코어 프로세서는 적어도 2개의 독립적으로 구동될 수 있는 프로세서들(이하, 코어)을 갖는 컴퓨팅 컴포넌트(Computing component)이다. 코어들 각각은 프로그램 명령들(Program Instructions)을 독립적으로 읽고 실행할 수 있다.
본 발명의 프로세싱 유닛(110)은 소프트웨어(예를 들면, 장치 드라이버)의 제어에 따라 메모리 관리 유닛(130)을 제어할 수 있다. 또는, 프로세싱 유닛(110)은 소프트웨어의 제어에 따라 메모리 관리 유닛(130)의 동작 모드, 접근 모드, 그리고 주소 변환 모드를 설정할 수 있다. 사용자는 장치 드라이버의 설정을 통해서 메모리 관리 유닛(130)의 주소 변환 동작을 다양한 방식으로 설정할 수 있을 것이다. 특히, 프로세싱 유닛(110)은 하드웨어 기능 블록(120)의 메모리 접근 패턴을 참조하여 메모리 관리 유닛(130)으로 접근 방향 정보(ADI1)를 제공할 수 있다.
하드웨어 기능 블록(120)은 메모리 관리 유닛(130)을 통해서 메모리(150)에 접근하는 시스템 온 칩(SoC)의 블록이다. 예를 들면, 하드웨어 기능 블록(120)은 하드웨어 코덱(H/W Codec), 이미지 컨버터(Image converter), 액정 표시 장치 컨트롤러(LCD controller) 중 어느 하나일 수 있다. 이러한 기능 블록들은 이미지의 변환이나 처리, 재생을 위해서 메모리(150)에 프레임 버퍼(Frame Buffer) 영역을 빈번하게 접근할 것이다. 메모리(150)로의 접근은 가상 주소(VA)에 의해서 메모리 관리 유닛(130)에 요청된다. 하드웨어 기능 블록(120)의 기능이나 세부적인 구성은 여기에만 국한되지 않는다. 콘텐츠의 처리를 위해 메모리(150)에 접근하는 다양한 기능 블록들이 하드웨어 기능 블록(120)에 포함될 수 있다.
일반적으로 이미지를 처리하는 하드웨어 기능 블록(120)의 경우, 이미지를 구성하는 일부 데이터들에 대해서 반복적으로 처리하는 경향이 있다. 예를 들면, 어느 하나의 프레임을 화면에 표시하기 위해서는 픽셀 데이터를 서브 블록 단위로 프레임 버퍼에 기입할 수 있다. 이때, 프레임 버퍼(Frame buffer)에 픽셀 데이터를 기입하는 주소 패턴에는 반복성이 존재한다. 이러한 반복성이나 프레임 버퍼 내에서의 메모리 접근 방향을 고려한다면, 주소 변환 오버헤드를 줄일 수 있다. 본 발명의 하드웨어 기능 블록(120)은 메모리 관리 유닛(130)으로 현재 접근 요청과 더불어 이후 접근될 메모리 영역에 대한 접근 방향 정보(ADI2)를 제공할 수 있다.
메모리 관리 유닛(130)은 접근 방향 정보(ADI1 또는 ADI2)를 참조하여 하드웨어 기능 블록(120)이 요청하는 가상 주소(VA)에 대하여 이후 접근 요청될 주소의 페이지 디스크립터(Page descriptor)를 프리패치한다. 메모리 관리 유닛(130)은 하드웨어 기능 블록(120)으로부터 제공되는 가상 주소(VA)를 메모리(150)의 물리 주소(PA)로 변환한다. 예를 들면, 가상 주소(VA)가 디램(DRAM) 또는 에스램(SRAM) 영역을 지시하는 경우, 메모리 관리 유닛(130)은 대응하는 장치의 물리 주소(PA)를 맵핑한다.
메모리 관리 유닛(130)은 접근 방향 정보(ADI1 또는 ADI2)를 참조하여 접근 예상되는 가상 주소(VA)의 페이지 디스크립터(Page descriptor)를 미리 프리패치할 수 있다. 현재 액세스 요청된 가상 주소(VA)에 대해서 물리 주소(PA)로 변환하기 위한 연산을 수행하면서, 메모리 관리 유닛(130)은 이후에 접근될 가상 주소(VA)의 페이지 디스크립터를 메모리(150)로부터 미리 패치하여 저장한다. 그러면, 이후의 메모리 접근 동작시 요청된 가상 주소(VA)와 프리패치된 페이지 디스크립터(Page descriptor)가 일치하는 경우, 주소 변환 오버헤드 문제는 해결될 것이다. 이러한 프리패치 동작을 지원하기 위하여 메모리 관리 유닛(130)은 프리패치 버퍼(Prefetch Buffer, 135)를 포함할 수 있다.
인터커넥터(140)는 프로세싱 유닛(110)이나 하드웨어 기능 블록(120)에 메모리 접근 경로를 제공한다. 인터커넥터(140)를 통해서 프로세싱 유닛(110)과 하드웨어 기능 블록(120)은 메모리(150)를 접근한다. 인터커넥터(140)는 복수의 채널을 통해서 데이터, 주소, 제어 신호의 경로를 제공한다. 예를 들면, 인터커넥터(140)는 ARM사의 AMBA(Advanced Microcontroller Bus Architecture) 표준 버스 규격 타입일 수 있다. AMBA의 버스 타입으로는 AHB(Advanced High-Performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface)를 들 수 있다. 이 중 AXI 프로토콜은 멀티플 아웃스탠딩 주소(Multiple outstanding address) 기능과 데이터 인터리빙(Data interleaving) 기능 등의 진보된 기능을 포함하고 있다. 하지만, 본 발명의 인터커넥터(140)는 상술한 예시에만 국한되지 않음은 잘 이해될 것이다.
메모리(150)에는 다양한 데이터가 로드될 수 있다. 예를 들면, 운영 체제나 하드웨어를 구동하기 위한 장치 드라이버(Device driver)들이 로드될 수 있다. 특히, 이미지 데이터를 처리하기 위해서 메모리(150)에는 프레임 버퍼(Frame Buffer) 영역이 할당된다. 더불어, 메모리(150)에는 가상 주소(VA)를 물리 주소로 변환하기 위한 주소 변환 테이블(155, AT Table)이 구비될 것이다. 주소 변환 테이블(155)에는 가상 주소(VA)에 대응하는 물리 주소(PA)를 변환하기 위한 페이지 디스크립터(Page descriptor)가 구비된다. 메모리 관리 유닛(130)에 제공되는 가상 주소(VA)를 물리 주소(PA)로 변환하기 위해서는 메모리(150)의 페이지 디스크립터(Page descriptor)가 메모리 관리 유닛(130)에 패치(Fetch)되어야 한다.
이상에서 설명된 시스템 온 칩(100)은 현재 접근 요청된 가상 주소(VA)에 대해 후속되어 접근 예상되는 가상 주소(VA)의 페이지 디스크립터(Page descriptor)를 미리 프리패치하는 메모리 관리 유닛(130)을 포함한다. 더불어, 메모리 관리 유닛(130)이 프리패치할 페이지 디스크립터(Page descriptor)에 대한 위치 정보에 대응하는 접근 방향 정보(ADI1 또는 ADI2)를 프로세싱 유닛(110) 또는 하드웨어 기능 블록(120)으로부터 제공받을 수 있다.
접근 방향성이 일관된 경우에는 소프트웨어 또는 프로세싱 유닛(110)으로부터 제공되는 접근 방향 정보(ADI1)에 따라 메모리 관리 유닛(130)의 프리패치 패턴이 결정될 수 있다. 반면, 접근될 방향이 랜덤한 경우에는 하드웨어 기능 블록(120)으로부터 제공되는 접근 방향 정보(ADI2)에 따라 페이지 디스크립터를 프리패치하는 것이 바람직할 것이다. 메모리 관리 유닛(130)은 각 상황에 적절한 접근 방향 정보에 따라 프리패치 방향을 선택할 수 있을 것이다. 만일, 프리패치된 페이지 디스크립터와 접근 요청된 가상 주소(VA)가 일치하지 않는다면, 메모리 관리 유닛(130)은 블록 패치(Block fetch) 방식에 따라 페이지 디스크립터를 패치해 올 것이다.
상술한 메모리 관리 유닛(130)의 페이지 디스크립터(Page descriptor)의 프리패치 동작에 따라 반복적인 접근 특성을 갖는 데이터에 대해서 높은 주소 변환 효율을 제공할 수 있다.
도 2는 본 발명의 프리패치 방법을 보여주기 위한 메모리 맵이다. 도 2를 참조하면, 메모리(150)는 가상 메모리 맵(Virtual Memory Map)으로 관리될 수 있다. 도시된 가상 메모리 맵에는 주소 변환 테이블(AT Table)에 대응하는 페이지 디스크립터들이 맵핑된 것으로 가정하기로 한다. 하지만, 메모리(150)에는 주소 변환 테이블 이외에도 프레임 버퍼(Frame Buffer), 코덱 버퍼(Codec Buffer)들이 포함될 수 있음은 잘 이해될 것이다.
여기서, 메모리 관리 유닛(130)에는 m번째 블록(BLKm)의 서브 블록(SB1)과, m+1번째 블록(BLKm+1)의 서브 블록(SB0)이 프리패치된 상태라 가정하기로 한다. 더불어, 프로세싱 유닛(110) 또는 하드웨어 기능 블록(120)에 의해서 주소가 증가하는 방향으로 프리패치하도록 접근 방향 정보(ADI1 또는 ADI2)가 제공된 상태라 가정하기로 한다.
메모리 관리 유닛(130)은 서브 블록(Sub-Block: SB) 단위로 페이지 디스크립터를 프리패치한다. 그리고 메모리 관리 유닛(130)은 요청된 가상 주소(VA)에 대응하는 페이지 디스크립터(Page descriptor)가 내부에 존재하지 않는 경우에는 복수의 서브-블록(SB)을 한번에 패치하게 될 것이다. 이러한 패치 방식을 블록 패치(Block fetch)라 한다. 여기서, 하나의 서브 블록(SB)은 N(N은 자연수)개의 페이지 단위로 구성될 수 있다. 페이지는 가상 주소에서 관리되는 최소 데이터 사이즈이다. 예를 들면, 페이지는 4K 바이트(byte) 크기의 단위일 수 있다. 하지만, 페이지의 사이즈는 다양하게 변경될 수 있음은 잘 이해될 것이다.
현재 접근되는 페이지(Currently accessing page)의 페이지 디스크립터(Page descriptor)가 메모리 관리 유닛(130)의 내부에 존재하고, 접근 예측된 서브 블록(BLKm+1(SB0))에 대응하는 페이지 디스크립터도 프리패치된 상태이다. 따라서, 이런 경우에는 메모리 관리 유닛(130)은 서브 블록에 대한 프리패치 동작을 수행하지 않을 것이다. 반면, 현재 접근중인 페이지가 서브 블록(BLKm+1(SB0))에 대응하는 경우, 메모리 관리 유닛(130)은 서브 블록(BLKm+1(SB1))을 프리패치해야 할 것이다. 즉, 메모리 관리 유닛(130)은 적어도 1개의 서브 블록 사이즈에 해당하는 페이지 디스크립터들이 내부에 항상 구비되도록 프리패치 동작을 수행할 수 있다.
다른 실시 예에서, 도 4에 도시된 바와 같이 메모리 관리 유닛(130)에 포함되는 프리패치 버퍼(135)는 적어도 2개의 서브-프리패치 버퍼를 포함할 수 있다. 이 경우, 메모리 관리 유닛(130)은 프리패치 버퍼(135)의 사용 효율을 높이기 위해서 이중 버퍼링 방식을 사용할 수 있다. 이중 버퍼링 방식에서, 메모리 관리 유닛(130)은 두 개의 버퍼들이 데이터 블록을 저장하고 관리할 수 있다. 이 경우, 하나의 버퍼가 액세스되는 동안에 사용되지 않는 다른 하나의 버퍼는 업데이트될 수 있다. 도 2에서, "블록 패치 유닛"과 "프리패치 유닛"은 각각 프리패치 버퍼(135)와 서브-프리패치 버퍼의 사이즈에 매칭될 수 있다. 여기서, "현재 접근중인" 페이지 디스크립터는 현재 요청된 가상 주소(VA)에 대응하고, 블록(BLKm(SB0)에 포함된다. 만일, 프리패치 버퍼(135)에 BLKm(SB0)과 BLKm(SB1)이 존재하고 있는 경우, 메모리 관리 유닛(130)은 서브 프리패치 버퍼에 존재하는 사용되지 않는 BLKm(SB0)의 데이터를 어드레스가 증가 또는 감소하는 방향으로 업데이트할 수 있다.
도 3은 본 발명의 일 실시 예에 따른 메모리 관리 유닛(MMU)을 보여주는 블록도이다. 도 3을 참조하면, 메모리 관리 유닛(130)은 슬레이브 인터페이스들(131, 132), 마스터 인터페이스(136), 주소 변환 매니저(133), 변환 색인 버퍼(134, Translation Look-aside Buffer: 이하, TLB), 프리패치 버퍼(135), 제어 레지스터(137)를 포함한다. 본 발명의 메모리 관리 유닛(130)은 접근 요청이 발생하면, 접근 방향 정보(ADI1 또는 ADI2) 참조하여 서브 블록(SB) 단위로 페이지 디스크립터를 프리패치하여 프리패치 버퍼(135)에 저장한다.
제 1 슬레이브 인터페이스(131)는 메모리 관리 유닛(130)의 마스터(Master)인 하드웨어 기능 블록(120, 도 1 참조)과의 인터페이싱을 제공한다. 제 1 슬레이브 인터페이스(131)는, 예를 들면, AXI(Advanced eXtensible Interface) 프로토콜에 해당하는 인터페이싱 구조를 가질 수 있다. 하드웨어 기능 블록(120)은 제 1 슬레이브 인터페이스(131)를 통해서 메모리 관리 유닛(130)에 메모리 접근 요청을 전달할 수 있다. 제 1 슬레이브 인터페이스(131)의 주소 채널(AR, AW)을 통해서 메모리 관리 유닛(130)은 메모리(150)로의 접근 요청을 수신할 수 있다. 더불어, 메모리 관리 유닛(130)은 제 1 슬레이브 인터페이스(131)를 통해서 하드웨어 기능 블록(120)으로부터의 접근 방향 정보(ADI2)를 제공받을 수 있다.
제 2 슬레이브 인터페이스(132)는 제어 레지스터(137)를 설정하기 위한 별도의 슬레이브 인터페이스이다. 제 2 슬레이브 인터페이스(132)를 통해서 프로세싱 유닛(110, 도 1 참조)은 메모리 관리 유닛(130)의 특정 동작을 제어할 수 있다. 제 2 슬레이브 인터페이스(132)는, 예를 들면, APB(Advanced Peripheral Bus) 프로토콜에 따라 프로세싱 유닛(110)과 통신할 수 있을 것이다. 제 2 슬레이브 인터페이스(132)를 통해서 메모리 관리 유닛(130)은 소프트웨어 레벨(예를 들면, 장치 드라이버)에서 제공되는 접근 방향 정보(ADI1)을 제공받을 수 있다. 접근 방향 정보(ADI1 또는 ADI2)는 제어 레지스터(137)에 저장될 수 있다.
주소 변환 매니저(133)는 접근 요청된 가상 주소(VA)를 물리 주소(PA)로 변환하기 위한 제반 제어 동작을 수행한다. 주소 변환 매니저(133)는 하드웨어 기능 블록(120)으로부터 주소 채널(AR, AW)을 통해서 제공된 가상 주소(VA)를 물리 주소(PA)로 변환하기 위해 일차적으로 변환 색인 버퍼(134)를 룩업(look-up)한다. 변환 색인 버퍼(134)에 접근 요청된 가상 주소(VA)의 페이지 디스크립터가 존재하는 경우(TLB hit), 주소 변환 매니저(133)는 해당 페이지 디스크립터를 참조하여 물리 주소(PA)를 생성할 것이다. 변환 색인 버퍼(134)에 접근 요청된 가상 주소(VA)의 페이지 디스크립터가 존재하지 않으면(TLB miss), 주소 변환 매니저(133)는 프리패치 버퍼(135)를 룩업할 것이다.
프리패치 버퍼(135)에 접근 요청된 가상 주소(VA)의 페이지 디스크립터가 존재하는 경우(PB hit), 주소 변환 매니저(133)는 해당 페이지 디스크립터를 참조하여 물리 주소(PA)를 생성할 것이다. 그리고 물리 주소(PA)를 사용하여 대응하는 메모리 장치로 액세스할 것이다. 프리패치 버퍼(135)에 접근 요청된 가상 주소(VA)의 페이지 디스크립터가 존재하지 않으면(PB miss), 주소 변환 매니저(133)는 블록 패치(Block fetch)를 수행하거나, 메모리(150)의 주소 변환 테이블(510, 도 1 참조)로부터 페이지 디스크립터를 읽어올 것이다.
더불어, 주소 변환 매니저(133)는 하드웨어 기능 블록(120)이나, 프로세싱 유닛(110)으로부터 제공되는 접근 방향 정보(ADI1 또는 ADI2)를 참조하여 접근이 예측된 메모리 영역의 페이지 디스크립터를 서브 블록 단위로 프리패치한다. 그리고 주소 변환 매니저(133)는 프리패치된 페이지 디스크립터들은 프리패치 버퍼(135)에 저장된다. 조소 변환 매니저(133)는 프리패치 버퍼(135)에 저장된 페이지 디스크립터를 서브 블록 단위로 업데이트할 수 있다.
변환 색인 버퍼(134)는 가상 주소(VA)를 물리 주소(PA)로 변환할 때, 변환 속도를 높이기 위해서 사용되는 일종의 캐시 메모리이다. 빈번하게 사용되는 메모리 주소의 페이지 디스크립터 엔트리(Entry)들은 변환 색인 버퍼(134)에 저장될 수 있다. 만일, 변환 색인 버퍼(134)의 엔트리에 페이지 디스크립터가 존재하는 경우, 페이지 디스크립터를 읽어오기 위한 메모리(150)로의 접근은 생략된다.
프리패치 버퍼(135)는 주소 변환 매니저(133)의 판단에 따라 접근 예측된 가상 주소의 페이지 디스크립터들이 프리패치되어 저장되는 버퍼이다. 프로세싱 유닛(110)이나 하드웨어 기능 블록(120)에 의해서 설정된 접근 방향 정보(ADI1 또는 ADI2)에 따라 주소 변환 매니저(133)는 서브-블록 단위로 페이지 디스크립터들을 패치하여 프리패치 버퍼(135)에 저장한다. 프리패치 버퍼(135)는 적어도 2개의 서브-블록 크기의 페이지 디스크립터들을 저장할 수 있다. 설명을 위해 여기서는 2개의 서브-블록 크기의 페이지 디스크립터들이 프리패치 버퍼(135)에 저장되는 것으로 가정한다. 프리패치 버퍼(135) 내부에 구비된 어느 하나의 서브-블록 크기의 페이지 디스크립터들이 모두 주소 변환에 사용되면, 다른 하나의 서브-블록 크기의 페이지 디스크립터들이 후속하여 주소 변환에 참조된다. 이때, 주소 변환 연산에 모두 사용된 서브-블록 크기의 페이지 디스크립터들의 버퍼 영역에는 후속되는 페이지 디스크립터들이 서브 블록 단위로 프리패치되어 저장될 것이다. 이런 방식으로 프리패치 버퍼(135)는 두 개의 서브-블록 단위로 교대로 프리패치하여 저장하는 이중 버퍼링(Dual buffering) 방식에 따라 제어될 수 있다.
제어 레지스터(137)에는 메모리 관리 유닛(130)을 동작을 제어하는 정보가 저장된다. 예를 들면, 슬레이브 인터페이스들(131 또는 132)로부터 제공되는 접근 방향 정보(ADI1 또는 ADI2)나, 프리패치 버퍼(135)에 대한 매칭 정보(PBMI)가 제어 레지스터(137)에 저장될 수 있다. 주소 변환 매니저(133)는 제어 레지스터(137)에 저장된 정보를 참조하여 프리패치되는 메모리 영역을 판단하게 될 것이다. 더불어, 주소 변환 매니저(133)는 제어 레지스터(137)에 설정된 정보를 참조하여 입력되는 트래픽에 대해서 프리패치 버퍼(135)를 사용할지를 판단할 수 있다. 이러한 기능은 후술하는 도면에서 보다 상세히 설명하기로 한다.
마스터 인터페이스(136)는 인터커넥터(150) 또는 메모리(500)와 통신하기 위한 인터페이싱을 제공한다. 마스터 인터페이스(136)를 통해서 변환된 물리 주소(PA)가 하향(Down stream)으로 전달될 수 있다. 마스터 인터페이스(136)를 통해서 메모리 관리 유닛(130)은 메모리(150)의 주소 변환 테이블(155)을 읽어오거나, 프레임 버퍼(Frame buffer) 영역을 액세스할 것이다.
이상에서 설명된 본 발명의 메모리 관리 유닛(130)은 접근 방향 정보(ADI1 또는 ADI2)를 참조하여 페이지 디스크립터들을 프리패치할 수 있다. 프리패치된 페이지 디스크립터들을 참조하여, 본 발명의 메모리 관리 유닛(130)은 반복적인 패턴으로 접근 요청되는 메모리 주소를 참조하는 동작에서 주소 변환 오버헤드를 현저히 줄일 수 있다.
도 4는 본 발명의 프리패치 버퍼(PB)의 운영 방법을 예시적으로 보여주는 도면이다. 도 4를 참조하면, 프리패치 버퍼(135)는 업데이트 단위에 대응하는 적어도 2 개의 서브-프리패치 버퍼들(Sub-PB0, Sub-PB1)을 포함한다.
주소 변환 매니저(133)는 프리패치 버퍼(135)의 어느 하나의 서브-프리패치 버퍼 유닛에 저장된 페이지 디스크립터들이 모두 사용되면, 소진된 서브-프리패치 버퍼에 서브 블록 단위의 페이지 디스크립터를 프리패치하여 덮어쓰기 한다. 주소 변환 매니저(133)는 어느 하나의 서브-프리패치 버퍼(Sub-PB0)가 현재 접근 요청되는 가상 주소(VA)의 변환에 사용되는 동안, 다른 하나의 서브-프리패치 버퍼(Sub-PB1)에는 접근 방향 정보(ADI1 또는 ADI2)를 참조하여 예측된 주소의 페이지 디스크립터들을 프리패치할 수 있다.
주소 변환 매니저(133)가 하나의 서브-프리패치 버퍼(Sub-PB1)를 채우기 위한 프리패치 요청을 이슈하는 시점은, 현재 주소 변환 연산에 사용되는 페이지 디스크립터가 서브-프리패치 버퍼(Sub-PB0)의 시작 위치에 해당될 때가 될 수 있다. 즉, 어느 하나의 서브 프리패치 버퍼(예를 들면, Sub-PB0)의 시작 슬롯이 현재 입력되는 가상 주소(VA)와 일치하는 경우, 다른 하나의 서브 프리패치 버퍼(예를 들면, Sub-PB1)의 업데이트 시점이 될 수 있다. 하지만, 프리패치 버퍼의 업데이트 방법은 이러한 방식에만 국한되지는 않는다.
서브-프리패치 버퍼들(Sub-PB1, Sub-PB2) 각각에는 N개의 슬롯이 구비될 수 있다. 각각의 슬롯에는 하나의 페이지 디스크립터가 저장될 수 있다. 접근 요청되는 가상 주소(VA)가 예측된 순서로 입력된다면, 서브-프리패치 버퍼들(Sub-PB0, Sub-PB1) 각각에 대한 참조는 순차적으로 이루어질 것이다.
도 5는 본 발명의 실시 예에 따른 프리패치 버퍼 매칭 방식을 간략히 보여주는 도면이다. 도 5를 참조하면, 제어 레지스터(137, 도 3 참조)에 저장된 프리패치 버퍼 매칭 정보(PBMI)와 입력된 트래픽 쓰레드(Traffic thread)의 매칭 정보가 비교된다. 그리고 비교 결과에 따라 프리패치 버퍼(135, 도 3 참조)에 대한 룩업(look-up) 동작이 수행된다.
S10 단계에서, 프로세싱 유닛(110) 또는 하드웨어 기능 블록(120)에 의해서 프리패치 버퍼 매칭 정보(PBMI)가 제어 레지스터(137)에 설정될 것이다. 프리패치 버퍼 매칭 정보(PBMI)는 일반적으로 프리패치 버퍼(135)를 사용하는 경우에 주소 변환 오버헤드를 줄일 수 있는 트래픽들에 대해서 수행될 수 있다. 예를 들면, 액정 디스플레이의 회전(Rotation)과 같은 동작에서, 프레임 버퍼의 읽기 및 쓰기 동작시에 특정 메모리 영역에 대해서는 반복적으로 참조된다. 이런 경우 페이지 디스크립터를 프리패치 버퍼(135)에 프리패치할 수 있다. 프로세싱 유닛(110) 또는 하드웨어 기능 블록(120)은 이러한 트래픽의 특성에 따라 프리패치 버퍼 매칭 정보(PBMI)를 메모리 관리 유닛(130)의 제어 레지스터(137)에 프로그램할 수 있을 것이다. 여기서, 프리패치 버퍼 매칭 정보(PBMI)는 가상 주소(VA)의 시작 및 종료 주소일 수 있다. 또는, 프리패치 버퍼 매칭 정보(PBMI)는 요청된 트래픽 쓰레드의 ID 정보나, 사용자에 의해서 부가되는 특정 신호일 수 있다.
S20 단계에서, 메모리 관리 유닛(130)은 하드웨어 기능 블록(120)으로부터 트래픽 쓰레드를 입력받는다. 즉, 메모리 관리 유닛(130)은 하드웨어 기능 블록(120)으로부터 특정 트래픽을 수행하기 위한 메모리 접근 요청을 받게 될 것이다. 이때, 메모리 접근 요청시에 제공되는 가상 주소(VA) 정보나, ID 정보, 특정 신호 정보가 선택될 수 있다.
S30 단계에서, 주소 변환 매니저(133, 도 3 참조)는 제어 레지스터(137)에 저장된 프리패치 버퍼 매칭 정보(PBMI)와 입력된 매칭 정보를 비교하게 될 것이다. 이때 입력된 매칭 정보는 가상 주소(VA) 정보, ID 정보, 특정 신호 정보 중 어느 하나일 수 있다. 입력된 매칭 정보와 제어 레지스터에 저장된 프리패치 버퍼 매칭 정보(PBMI)가 일치하면(Yes 방향), 절차는 S40 단계로 이동한다. 반면, 입력된 매칭 정보와 제어 레지스터(137)에 저장된 프리패치 버퍼 매칭 정보(PBMI)가 불일치하면(No 방향), 절차는 S40 단계로 이동한다.
S40 단계에서, 주소 변환 매니저(133)는 프리패치 버퍼(135)에 대한 룩업 동작을 수행한다. 그리고 검색된 페이지 디스크립터를 선택하여 접근 요청된 가상 주소(VA)를 물리 주소(PA)로 변환하기 위하여 S60 단계로 이동한다.
S50 단계에서, 주소 변환 매니저(133)는 프리패치 버퍼(135)에 접근 요청된 가상 주소(VA)에 대응하는 페이지 디스크립터가 존재하지 않는 것으로 판단하고, 메모리(150)로 접근한다. 주소 변환 매니저(133)는 메모리(150)에서 구성된 주소 변환 테이블(155)에서 가상 주소(VA)에 대응하는 페이지 디스크립터를 패치한다.
S60 단계에서, 주소 변환 매니저(133)는 메모리(150)로부터 패치된 페이지 디스크립터 또는 프리패치 버퍼(135)로부터 룩업된 페이지 디스크립터를 사용하여 주소 변환 연산을 수행할 것이다.
이상에서는 요청되는 트래픽의 쓰레드와 프리패치 버퍼(135)의 매칭 방법을 간략히 살펴 보았다. 프리패치 버퍼(135)의 매칭을 통해서 특정 쓰레드에 대한 프리패치 버퍼 사용율을 높일 수 있다. 사용자는 특정 트래픽 쓰레드에 대한 프리패치 버퍼(135)의 사용 여부를 설정할 수 있다. 따라서, 레이턴시(Latency)가 성능에 결정적인 영향을 미치는 트래픽들이나 쓰레드에 대해서 프리패치 버퍼(135)의 활용을 지정할 수 있을 것이다.
도 6은 프리패치 버퍼 매칭 방법의 예를 보여주는 블록도이다. 도 6을 참조하면, 제어 레지스터(137)에 프로그램된 프리패치 버퍼 매칭 정보(PBMI)는 복수의 트래픽 쓰레드의 접근을 지원할 수 있다.
각각의 레지스터들(Reg_0 ~ Reg_3)에는 사용자에 의해서 프로그램된 프리패치 버퍼 매칭 정보(PBMI)가 저장될 수 있다. 만일, 입력되는 트래픽이 레지스터(Reg_0)에 저장된 프리패치 버퍼 매칭 정보(PBMI)와 일치하는 경우, 주소 변환 매니저(133)는 프리패치 버퍼(135a)를 룩업할 수 있을 것이다. 반면, 입력되는 트래픽이 레지스터(Reg_2)에 저장된 프리패치 버퍼 매칭 정보(PBMI)와 일치하는 경우, 주소 변환 매니저(133)는 프리패치 버퍼(135c)를 룩업할 수 있을 것이다. 이러한 복수의 프리패치 버퍼 매칭 정보(PBMI)와 프리패치 버퍼들(135a, 135b, 135c, 135d)을 사용하면, 멀티플 아웃스탠딩 방식으로 입력되는 트래픽에 대해서도 높은 주소 변환 속도를 제공할 수 있을 것이다.
예시적으로 각각의 레지스터들(Reg_0 ~ Reg_3)에 사용자에 의해서 프로그램되는 프리패치 버퍼 매칭 정보(PBMI)는 가상 주소(VA)의 시작 및 종료 주소, 트래픽의 ID 정보일 수 있다. 가상 주소(VA)의 시작 및 종료 주소로 프리패치 버퍼 매칭 정보(PBMI)가 운용되는 경우, 각각의 레지스터들(Reg_0 ~ Reg_3)에는 해당 쓰레드의 시작 가상 주소(Start Virtual Address)와 종료 가상 주소(End Virtual Address)가 저장될 것이다. 반면, 트래픽의 ID로 프리패치 버퍼 매칭 정보(PBMI)가 운용되는 경우, 각각의 레지스터들(Reg_0 ~ Reg_3)에는 ID 정보와 동일한 길이를 가지는 적어도 2개의 정보(Mask, Value)가 저장된다. 마스크 정보(Mask)는 쓰레드의 특성을 나타내는 비트 값들이 저장될 수 있다. 값 정보(Value)는 ID의 하위 2-비트로 지정될 수 있을 것이다.
여기서, 프리패치 버퍼 매칭 정보(PBMI)의 운용 방법은 상술한 설명에만 국한되지 않는다. 트래픽이나, 해당 트래픽의 쓰레드별 식별을 용이하게 제공할 수 있는 다양한 정보가 본 발명의 프리패치 버퍼 매칭 정보(PBMI)로 사용될 수 있음은 잘 이해될 것이다.
도 7a 및 도 7b는 본 발명의 프리패치 버퍼의 운용 방법의 다른 실시 예를 간략히 보여주는 도면들이다. 도 7a는 복수의 프리패치 버퍼들(135a, 135b, 135c, 135d)이 각각 2개의 서브 블록들을 포함하고, 각각 하나의 블록 사이즈를 갖도록 설정될 수 있다. 반면, 도 7b는 프리패치 버퍼들(135a, 135b)이 하나의 논리 프리패치 버퍼(LPB_0)를, 그리고 프리패치 버퍼들(135c, 135d)가 또 하나의 논리 프리패치 버퍼(LPB_1)를 구성하는 방법이 도시되어 있다.
도 7a를 참조하면, 프리패치 버퍼(135)는 복수의 프리패치 버퍼들(135a, 135b, 135c, 135d)로 구분될 수 있다. 각각의 프리패치 버퍼들(135a, 135b, 135c, 135d)은 물리적으로 구분되는 최소 단위의 버퍼일 수 있다. 입력되는 트래픽의 쓰레드 특성이 상대적으로 작은 사이즈의 데이터 요청인 경우에, 메모리 관리 유닛(130)은 프리패치 버퍼(135)를 최소 단위로 운용할 수 있다. 즉, 각각의 프리패치 버퍼들(135a, 135b, 135c, 135d)이 하나의 쓰레드를 지원하도록 설정될 수 있다.
도 7b를 참조하면, 4개의 프리패치 버퍼들(135a, 135b, 135c, 135d)이 논리적으로 2의 프리패치 버퍼들(LPB_0, LPB_1)로 관리될 수 있음을 보여준다. 프리패치 버퍼들(135a, 135b)은 논리적으로 구분되는 제 1 논리 프리패치 버퍼(LPB_0)로, 프리패치 버퍼들(135c, 135d)은 제 2 논리 프리패치 버퍼(LPB_1)로 구분될 수 있다. 이 경우, 프리패치의 단위는 하나의 블록 사이즈가 될 수 있다. 즉, 일 회의 프리패치 동작을 통해서 프리패치 버퍼(135a) 전체가 업데이트될 수 있다. 한번에 프리패치되는 페이지 디스크립터의 수도 2N개가 될 것이다. 이렇게 논리적으로 적어도 2개의 프리패치 버퍼들을 묶어서 사용하는 경우, 더 높은 주소 변환 성능을 제공할 수 있다.
도 7a와 도 7b에 설명된 프리패치 버퍼들의 업데이트 단위를 논리적으로 병합하거나, 구분하기 위해서는 사용자나 프로세싱 유닛(110)에 의해서 설정 정보가 제공되어야 한다. 하드웨어 기능 블록(120)으로부터 제공되는 트래픽의 특성, 또는 하나의 쓰레드에서 사용될 데이터의 양, 또는 요청되는 쓰레드의 포맷을 참조하여 프리패치 버퍼(130)의 업데이트 단위가 설정될 수 있을 것이다.
도 8은 본 발명의 프리패치 버퍼의 운용 방법의 다른 실시 예를 보여주는 블록도이다. 도 8을 참조하면, 본 발명의 실시 예에 따른 메모리 관리 유닛(130)은 프리패치 버퍼(135)의 운영에 따라 검출되는 로컬리티(Locality)에 따라 변환 색인 버퍼(134)로의 선택적 업데이트를 수행할 수 있다.
주소 변환 매니저(133)는 프리패치 버퍼(135)에 프리패치되는 페이지 디스크립터들의 로컬리티 특성(Locality characteristic)을 분석할 것이다. 일반적으로 로컬리티 특성은 공간 로컬리티(Spatial locality)와 잠정 로컬리티(Temporal locality)로 구분될 수 있다. 공간 로컬리티(Spatial locality)는 하드웨어 기능 블록(120)이 특정 메모리 주소에 접근하게 되면, 특정 메모리 주소의 인접 주소에 다시 접근하게 된다는 특성을 의미한다. 반면, 잠정 로컬리티(Temporal locality)는 하드웨어 기능 블록(120)이 특정 메모리 주소에 접근하게 되면, 동일한 특정 메모리 주소에는 자주 접근하게 된다는 특성을 의미한다.
변환 색인 버퍼(134)는 입력된 가상 주소(VA)에 대한 페이지 디스크립터가 가장 먼저 룩업되는 우선 순위 버퍼이다. 그리고 룩업 속도가 빠른 구성에 해당한다. 따라서, 변환 색인 버퍼(134)에는 프리패치 버퍼(135)에 프리패치된 페이지 디스크립터들 중에서 잠정 로컬리티(Temporal locality)가 높고, 공간 로컬리티(Spatial locality)가 낮은 것들이 저장되는 것이 바람직하다. 반면, 프리패치 버퍼(135)에는 잠정 로컬리티(Temporal locality)와 공간 로컬리티(Spatial locality)가 모두 높은 페이지 디스크립터들이 저장될 것이다.
주소 변환 매니저(133)는 제어 레지스터(137)에 설정된 레지스터 값에 따라서 프리패치 버퍼(135)에 저장된 페이지 디스크립터들을 선택적으로 변환 색인 버퍼(134)에 업데이트할 것이다. 사용자 선택 또는 소프트웨어에 의해서 이러한 변환 색인 버퍼(134)의 업데이트 여부가 결정될 수 있다. 변환 색인 버퍼(134)에 대한 업데이트가 활성화되기 위해서는 프로세싱 유닛(110)은 제어 레지스터(137)에 변환 색인 버퍼(134)에 대한 설정 정보를 기입하면 된다.
주소 변환 매니저(133)는 설정 정보를 참조하여, 프리패치 버퍼(135)에 프리패치되는 페이지 디스크립터들 중에서 특정 시간 이내에 반복적으로 접근되는 가상 주소(VA)를 선택할 것이다. 그리고 선택된 페이지 디스크립터들을 변환 색인 버퍼(134)로 이동하고, 프리패치 버퍼(135)에는 공간 로컬리티(Spatial locality)가 높은 페이지 디스크립터들만 남길 수 있을 것이다.
다시 도면을 참조하면, 메모리 관리 유닛(130)으로 가상 주소(AR_vir)가 입력되면, 가장 먼저 변환 색인 버퍼(134)를 룩업하게 될 것이다. 여기서, 플립플롭(139)은 구성 요소를 나타내기보다는 입력되는 가상 주소(AR_vir)의 변환 연산에서 변환 색인 버퍼(134)의 룩업 우선 순위가 프리패치 버퍼(135)보다 높음을 설명하기 위한 개념적인 설명일 뿐, 실제 구성과는 관련이 없다. 만일, 가상 주소(AR_vir)에 대응하는 페이지 디스크립터가 변환 색인 버퍼(134)에 존재하면, 주소 변환 매니저(133)는 룩업된 페이지 디스크립터를 사용하여 주소 변환 연산을 수행할 것이다. 그리고 변환된 물리 주소(AR_phy)를 타깃 메모리로 전달할 것이다.
반면, 변환 색인 버퍼(134)의 룩업 결과, 가상 주소(AR_vir)에 대응하는 페이지 디스크립터가 존재하지 않는 경우, 프리패치 버퍼(135)가 룩업된다. 프리패치 버퍼(135)에 패치된 페이지 디스크립터들 중에서 가상 주소(AR_vir)와 일치하는 것이 존재하면, 주소 변환 매니저(133)는 룩업된 페이지 디스크립터를 사용하여 주소 변환 연산을 수행할 것이다. 그리고 변환된 물리 주소(AR_phy)를 타깃 메모리로 전달할 것이다.
특히, 주소 변환 매니저(133)는 프리패치 버퍼(135)의 참조 패턴을 고려하여, 변환 색인 버퍼(134)로의 업데이트 여부를 판단한다. 만일, 공간 로컬리티(Spatial locality)가 높고 잠정 로컬리티(Temporal locality)가 낮은 페이지 디스크립터로 판단되면, 변환 색인 버퍼(134)로의 업데이트는 차단된다. 반면, 잠정 로컬리티(Temporal locality)가 높은 것으로 판단된 페이지 디스크립터는 변환 색인 버퍼(134)로 복사될 것이다.
도 9는 본 발명의 변환 색인 버퍼(TLB)의 조건적 업데이트 방법을 보여주는 순서도이다. 도 9를 참조하면, 메모리 관리 유닛(130)은 프리패치 버퍼(135)에 힛트되는 가상 주소(VA)의 페이지 디스크립터를 로컬리티(Locality)를 참조하여 변환 색인 버퍼(134)에 업데이트한다. 좀더 자세히 설명하면 다음과 같다.
S110 단계에서, 메모리 관리 유닛(130)은 하드웨어 기능 블록(120)으로부터 주소 채널을 통해서 제공되는 메모리 접근 요청을 수신할 것이다. 이때, 주소 채널을 통해서 접근 요청되는 메모리(500)의 주소는 가상 메모리에 맵핑되는 가상 주소(VA)로 제공된다.
S120 단계에서, 메모리 관리 유닛(130)의 주소 변환 매니저(133)는 수신된 가상 주소(VA)의 페이지 디스크립터가 변환 색인 버퍼(134)에 존재하는지 판단하기 위하여 룩업 동작을 수행한다. 접근 요청된 가상 주소(VA)에 대응하는 페이지 디스크립터가 변환 색인 버퍼(134)에 존재하는 경우(Hit), 절차는 S160 단계로 이동한다. 반면, 접근 요청된 가상 주소(VA)에 대응하는 페이지 디스크립터가 변환 색인 버퍼(134)에 존재하지 않는 경우(Miss), 절차는 S130 단계로 이동한다.
S130 단계에서, 주소 변환 매니저(133)는 수신된 가상 주소(VA)에 대응하는 페이지 디스크립터가 프리패치 버퍼(135)에 존재하는지 검색할 것이다. 만일, 수신된 가상 주소(VA)의 페이지 디스크립터가 프리패치 버퍼(135)에 존재하지 않는 경우(Miss), 절차는 S135 단계로 이동한다. 반면, 수신된 가상 주소(VA)의 페이지 디스크립터가 프리패치 버퍼(135)에 존재하는 경우(Hit), 절차는 S140 단계로 이동한다.
S135 단계에서, 주소 변환 매니저(133)는 메모리(150)의 주소 변환 테이블(155)로부터 접근 요청된 가상 주소(VA)에 대응하는 페이지 디스크립터를 읽어온다. 이러한 동작을 페이지 테이블 워킹(Page Table Walking: PTW)이라 한다.
S140 단계에서, 주소 변환 매니저(133)는 프리패치 버퍼(135)에서 힛트된 가상 주소(VA)에 대한 로컬리티(Locality)를 판단할 것이다. 특히, 잠정 로컬리티(Temporal locality)에 대한 특성이 평가될 것이다. 만일, 잠정 로컬리티(Temporal locality)가 기준치 이상으로 높은 경우, 절차는 S150 단계로 이동한다. 반면, 잠정 로컬리티(Temporal locality)가 기준치 미만인 경우, 절차는 S160 단계로 점프한다. 잠정 로컬리티(Temporal locality)의 판단은 동일한 가상 주소(VA)에 대한 접근 횟수, 시점을 근거로 판단할 수 있을 것이다.
S150 단계에서, 주소 변환 매니저(133)는 가상 주소(VA)에 대응하는 페이지 디스크립터를 색인 변환 버퍼(134)에 기입한다. 즉, 공간 로컬리티(Spatial locality)에 관계없이 잠정 로컬리티(Temporal locality)가 높은 가상 주소(VA)의 페이지 디스크립터가 색인 변환 버퍼(134)에 업데이트될 것이다. 결국, 잠정 로컬리티(Temporal locality)가 낮고, 공간 로컬리티(Spatial locality)가 높은 가상 주소(VA)의 페이지 디스크립터들은 프리패치 버퍼(135)에는 존재하지만, 색인 변환 버퍼(134)에는 업데이트되지 않는다.
S160 단계에서, 주소 변환 매니저(133)는 록업되거나 주소 변환 테이블(510)로부터 패치된 페이지 디스크립터를 이용하여 가상 주소(VA)를 물리 주소로 변환할 것이다.
이상에서는 프리패치 버퍼(135)에 존재하는 페이지 디스크립터를 로컬리티에 따라 변환 색인 버퍼(134)로 업데이트하는 방법을 설명하였다. 하지만, 변환 색인 버퍼(134)로의 업데이트 기준은 다양하게 변경될 수 있음은 잘 이해될 것이다. 즉, 사용자는 로컬리티(Locality)의 정도나 다른 판단 기준을 제어 레지스터(137)에 기입하여 변환 색인 버퍼(134)로의 업데이트 설정을 다양하게 변경할 수 있을 것이다.
도 10은 본 발명의 실시 예에 따른 프리패치 버퍼를 사용한 주소 변환 방법을 보여주는 순서도이다. 도 10을 참조하면, 변환 색인 버퍼(134, 도 3 참조)와 프리패치 버퍼(135)를 구비하는 본 발명의 메모리 관리 유닛(130)의 동작이 접근 요청이 발생하는 시점을 기준으로 설명될 것이다.
S210 단계에서, 메모리 관리 유닛(130)은 하드웨어 기능 블록(120)으로부터 가상 주소(VA)에 의한 메모리 접근 요청을 수신할 것이다.
S220 단계에서, 메모리 관리 유닛(130)은 하드웨어 기능 블록(120)으로부터 제공된 가상 주소(VA)에 대한 페이지 디스크립터가 색인 변환 버퍼(134)에 존재하는지 판단할 것이다. 즉, 메모리 관리 유닛(130)은 색인 변환 버퍼(134)에 대한 룩업 동작을 수행할 것이다. 색인 변환 버퍼(134)에 대한 룩업 결과, 제공된 가상 주소(VA)에 대한 페이지 디스크립터가 색인 변환 버퍼(134)에 존재하는 경우(Hit), 절차는 S225 단계로 이동한다. 반면, 제공된 가상 주소(VA)에 대한 페이지 디스크립터가 색인 변환 버퍼(134)에 존재하지 않는 경우(Miss), 절차는 S230 단계로 이동한다.
S225 단계에서, 주소 변환 매니저(133)는 변환 색인 버퍼(134)의 힛트에 따른 프리패치 버퍼(135)의 업데이트 동작을 수행한다. 변환 색인 버퍼(134)가 지속적으로 힛트가 되면, 프리패치 버퍼(135)는 업데이트가 되지 못할 수도 있다. 그런 경우에는 추후에 변환 색인 버퍼(134)가 미스(Miss)될 때, 프리패치 버퍼(135)도 미스될 확률이 높아진다. 이러한 문제를 해결하기 위해, 변환 색인 버퍼(134)가 힛트(Hit)될 때에도 프리패치 버퍼(135)의 업데이트를 수행해야 한다. 변환 색인 버퍼(134)의 힛트시에 프리패치 버퍼(135)의 업데이트 방법은 후술하는 도 11에서 상세히 설명될 것이다.
S230 단계에서, 메모리 관리 유닛(130)은 입력된 가상 주소(VA)에 대한 프리패치 버퍼의 매칭 여부를 확인한다. 즉, 주소 변환 매니저(133)는 입력된 가상 주소(VA)가 제어 레지스터(137)에 저장된 프리패치 버퍼 매칭 정보(PBMI)와 일치하는지 검출할 것이다. 만일, 접근 요청된 가상 주소(VA)의 시작 및 종료 정보나 ID 정보가 프리패치 버퍼 매칭 정보(PBMI)와 일치하는 경우, 절차는 S240 단계로 이동한다. 반면, 접근 요청된 가상 주소의 시작 및 종료 정보나 ID 정보가 프리패치 버퍼 매칭 정보(PBMI)와 불일치하는 경우, 절차는 S235 단계로 이동한다.
S235 단계에서, 메모리 관리 유닛(130)은 메모리(150)에 구성된 주소 변환 테이블(155)에서 가상 주소(VA)에 대한 페이지 디스크립터를 읽어온다. 즉, 메모리 관리 유닛(130)은 가상 주소(VA)에 해당하는 하나의 페이지 디스크립터를 읽어오게 될 것이다.
S240 단계에서, 메모리 관리 유닛(130)은 프리패치 버퍼(135)에 대한 룩업 동작을 수행한다. 접근 요청된 가상 주소(VA)와 일치하는 페이지 디스크립터가 프리패치 버퍼(135)에 존재하는지 검출될 것이다. 만일, 프리패치 버퍼(135)에 대한 룩업 결과, 제공된 가상 주소(VA)에 대한 페이지 디스크립터가 존재하는 경우(Hit), 절차는 S260 단계로 이동한다. 반면, 제공된 가상 주소(VA)에 대한 페이지 디스크립터가 프리패치 버퍼(135)에 존재하지 않는 경우(Miss), 절차는 S250 단계로 이동한다.
S250 단계에서, 블록 패치(Block fetch) 동작이 수행된다. S230 단계에서 프리패치 버퍼 매칭 동작에 따라 프리패치 버퍼(135)에는 요청된 가상 주소(VA)에 대응하는 페이지 디스크립터가 존재해야 한다. 그러나 이런 경우에도 예측된 범위를 벗어나는 가상 주소에 대해서는 블록 패치(Block fetch)를 통해서 페이지 디스크립터가 프리패치 버퍼(135)에 패치된다. 물론, 현재 접근 요청된 가상 주소(VA)에 대해서는 주소 변환 오버헤드가 존재할 수 있지만, 이후에 접근 요청에 대해서 프리패치 버퍼(135)의 힛트(Hit)를 보장할 수 있을 것이다. 블록 패치 동작 이후, 절차는 S270 단계로 이동할 것이다.
S260 단계에서, 하나의 서브 프리패치 버퍼(Sub-PB)에 대한 프리패치 여부가 결정된다. 예를 들면, 현재 접근 요청된 가상 주소(VA)의 페이지 디스크립터가 서브 프리패치 버퍼(Sub-PB0)의 마지막 슬롯에 위치한 경우가 발생할 수 있다. 이 경우에는, 해당 디스크립터를 사용한 이후에 서브-프리패치 버퍼(Sub-PB0)에 이후에 접근 예상되는 페이지 디스크립터들을 메모리(150)로부터 프리패치하여 덮어쓰기 해야한다(Yes 방향). 이 경우, 절차는 S265 단계로 이동한다. 반면, 현재 접근 요청된 가상 주소(VA)의 페이지 디스크립터가 서브 프리패치 버퍼(Sub-PB0)의 마지막 슬롯이 아닌 경우(No 방향), 절차는 S270 단계로 이동한다.
S265 단계에서, 주소 변환 매니저(133)는 제어 레지스터(137)에 저장된 주소 방향 정보를 참조하여 추후에 접근이 예상되는 가상 주소의 페이지 디스크립터를 프리패치할 것이다. 즉, 추후에 접근 예상되는 페이지 디스크립터를 서브-프리패치 버퍼(Sub-PB0)의 용량만큼 읽어와 서브-프리패치 버퍼(Sub-PB0)에 덮어쓰기 할 것이다.
S270 단계에서, 주소 변환 매니저(133)는 변환 색인 버퍼(134)에 대한 업데이트 여부를 판단한다. 변환 색인 버퍼(134)의 업데이트 방법은 앞서 설명된 도 9와 같이 수행될 수 있다. 즉, 공간 로컬리티(Spatial locality)와 잠정 로컬리티(Temporal locality)를 참조하여 변환 색인 버퍼(134)의 업데이트 여부가 결정될 것이다. 바람직하게는, 현재 접근 요청된 가상 주소의 페이지 디스크립터들 중에서 잠정 로컬리티(Temporal locality)가 높은 것들이 변환 색인 버퍼(134)로 업데이트될 것이다. 현재 접근 요청된 가상 주소의 페이지 디스크립터의 잠정 로컬리티(Temporal locality) 높은 경우(Yes), 절차는 S275 단계로 이동할 것이다. 반면, 현재 접근 요청된 가상 주소의 페이지 디스크립터의 잠정 로컬리티(Temporal locality) 낮은 경우(No), 절차는 S290 단계로 이동할 것이다.
S275 단계에서, 주소 변환 매니저(133)는 현재 접근 요청된 가상 주소(VA)에 대응하는 페이지 디스크립터를 변환 색인 버퍼(134)로 복사한다.
S280 단계에서, 변환 색인 버퍼(134), 프리패치 버퍼(135) 또는 메모리(150)로부터 패치된 페이지 디스크립터를 참조하여 접근 요청된 가상 주소(VA)를 물리 주소(PA)로 변환한다.
S290 단계에서, 변환된 물리 주소(PA)는 인터커넥터(140)를 경유하여 메모리(150)로 전달될 것이다.
이상에서는 본 발명의 프리패치 버퍼(135)의 운용 방법의 개략적인 절차들이 설명되었다. 물론, 프리패치 버퍼(135)에는 접근 방향 정보에 따라 서브-블록 단위의 페이지 디스크립터들이 저장될 것이다. 그리고 이러한 프리패치 동작과 연관하여 변환 색인 버퍼(134)를 업데이트하면, 반복되는 패턴의 가상 주소(VA)에 대한 높은 힛트율을 제공할 수 있다.
도 11은 도 10의 변환 색인 버퍼(TLB)의 힛트에 따른 프리패치 버퍼(PB)의 업데이트 방법을 간략히 보여주는 순서도이다. 즉, 도 11은 도 10의 S225 단계를 좀더 구체적으로 보여준다. 도 11을 참조하면, 변환 색인 버퍼(134)에서 힛트가 발행하는 경우에도 프리패치 버퍼(135)는 업데이트를 지속적으로 수행할 수 있다.
S266 단계에서, 주소 변환 매니저(133)는 힛트가 발생한 가상 주소(VA)에 대한 프리패치 버퍼의 매칭 여부를 확인한다. 즉, 주소 변환 매니저(133)는 힛트가 발생한 가상 주소(VA)가 제어 레지스터(137)에 저장된 프리패치 버퍼 매칭 정보(PBMI)와 일치하는지 검출할 것이다. 만일, 힛트가 발생한 가상 주소(VA)의 시작 및 종료 정보나 ID 정보가 프리패치 버퍼 매칭 정보(PBMI)와 일치하는 경우(Yes 방향), 절차는 S227 단계로 이동한다. 반면, 힛트가 발생한 가상 주소의 시작 및 종료 정보나 ID 정보가 프리패치 버퍼 매칭 정보(PBMI)와 불일치하는 경우(No 방향), S225 단계는 종료될 것이다.
S227 단계에서, 주소 변환 매니저(133)는 프리패치 버퍼(135)에 대한 룩업 동작을 수행한다. 힛트가 발생한 가상 주소(VA)와 일치하는 페이지 디스크립터가 프리패치 버퍼(135)에 존재하는지 검출될 것이다. 만일, 프리패치 버퍼(135)에 대한 룩업 결과, 힛트가 발생한 가상 주소(VA)에 대한 페이지 디스크립터가 존재하는 경우(Hit), 절차는 S228 단계로 이동한다. 반면, 힛트가 발생한 가상 주소(VA)에 대한 페이지 디스크립터가 프리패치 버퍼(135)에 존재하지 않는 경우(Miss), 절차는 S229a 단계로 이동한다.
S229a 단계에서, 블록 패치(Block fetch) 동작이 수행된다. 변환 색인 버퍼(134)와 프리패치 버퍼(135)의 데이터가 상호 높은 동기화를 유지하기 위해, 블록 패치(Block fetch) 동작이 적용될 수 있다.
S228 단계에서, 하나의 서브 프리패치 버퍼(Sub-PB)에 대한 프리패치 여부가 결정된다. 예를 들면, 현재 힛트가 발생한 가상 주소(VA)의 페이지 디스크립터가 서브 프리패치 버퍼(Sub-PB0)의 마지막 슬롯에 위치한 경우가 발생할 수 있다. 이 경우에는, 해당 디스크립터를 사용한 이후에 서브-프리패치 버퍼(Sub-PB0)에 이후에 접근 예상되는 페이지 디스크립터들을 메모리(150)로부터 프리패치하여 덮어쓰기 해야한다(Yes 방향). 이 경우, 절차는 S229b 단계로 이동한다. 반면, 현재 힛트가 발행한 가상 주소(VA)의 페이지 디스크립터가 서브 프리패치 버퍼(Sub-PB0)의 마지막 슬롯이 아닌 경우(No 방향), 제반 S255 단계는 종료될 것이다.
S229b 단계에서, 주소 변환 매니저(133)는 제어 레지스터(137)에 저장된 주소 방향 정보를 참조하여 추후에 접근이 예상되는 가상 주소의 페이지 디스크립터를 프리패치(Prefetch)할 것이다. 즉, 추후에 접근 예상되는 페이지 디스크립터를 메모리(150)로부터 읽어와 서브-프리패치 버퍼(Sub-PB0)에 덮어쓰기 할 것이다.
이상에서는 변환 색인 버퍼(134)의 힛트가 발생하는 경우에도, 프리패치 버퍼(135)와 변환 색인 버퍼(134)의 일정 수준의 동기화를 보장하는 방법이 설명되었다. 지속적으로 변환 색인 버퍼(134)에서 힛트가 발생하더라도, 프리패치 버퍼(135)에는 추후에 접근이 예상되는 가상 주소(VA)의 페이지 디스크립터들이 업데이트될 수 있을 것이다.
도 12 및 도 13은 각각 도 1의 시스템 온 칩의 변경된 실시 예를 보여주는 블록도이다. 도 12 및 도 13의 시스템 온 칩들(100a, 100b)의 기본적인 동작은 도 1의 그것과 실질적으로 동일하다. 다만, 도 12의 메모리 관리 유닛(130a)과 도 13의 메모리 관리 유닛(130b)이 제공받는 프리패치를 위한 접근 방향 정보(ADI)의 출처 차이만 존재한다. 도 12의 시스템 온 칩(100a)에서는 메모리 관리 유닛(130a)의 프리패치를 위한 접근 방향 정보(ADI1)는 프로세싱 유닛(110a)으로부터 제공받는다. 그리고 도 13의 시스템 온 칩(100b)에서는 메모리 관리 유닛(130b)의 프리패치를 위한 접근 방향 정보(ADI2)가 하드웨어 기능 블록(120b)으로부터 제공받는다.
도 14는 본 발명의 다른 실시 예에 따른 시스템 온 칩을 보여주는 블록도이다. 도 14를 참조하면, 본 발명의 시스템 온 칩(200은 프로세싱 유닛(210), 하드웨어 기능 블록(220), 메모리 관리 유닛(230), 인터커넥터(240), 그리고 메모리(250)를 포함할 수 있다. 메모리(250)는 시스템 온 칩(200)의 내부 또는 외부에 제공되는 디램(DRAM)이나 에스램(SRAM)과 같은 자원(Resource)을 통칭한다. 프로세싱 유닛(210), 인터커넥터(240), 메모리(250)는 앞서 설명된 도 1의 그것들과 동일하므로 이것들에 대한 구체적인 설명은 생략될 것이다. 하지만, 본 발명의 하드웨어 기능 블록(220)은 특정 가상 메모리 영역의 페이지 디스크립터를 프리패치하도록 메모리 관리 유닛(230)을 직접 제어할 수 있다. 좀더 자세히 설명하면 다음과 같다.
하드웨어 기능 블록(220)은 먼저 메모리(250)로의 접근 요청을 이슈하기 전에 메모리 관리 유닛(230)으로 특정 가상 메모리 영역에 대한 다이렉트 패치 요청 (HDF)을 전달한다. 다이렉트 패치 요청(HDF)에는 메모리 관리 유닛(230)이 메모리(500)의 주소 변환 테이블(255)로부터 읽어올 페이지 디스크립터들의 주소 정보가 포함되어 있다. 다이렉트 패치 요청(HDF)의 전달 방식에는 명령어의 를 통해서 또는 제어 레지스터의 설정을 위한 제어 신호의 제공을 통해서 수행될 수 있다. 또는 기존의 인터페이스를 활용하여 특정 가상 주소의 페이지 디스크립터들이 패치되도록 요청될 수 있다. 이하에서는 하드웨어 기능 블록(220)에서 이슈되는 다이렉트 패치 요청(HDF)을 하드웨어 다이렉트 패치 요청(HDF)이라 칭하기로 한다.
하드웨어 다이렉트 패치 요청(HDF)에 응답하여 메모리 관리 유닛(230)은 메모리(500)로부터 요청된 페이지 디스크립터들을 읽어온다. 그리고 메모리 관리 유닛(230)은 읽어온 페이지 디스크립터들을 내부에 구비된 다이렉트 버퍼(238)에 저장한다. 다이렉트 버퍼(238)로의 패치가 완료되면, 메모리 관리 유닛(230)은 하드웨어 기능 블록(220)으로 해당 명령에 대한 완료 정보(DF_Complete)를 전달할 것이다.
하드웨어 다이렉트 패치 요청(HDF)에 의해서 패치된 페이지 디스크립터들은 예정된 트래픽들에 따른 주소 프리패치 동작시에 미스(Miss)가 발생할 것으로 예측되는 가상 주소에 대응하는 것들이다. 따라서, 하드웨어 기능 블록(220)은 하드웨어 다이렉트 패치 요청(HDF)을 사용하여 프리패치 동작시에도 불가피하게 발행하는 불연속적인 주소 영역에 대해서 힛트를 보장할 수 있다.
도 15는 도 14의 메모리 관리 유닛의 구성을 예시적으로 보여주는 블록도이다. 도 15을 참조하면, 메모리 관리 유닛(230)은 슬레이브 인터페이스들(231, 232), 마스터 인터페이스(236), 주소 변환 매니저(233), 변환 색인 버퍼(234), 프리패치 버퍼(235), 제어 레지스터(237), 그리고 다이렉트 버퍼(238)를 포함한다. 본 발명의 메모리 관리 유닛(230)은 하드웨어 다이렉트 패치 요청(HDF)에 응답하여 요청된 가상 주소 영역의 페이지 디스크립터를 메모리(250)로부터 읽어와 다이렉트 버퍼(238)에 저장한다. 그리고 다시 하드웨어 기능 블록(220)으로 완료 정보(DF_Complete)를 보낸다. 여기서, 슬레이브 인터페이스들(231, 232), 마스터 인터페이스(236), 프리패치 버퍼(235), 제어 레지스터(237) 등은 도 3의 그것들과 동일하므로, 이것들에 대한 구체적인 설명은 생략될 것이다.
제 1 슬레이브 인터페이스(231)를 통해서 하드웨어 기능 블록(220)으로부터 하드웨어 다이렉트 패치 요청(HDF)이 제공될 것이다. 하드웨어 다이렉트 패치 요청(HDF)에는 즉시 읽어와야 할 페이지 디스크립터들에 대한 가상 주소 정보가 포함될 것이다. 예를 들면, 읽기 주소 채널(AR)을 통해서 이러한 가상 주소 정보가 제공될 수 있다. 여기서, 하드웨어 기능 블록(220)과 메모리 관리 유닛(230)과의 통신은 사용자에 의해서 구비되는 인터페이스로 제공될 수 있다. 또는, 하드웨어 기능 블록(220)과 메모리 관리 유닛(230)과의 통신은 AMBA 프로토콜의 읽기/쓰기 트랜잭션을 통해서 이루어질 수 있을 것이다. 즉, 읽기 주소 채널(AR)로 하드웨어 기능 블록(220)은 하드웨어 다이렉트 패치 요청(HDF)을 메모리 관리 유닛(230)에 제공할 수 있다. 반대로, 메모리 관리 유닛(230)은 하드웨어 다이렉트 패치 요청(HDF)을 완료한 후에 하드웨어 기능 블록(220)으로 읽기 데이터 채널(R)을 통해서 완료 정보(DF_Complete)를 전달할 수 있을 것이다. 다른 예로, 하드웨어 기능 블록(220)과 메모리 관리 유닛(230)과의 통신은 쓰기 주소 채널(AW)과 응답 채널(B)을 통해서도 이루어질 수 있음은 잘 이해될 것이다.
주소 변환 매니저(233)는 하드웨어 다이렉트 패치 요청(HDF)에 응답하여 메모리(250)의 주소 변환 테이블(255)을 액세스할 것이다. 그리고 하드웨어 다이렉트 패치 요청(HDF)에 포함된 주소 정보에 대응하는 페이지 디스크립터를 읽어온다. 읽어온 페이지 디스크립터는 다이렉트 버퍼(238)에 저장될 것이다. 주소 변환 매니저(233)는 다이렉트 패치 요청된 페이지 디스크립터들을 다이렉트 버퍼(238)에 저장한 후에, 하드웨어 기능 블록(220)으로 완료 신호(DF_Complete)를 보낼 것이다.
여기서, 다이렉트 버퍼(238)는 변환 색인 버퍼(234)와 프리패치 버퍼(235)와는 별도의 버퍼 메모리로 구성될 수 있다. 하지만, 다이렉트 버퍼(238)는 프리패치 버퍼(238)의 일부 메모리 영역을 차용하여 사용될 수도 있을 것이다. 다만, 다이렉트 버퍼(238)의 룩업 우선 순위는 변환 색인 버퍼(234)와 프리패치 버퍼(235)보다는 낮아야 할 것이다. 즉, 입력되는 가상 주소(VA)를 변환하기 위한 버퍼 메모리의 룩업 우선 순위는 변환 색인 버퍼(234)가 가장 높고, 그 다음이 프리패치 버퍼(235), 그리고 마지막이 다이렉트 버퍼(238)일 것이다.
이상의 변환 색인 버퍼(234), 프리패치 버퍼(235), 그리고 다이렉트 버퍼(238)의 운용을 통해서, 특정 주소 패턴이 반복되는 메모리 접근 동작에서는 힛트율이 향상될 수 있음을 알 수 있다. 여기서, 하드웨어 기능 블록(220)에 의한 하드웨어 다이렉트 패치 요청(HDF)은 멀티플 아웃스탠딩(Multiple outstanding) 방식으로 제공될 수 있다. 동시에 2개 이상의 가상 주소에 대한 하드웨어 다이렉트 패치 요청(HDF)이 제공될 수 있다. 이 경우, 각각의 하드웨어 다이렉트 패치 요청(HDF)에 대응하는 다이렉트 버퍼(DB)들이 제공될 수 있어야 할 것이다.
도 16은 본 발명의 하드웨어 다이렉트 패치 방식을 사용하는 예를 간략히 보여주는 도면이다. 도 16을 참조하면, 이미지를 회전(Rotation)하는 하드웨어 기능 블록(220)이 하드웨어 다이렉트 패치 요청(HDF)을 이슈하는 영역을 간략히 보여준다.
세로축으로 각각의 서브 블록 단위의 데이터를 프레임 버퍼에 기입하기 위해서는 도시된 서브 블록들(1→2→3→4→…→N) 순서대로 메모리에 데이터를 기입할 것이다. 서브 블록들(1→2→3→4→…→N)에 대한 쓰기에서는 프리패치 동작을 통해서 힛트가 보장될 수 있다. 하지만, N+1 번째 서브 블록에 접근하기 위해서는 프리패치 패턴의 증가하는 주소 방향이 아니라 감소하는 방향에 위치한다. 따라서, 프리패치 버퍼(235)에서는 미스(Miss)가 발생할 것이다. 하드웨어 기능 블록(220)은 이러한 단방향 예측에 따른 프리패치 동작과 더불어, 이미지의 경계점에서 대응하는 서브 블록에 대해서 하드웨어 다이렉트 패치 요청(HDF)을 통해서 힛트를 보장할 수 있다.
도시된 다이렉트 패치 영역에 대해서 하드웨어 기능 블록(220)은 미리 하드웨어 다이렉트 패치 요청(HDF)을 통해서 메모리 관리 유닛(230)의 다이렉트 버퍼(238)에 저장하도록 제어할 것이다. 그리고 추후 프리패치 버퍼(235)에서 미스가 발생하면, 다이렉트 버퍼(238)가 참조되어 힛트될 수 있을 것이다.
도 17은 본 발명의 다이렉트 패치 동작을 수행하기 위한 하드웨어들 간의 통신 과정을 간략히 보여주는 도면이다. 도 17을 참조하여, 하드웨어 기능 블록(220)과 메모리 관리 유닛(230), 그리고 메모리(250)와의 통신 절차가 순서대로 설명될 것이다.
먼저, 하드웨어 기능 블록(220)은 상술한 이미지의 경계 영역과 같은 프리패치 버퍼(235)에서 미스가 발생할 것으로 예상되는 영역에 대한 하드웨어 다이렉트 패치 요청(HDF)을 메모리 관리 유닛(230)으로 제공한다. 그러면 하드웨어 다이렉트 패치 요청(HDF)에 응답하여 메모리 관리 유닛(230)은 요청된 페이지 디스크립터를 읽어 오도록 메모리(500)에 요청할 것이다. 메모리(500)는 주소 변환 테이블(510)에 구비된 페이지 디스크립터를 메모리 관리 유닛(230)으로 제공할 것이다. 메모리(250)로부터 제공받은 페이지 디스크립터는 메모리 관리 유닛(230)의 다이렉트 버퍼(238)에 저장된다.
다이렉트 버퍼(238)에 하드웨어 다이렉트 패치 요청(HDF)에 의해서 요청된 페이지 디스크립터가 저장되면, 메모리 관리 유닛(230)은 완료 신호(DF_Complete)를 하드웨어 기능 블록(220)에 전달할 것이다.
도 18은 본 발명의 또 다른 실시 예에 따른 시스템 온 칩을 보여주는 블록도이다. 도 18을 참조하면, 시스템 온 칩(300)은 프로세싱 유닛(310), 하드웨어 기능 블록(320), 메모리 관리 유닛(330), 인터커넥터(340), 그리고 메모리(350)를 포함할 수 있다. 메모리(350)는 시스템 온 칩(300)의 내부 또는 외부에 위치하는 디램(DRAM)이나 에스램(SRAM)과 같은 자원(Resource)을 통칭한다. 프로세싱 유닛(310), 하드웨어 기능 블록(320), 메모리 관리 유닛(330), 인터커넥터(340), 그리고 메모리(350)의 구성은 앞서 설명된 도 14의 그것들과 실질적으로 동일하므로 이것들에 대한 구체적인 설명은 생략될 것이다. 본 발명의 프로세싱 유닛(310)은 소프트웨어 다이렉트 패치 요청(SDF)을 통해서 메모리 관리 유닛(330)의 다이렉트 패치 동작을 제어할 수 있다.
모바일 장치가 부팅되면, 불휘발성 저장 매체로부터 메모리(350)로 운영 체제(354), 장치 드라이버(352) 등이 로드된다. 그리고 주소 변환 테이블(355)도 메모리(350) 상에 구성된다. 도시되지는 않았지만, 응용 프로그램(Application program)이나 다양한 사용자 데이터가 메모리(350)에 로드될 수 있을 것이다. 이때, 프로세싱 유닛(310)은 메모리(350)에 로드되는 응용 프로그램, 운영 체제(354), 그리고 장치 드라이버(352)에 의해서 규정된 시퀀스에 따라 동작할 것이다.
본 발명의 장치 드라이버(352)는 하드웨어 기능 블록(320)의 동작을 소프트웨어 계층에서 지원하기 위한 프로그램이다. 특히, 본 발명의 장치 드라이버(352)는 가상 주소(VA)가 할당된 직후 또는 프레임과 프레임 사이에서 프레임 버퍼의 시작 주소 정보를 포함하는 소프트웨어 다이렉트 패치 요청(SDF)을 내리도록 프로세싱 유닛(310)을 제어할 것이다. 즉, 프로세싱 유닛(310)에 의해서 소프트웨어 다이렉트 패치 요청(SDF)이 메모리 관리 유닛(330)으로 제공될 수 있다. 하드웨어 기능 블록(320)을 제어하는 장치 드라이버(352) 또는 프로세싱 유닛(310)은 프레임의 시작 주소나 가상 주소 맵핑에 대한 제반 정보를 가지고 있으므로, 이러한 소프트웨어 다이렉트 패치 요청(SDF)을 내릴 수 있다. 즉, 하드웨어 기능 블록(320)에 의해 이슈되는 하드웨어 다이렉트 패치 요청(HDF)에 대비하여 프로세싱 유닛(310)에 의해서 이슈되는 명령을 소프트웨어에 의해서 이슈된다는 의미에서 소프트웨어 다이렉트 패치 요청(SDF)이라 할 수 있다.
소프트웨어 다이렉트 패치 요청(SDF)에 응답하여 메모리 관리 유닛(330)은 미리 메모리(350)의 주소 변환 테이블(355)로부터 해당 주소의 페이지 디스크립터들을 패치하여 다이렉트 버퍼(338)에 저장할 것이다. 그 이후에 하드웨어 기능 블록(320)으로부터 프레임 버퍼로의 접근 명령이 이슈될 것이다. 이때에는 프레임의 최초 주소들에 대한 디스크립터가 이미 다이렉트 버퍼(338)에 패치된 상태이기 때문에 각각의 프레임의 첫 번째 주소에 대해서 힛트가 보장될 것이다. 각 프레임들에 대한 후속 주소들에 대한 패치는 프리패치 버퍼(Prefetch buffer)에 의해서 힛트가 보장될 것이다. 그리고 프레임에서 경계 지점에 해당하는 가상 주소의 불연속 지점에 대한 힛트는 하드웨어 다이렉트 패치 요청(HDF)에 의해서 해결될 것이다.
여기서, 프레임의 시작 주소에 대한 힛트를 보장하기 위해서는 복수의 프레임 시작 주소에 대한 소프트웨어 다이렉트 명령(SDF)들이 메모리 관리 유닛(320) 내부에 명령어 큐를 구성할 수 있다. 따라서, 명령어 큐에 의해서 이슈될 프레임들 각각에 대응하는 시작 주소들에 대한 페이지 디스크립터가 지연없이 다이렉트 버퍼(338)에 저장될 수 있을 것이다.
결국, 소프트웨어 다이렉트 명령(SDF)에 의해서는 프레임들의 시작 주소에 해당하는 페이지 디스크립터가 미리 다이렉트 버퍼(338)에 저장된다. 그리고 하나의 프레임 내에서 이미지의 경계 부분에 해당하는 가상 메모리 영역은 하드웨어 다이렉트 명령(HDF)에 의해서 힛트가 보장될 수 있다. 그리고 프리패치 동작에 의해서 연속적인 접근 요청에 대해서 힛트가 보장될 것이다.
도 19는 도 18의 메모리 관리 유닛의 구성을 예시적으로 보여주는 블록도이다. 도 19를 참조하면, 메모리 관리 유닛(330)은 슬레이브 인터페이스들(331, 332), 마스터 인터페이스(336), 주소 변환 매니저(333), 변환 색인 버퍼(334), 프리패치 버퍼(335), 제어 레지스터(337), 그리고 다이렉트 버퍼(338)를 포함한다. 본 발명의 메모리 관리 유닛(330)은 다이렉트 패치 요청들(HDF, SDF)에 응답하여 요청된 가상 주소 영역의 페이지 디스크립터를 메모리(350)로부터 읽어와 다이렉트 버퍼(338)에 저장한다. 여기서, 슬레이브 인터페이스들(331, 332), 마스터 인터페이스(336), 프리패치 버퍼(335), 제어 레지스터(337) 등은 도 15의 그것들과 동일하므로, 이것들에 대한 구체적인 설명은 생략될 것이다.
제 1 슬레이브 인터페이스(331)를 통해서 하드웨어 기능 블록(320)으로부터 하드웨어 다이렉트 패치 요청(HDF)이 메모리 관리 유닛(330)으로 제공될 것이다. 그리고 제 2 슬레이브 인터페이스(332)를 통해서 프로세싱 유닛(310)으로부터 제공되는 소프트웨어 다이렉트 패치 요청(SDF)이 메모리 관리 유닛(330)으로 제공된다.
주소 변환 매니저(333)는 소프트웨어 다이렉트 패치 요청(SDF)에 응답하여 우선 변환 색인 버퍼(334)를 룩업할 것이다. 만일, 변환 색인 버퍼(334)에 소프트웨어 다이렉트 패치 요청(SDF)에 의해서 요청된 페이지 디스크립터가 존재하면, 주소 변환 매니저(333)는 메모리(350)에 대한 접근을 취소할 것이다. 그리고 주소 변환 매니저(333)는 변환 색인 버퍼(334)에 존재하는 페이지 디스크립터를 록킹(Locking)시킨다. 변환 색인 버퍼(334) 상에서 록킹된 페이지 디스크립터들은 업데이트가 차단되어 지속적으로 유지될 수 있다.
변환 색인 버퍼(334)에 소프트웨어 다이렉트 패치 요청(SDF)에 의해서 요청된 페이지 디스크립터가 존재하지 않는 경우, 주소 변환 매니저(333)는 메모리(350)로부터 해당 페이지 디스크립터를 읽어올 것이다. 주소 변환 매니저(333)는 읽어온 페이지 디스크립터를 다이렉트 버퍼(338)에 저장하고, 더불어 변환 색인 버퍼(334)에도 복사할 것이다. 더불어, 주소 변환 매니저(333)는 변환 색인 버퍼(334)에 복사된 페이지 디스크립터를 록킹(Locking)시킬 것이다. 변환 색인 버퍼(334) 상에서 록킹된 페이지 디스크립터들은 업데이트가 차단되어 지속적으로 유지될 수 있다.
이상에서는 소프트웨어 다이렉트 패치 요청(SDF)에 따라 트래픽이 이슈되기 이전에 해당 프레임의 시작 주소의 페이지 디스크립터를 패치하는 메모리 관리 유닛(330)의 구성이 설명되었다. 메모리 관리 유닛(330)은 소프트웨어 다이렉트 패치 요청(SDF)에 의해서 요청된 페이지 디스크립터를 다이렉트 버퍼(338)에 저장하고, 변환 색인 버퍼(334)에도 업데이트한다. 더불어, 변환 색인 버퍼(334)에 업데이트된 프레임의 시작 주소에 해당하는 페이지 디스크립터는 록킹(Locking)되어 보호될 수 있다.
도 20은 본 발명의 소프트웨어 다이렉트 패치 요청(SDF)을 통해서 패치가 요청되는 가상 주소의 위치를 보여주는 메모리 맵이다. 도 20을 참조하면, 가상 메모리 상에는 예시적으로 2개의 프레임 버퍼 영역이 할당된다. 그리고 각각의 프레임 버퍼들(FB0, FB1)의 시작 주소(SDF_ADD0, SDF_ADD1)가 소프트웨어 다이렉트 패치 요청(SDF)에 의해서 메모리 관리 유닛(330)에 제공된다. 시작 주소(SDF_ADD0, SDF_ADD1)에 해당하는 페이지 디스크립터는 메모리 관리 유닛(330)에 의해서 패치되고, 다이렉트 버퍼(338) 및 변환 색인 버퍼(334)에 업데이트될 것이다.
소프트웨어 다이렉트 패치 요청(SDF)에 의해서 각각의 프레임 버퍼들(FB0, FB1)의 시작 주소(SDF_ADD0, SDF_ADD1)에 대해서는 항상 힛트가 보장될 것이다. 그리고 시작 주소(SDF_ADD0, SDF_ADD1)에 이어지는 가상 주소에 대해서는 프리패치 버퍼(335)에 의해서 힛트가 보장될 것이다. 더불어, 하나의 프레임 내에서 가상 주소의 불연속 지점에 대해서는 하드웨어 다이렉트 패치 요청(HDF)에 의해서 힛트가 보장될 것이다.
도 21은 소프트웨어 다이렉트 패치 요청(SDF)의 이슈 지점을 간략히 보여주는 타이밍도이다. 도 21을 참조하면, 하드웨어 기능 블록(320)이 메모리 관리 유닛(330)으로 순차적으로 요청할 프레임들(Frame0, Frame1, Frame2)이 도시되어 있다. 그리고 이러한 프레임들에 대한 시작 주소를 미리 패치하도록 소프트웨어 다이렉트 패치 요청(SDF)은 프레임들(Frame0, Frame1, Frame2)에 대한 접근 요청 이전에 이슈될 것이다. 소프트웨어 다이렉트 패치 요청(SDF)은 복수의 시작 주소에 대해서 명령어 큐에 저장될 것이다.
도 22는 소프트웨어 다이렉트 패치 요청(SDF)과 관련된 변환 색인 버퍼의 관리 방법을 보여주는 도면이다. 도 22를 참조하면, 소프트웨어 다이렉트 패치 요청(SDF)에 의해서 요청된 가상 주소는 변환 색인 버퍼(334)에 캐시되고, 록킹(Locking)된다.
변환 색인 버퍼(334)에 캐시되는 페이지 디스크립터 중에서 본 발명의 소프트웨어 다이렉트 패치 요청(SDF)에 의해서 업데이트되는 것들이 존재할 수 있다. 소프트웨어 다이렉트 패치 요청(SDF)에 의해서 캐시되는 페이지 디스크립터는 스페셜 슬롯(Special Slot)으로 지정될 수 있다. 반면, 프리패치 버퍼(335)로부터 참조되어 로컬리티(Locality)에 따라 업데이트되는 페이지 디스크립터들은 노멀 슬롯(Normal Slot)으로 지정될 수 있다.
스페셜 슬롯(Special Slot)으로 지정된 페이지 디스크립터는 록킹(Locking)된다. 즉, 하드웨어 기능 블록(320)에 의해서 요청되는 다양한 동작 처리 중에서도 록킹된 페이지 디스크립터는 업데이트되지 않을 것이다. 만일, 록킹된 페이지 디스크립터가 특정 시간 이상 동안 힛트가 발생하지 않는 경우라면, 주소 변환 매니저(333)에 의해서 노멀 슬롯(Normal Slot)으로 전환된 후에 변환 색인 버퍼(334)에서 삭제될 것이다.
변환 색인 버퍼(334)에 정의되는 각각의 슬롯은 스페셜 슬롯(Special Slot)과 노멀 슬롯(Normal Slot)의 구분을 위한 필드를 구비할 것이다. 즉, 주소 변환을 위한 페이지 디스크립터 필드(339a)와 슬롯의 록킹 여부를 마킹하기 위한 태그 필드(339b)를 포함할 수 있다. 주소 변환 매니저(333)는 프로세싱 유닛(310)으로부터 소프트웨어 다이렉트 패치 요청(SDF)에 의해서 패치된 페이지 디스크립터에 대해서는 태그 필드(339b)에 스페셜 슬롯으로 마킹한다. 스페셜 슬롯으로 지정된 페이지 디스크립터는 변환 색인 버퍼(334)의 업데이트 정책(TLB replacement policy)에서 배제될 것이다. 따라서, 스페셜 슬롯으로 지정된 엔트리들에 대해서는 하드웨어 기능 블록(320)의 요청에 의해서 지울 수 없다.
도 23은 본 발명의 소프트웨어 다이렉트 패치 동작을 보여주는 순서도이다. 도 23을 참조하면, 메모리 관리 유닛(330)은 소프트웨어 다이렉트 패치 요청(SDF)에 응답하여 하드웨어 기능 블록(320)에서 트래픽이 이슈되기 이전에 프레임의 시작 주소에 대응하는 페이지 디스크립터들을 미리 캐시한다. 그리고 소프트웨어 다이렉트 패치 요청(SDF)에 의해서 캐시된 페이지 디스크립터들은 변환 색인 버퍼(334)에서 록킹하여 해당 엔트리가 삭제되는 상황을 차단한다. 좀더 자세히 설명하면 다음과 같다.
S310 단계에서, 메모리 관리 유닛(330)은 프로세싱 유닛(310)으로부터 제공되는 소프트웨어 다이렉트 패치 요청(SDF)을 수신한다. 소프트웨어 다이렉트 패치 요청(SDF)은 하드웨어 기능 블록(320)을 지원하기 위한 소프트웨어 계층의 장치 드라이버(Device driver)에서 요청할 수 있고, 프로세싱 유닛(310)에 의해서 메모리 관리 유닛(330)에 제공될 것이다. 소프트웨어 다이렉트 패치 요청(SDF)에 의해서 패치가 요청되는 페이지 디스크립터들은 프레임 버퍼들의 시작 주소에 해당할 수 있다. 프레임의 시작 주소에 대한 페이지 디스크립터를 미리 패치하여 하나의 프레임에 대해서 최초 미스(Initial Miss)를 차단할 수 있기 때문이다. 물론, 소프트웨어 다이렉트 패치 요청(SDF)은 멀티플 아웃스탠딩 방식으로 메모리 관리 유닛(330)에 전달될 수도 있을 것이다.
S320 단계에서, 메모리 관리 유닛(330)의 주소 변환 매니저(333)는 수신된 가상 주소(VA)의 페이지 디스크립터가 변환 색인 버퍼(334)에 이미 존재하는지 판단하기 위하여 룩업 동작을 수행한다. 접근 요청된 가상 주소(VA)에 대응하는 페이지 디스크립터가 변환 색인 버퍼(334)에 존재하는 경우(Hit), 절차는 S330 단계로 이동한다. 반면, 접근 요청된 가상 주소(VA)에 대응하는 페이지 디스크립터가 변환 색인 버퍼(334)에 존재하지 않는 경우(Miss), 절차는 S350 단계로 이동한다.
S330 단계에서, 주소 변환 매니저(333)는 변환 색인 버퍼(334)에 캐시된 페이지 디스크립터가 이미 스페셜 슬롯(Special Slot)으로 마킹되었는지를 검출한다. 만일, 캐시된 페이지 디스크립터가 이미 스페셜 슬롯(Special Slot)으로 마킹된 상태라면(Yes 방향), 소프트웨어 다이렉트 패치 요청(SDF)에 따른 변환 색인 버퍼(334)의 설정 동작은 종료될 것이다. 하지만, 캐시된 페이지 디스크립터가 노멀 슬롯(Normal Slot)으로 마킹된 상태인 경우(No 방향), 해당 슬롯을 록킹하기 위하여 절차는 S340 단계로 이동한다.
S330 단계에서, 주소 변환 매니저(333)는 소프트웨어 다이렉트 패치 요청(SDF)에 의해서 변환 색인 버퍼(334)에 로드되었음에도 노멀 슬롯(Normal Slot)으로 유지되는 페이지 디스크립터를 록킹한다. 즉, 주소 변환 매니저(333)는 해당 페이지 디스크립터를 스페셜 슬롯(Special Slot)으로 전환시킨다. 스페셜 슬롯(Special Slot)으로 지정된 페이지 디스크립터는 하드웨어 기능 블록(320)에 의해서 요청되는 다양한 동작 처리 중에서도 삭제되지 않고 보호된다.
S350 단계에서, 소프트웨어 다이렉트 패치 요청(SDF)으로 요청된 페이지 디스크립터가 변환 색인 버퍼(340) 존재하지 않기 때문에 메모리(350)로부터 패치할 것이다. 또는 도시되지는 않았지만, 변환 색인 버퍼(340)보다 룩업 우선 순위가 낮은 프리패치 버퍼(335)나 다이렉트 버퍼(338)를 룩업할 수도 있을 것이다. 일반적인 경우, 메모리(350)를 접근하여 프레임 버퍼의 시작 주소에 대응하는 페이지 디스크립터들이 패치될 것이다. 이러한 동작은 페이지 테이블 워킹(PTW)에 해당한다. 패치된 페이지 디스크립터들은 변환 색인 버퍼(334)에 로드될 것이다.
S360 단계에서, 변환 색인 버퍼(334)에 로드된 페이지 디스크립터들의 엔트리에 대한 록킹이 수행된다. 즉, 소프트웨어 다이렉트 패치 요청(SDF)에 의해서 변환 색인 버퍼(334)에 로드된 페이지 디스크립터들은 무분별한 삭제 동작으로부터의 보호를 위해서 스페셜 슬롯으로 지정된다.
이상에서는 소프트웨어 다이렉트 패치 요청(SDF)의 제공에 따른 변환 색인 버퍼(334)에서의 록킹 동작을 간략히 살펴 보았다. 록킹을 통해서 특정 프레임 버퍼의 시작 주소가 변환 색인 버퍼(334)에서 유지됨에 따라 프레임들에 대한 가상 메모리 접근 동작시에 최초 미스(Initial Miss)의 발생이 차단될 수 있다.
도 24는 본 발명의 실시 예의 시스템 온 칩을 포함하는 모바일 장치를 보여주는 블록도이다. 도 24를 참조하면, 모바일 장치(1000)는 시스템 온 칩(1001)과 LPDDRx 메모리(1300), 이미지 센서(1400), 디스플레이(1500)를 포함할 수 있다. WideIO 메모리(1200) 또는 LPDDRx 메모리(1300)에 저장된 데이터는 시스템 온 칩(1001)의 제어 하에 디스플레이(1500)를 통하여 표시될 수 있다. 시스템 온 칩(1001), 특히 응용 프로세서(1100)에는 본 발명의 실시 예들에서 설명된 메모리 관리 유닛(MMU), 프로세싱 유닛(Processing Unit), 하드웨어 기능 블록(H/W IP), 인터커넥터(Interconnector) 등이 포함될 것이다. 따라서, 본 발명의 시스템 온 칩(1001)은 레이턴시가 중요한 성능 요소가 되는 실시간 요구 트래픽에 대해서 높은 주소 변환 힛트율을 제공할 수 있다.
본 발명에 따른 시스템 온 칩(SoC) 및 반도체 장치는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 시스템 온 칩은 컨트롤러는 PoP(Package on Package), BGAs(Ball grid arrays), CSPs(Chip scale packages), PLCC(Plastic Leaded Chip Carrier), PDIP(Plastic Dual In-Line Package), Die in Waffle Pack, Die in Wafer Form, COB(Chip On Board), CERDIP(Ceramic Dual In-Line Package), MQFP(Plastic Metric Quad Flat Pack), TQFP(Thin Quad Flatpack), SOIC(Small Outline Integrated Circuit), SSOP(Shrink Small Outline Package), TSOP(Thin Small Outline), TQFP(Thin Quad Flatpack), SIP(System In Package), MCP(Multi Chip Package), WFP(Wafer-level Fabricated Package), WSP(Wafer-Level Processed Stack Package) 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
110, 110a, 110b, 210, 310 : 프로세싱 유닛
120, 120a, 120b, 220, 320 : 하드웨어 기능 블록
130, 130a, 130b, 230, 330 : 메모리 관리 유닛
131, 132, 231, 232, 331, 332 : 슬레이브 인터페이스
133, 233, 333 : 주소 변환 매니저
134, 234, 334 : 변환 색인 버퍼(TLB)
135, 235, 335 : 프리패치 버퍼
136, 236, 336 : 마스터 인터페이스
137, 237, 337 : 제어 레지스터
238, 338 : 다이렉트 버퍼
140, 240, 340 : 인터커넥터
150, 250, 350 : 메모리
155, 255, 355 : 주소 변환 테이블
352 : 장치 드라이버
354 : 운영 체제
1001 : 시스템 온 칩
1100 : 응용 프로세서
1200 : WideIO 메모리
1300 : LPDDRx 메모리
1400 : 이미지 센서
1500 : 디스플레이

Claims (20)

  1. 하드웨어 기능 블록으로부터 메모리 접근 요청을 수신하는 메모리 관리 유닛에서 가상 주소를 물리 주소로 변환하는 방법에 있어서:
    상기 메모리 접근 요청을 가상 주소 및 접근 방향 정보와 함께 수신하는 단계;
    상기 가상 주소에 대응하는 페이지 디스크립터가 복수의 물리 주소에 대한 페이지 디스크립터들을 저장하기 위한 변환 색인 버퍼(TLB)에 이미 존재하는지 결정하는 단계; 그리고
    상기 변환 색인 버퍼(TLB)에 상기 가상 주소에 대응하는 페이지 디스크립터가 존재하지 않는 경우, 상기 가상 주소에 대응하는 페이지 디스크립터가 복수의 물리 주소에 대한 페이지 디스크립터들을 저장하기 위한 프리패치 버퍼에 존재하는지 검출하는 단계를 포함하되,
    상기 프리패치 버퍼에 상기 가상 주소에 대응하는 페이지 디스크립터가 존재하지 않는 경우에는:
    상기 가상 주소에 대응하는 페이지 디스크립터를 메모리 장치로부터 패치하여 상기 프리패치 버퍼에 업데이트하는 단계;
    상기 페이지 디스크립터를 사용하여 상기 가상 주소를 물리 주소로 변환하는 단계; 그리고
    상기 페이지 디스크립터로 상기 변환 색인 버퍼(TLB)를 업데이트하는 단계를 포함하되,
    상기 접근 방향 정보는 상기 가상 주소에 후속하는 가상 주소의 증감 방향에 대한 정보이며, 상기 하드웨어 기능 블록은 상기 접근 방향 정보에 따라 상기 메모리 장치로부터 상기 페이지 디스크립터를 프리패치할 경우 미스가 발생할 불연속 가상 주소의 페이지 디스크립터들을 상기 메모리 장치의 주소 변환 테이블로부터 미리 패치하도록 상기 메모리 관리 유닛에게 요청하는 방법.
  2. 제 1 항에 있어서,
    상기 프리패치 버퍼는 제 1 및 제 2 서브 프리패치 버퍼를 포함하되,
    상기 제 1 및 제 2 서브 프리패치 버퍼 중 어느 하나에 대한 접근이 발생하면, 다른 하나에 대한 업데이트가 수행되는 방법.
  3. 제 1 항에 있어서,
    상기 가상 주소에 대응하는 페이지 디스크립터가 상기 프리패치 버퍼에 존재하는지 검출하는 단계는:
    프리패치 버퍼 매칭 정보(PMBI)를 수신하는 단계;
    상기 프리패치 버퍼 매칭 정보(PMBI)를 상기 메모리 관리 유닛의 제어 레지스터에 저장하는 단계;
    입력 매칭 정보 및 가상 주소를 포함하는 메모리 접근 요청을 수신하는 단계;
    상기 프리패치 버퍼 매칭 정보(PMBI)와 상기 메모리 접근 요청에 포함된 상기 입력 매칭 정보를 비교하는 단계;
    상기 비교 결과가 매칭(Hit)으로 나타나는 경우, 상기 메모리 관리 유닛의 프리패치 버퍼에서 상기 수신된 가상 주소의 페이지 디스크립터를 검색하는 단계;
    상기 비교 결과가 미스(Miss)로 나타나는 경우, 상기 메모리 장치에서 상기 수신된 가상 주소의 페이지 디스크립터를 검색하는 단계; 그리고
    상기 검색된 페이지 디스크립터를 사용하여 상기 가상 주소를 물리 주소로 변환하는 단계를 포함하는 방법.
  4. 제 3 항에 있어서,
    상기 메모리 접근 요청을 수신하는 단계는:
    복수의 메모리 접근 트래픽 쓰레드로부터의 메모리 접근 요청을 수신하는 단계를 포함하는 방법.
  5. 제 3 항에 있어서,
    상기 제어 레지스터는 복수의 제어 레지스터들을 포함하고, 상기 프리패치 버퍼는 복수의 프리패치 버퍼들을 포함하고,
    상기 프리패치 버퍼 매칭 정보(PMBI)와 상기 메모리 접근 요청에 포함된 상기 입력 매칭 정보를 비교하는 단계는, 상기 복수의 프리패치 버퍼들 중 접근할 어느 하나를 결정하기 위하여 상기 입력 매칭 정보와 상기 복수의 제어 레지스터들을 비교하는 단계를 포함하는 방법.
  6. 제 5 항에 있어서,
    상기 복수의 프리패치 버퍼들은 서로 다른 접근 트래픽율(Traffic rate)에 따라 가변적인 사이즈의 로직 유닛들로 구분되어 업데이트되는 방법.
  7. 제 1 항에 있어서,
    상기 변환 색인 버퍼(TLB)에서 특정 절차에 대응하는 페이지 디스크립터를 록킹하는 단계를 더 포함하는 방법.
  8. 제 7 항에 있어서,
    상기 특정 절차는 소프트웨어 직접 패치 요청(SDF)을 포함하는 방법.
  9. 제 1 항에 있어서,
    상기 프리패치 버퍼를 상기 페이지 디스크립터로 업데이트하는 단계는, 상기 프리패치 버퍼를 업데이트한 후에 상기 메모리 접근 요청을 생성한 유닛에 상기 업데이트의 완료를 지시하는 신호를 전달하는 단계를 더 포함하는 방법.
  10. 제 1 항에 있어서,
    상기 프리패치 버퍼를 업데이트하는 단계는, 상기 메모리 관리 유닛과 통신하는 프로세싱 유닛으로부터 수신된 접근 방향 정보에 근거하여 상기 프리패치 버퍼를 업데이트하는 단계를 포함하는 방법.
  11. 프로세싱 유닛;
    가상 주소를 포함하는 메모리 접근 요청을 생성하는 하드웨어 IP 유닛;
    상기 프로세싱 유닛 및 상기 하드웨어 IP 유닛과 통신하는 메모리 관리 유닛을 포함하되,
    상기 메모리 관리 유닛은:
    상기 하드웨어 IP 유닛으로부터 가상 주소를 포함하는 메모리 접근 요청을 수신하고, 상기 가상 주소를 물리 주소로 변환하는 주소 변환 유닛;
    복수의 물리 주소에 대한 페이지 디스크립터들을 저장하는 변환 색인 버퍼를 포함하되, 상기 주소 변환 유닛은 상기 가상 주소에 대응하는 페이지 디스크립터가 상기 변환 색인 버퍼에 존재하는지 결정하고; 그리고
    복수의 물리 주소에 대한 페이지 디스크립터들을 저장하는 프리패치 버퍼를 포함하고, 상기 주소 변환 유닛은 제 1 및 제 2 접근 방향 정보(ADI1, ADI2)에 근거하여 상기 프리패치 버퍼를 업데이트하되,
    상기 제 1 접근 방향 정보(ADI1)는 상기 프로세싱 유닛으로부터 수신된 프리패치 버퍼 매칭 정보이고, 상기 제 2 접근 방향 정보(ADI2)는 상기 하드웨어 IP 유닛으로부터 수신되는 프리패치 버퍼 매칭 정보이고,
    상기 제 1 및 제 2 접근 방향 정보(ADI1, ADI2)는 상기 가상 주소에 후속하는 가상 주소의 증감 방향에 대한 정보이며, 상기 프로세싱 유닛 또는 상기 하드웨어 IP 유닛은 상기 제 1 및 제 2 접근 방향 정보(ADI1, ADI2)에 따라 메모리 장치로부터 상기 페이지 디스크립터를 프리패치할 경우 미스가 발생할 불연속 가상 주소의 페이지 디스크립터들을 상기 메모리 장치의 주소 변환 테이블로부터 미리 패치하도록 상기 메모리 관리 유닛에게 요청하는 응용 프로세서.
  12. 제 11 항에 있어서,
    상기 수신된 가상 주소에 대응하는 페이지 디스크립터가 상기 변환 색인 버퍼에 존재하지 않는 경우, 상기 주소 변환 유닛은,
    상기 프리패치 버퍼에 수신된 가상 주소에 대응하는 페이지 디스크립터가 존재하는지 검출하고;
    상기 제 1 및 제 2 접근 방향 정보(ADI1, ADI2) 중 어느 하나에 응답하여 상기 프리패치 버퍼에 존재하지 않는 것으로 검출된 상기 가상 주소의 페이지 디스크립터를 상기 메모리 장치로부터 프리패치하는 프리패치 동작을 수행하고;
    상기 페이지 디스크립터를 사용하여 상기 가상 주소를 물리 주소로 변환하는 응용 프로세서.
  13. 제 12 항에 있어서,
    상기 주소 변환 유닛은 상기 메모리 장치로부터 프리패치한 상기 페이지 디스크립터를 상기 변환 색인 버퍼에 업데이트하는 응용 프로세서.
  14. 제 12 항에 있어서,
    상기 프리패치 동작은, 상기 프로세싱 유닛으로부터 제공되는 패치 요청에 따라 수행되고, 상기 패치 요청은 상기 가상 주소에 대한 페이지 디스크립터 또는 상기 가상 주소 중 적어도 하나를 포함하는 응용 프로세서.
  15. 제 12 항에 있어서,
    상기 프리패치 동작은, 상기 하드웨어 IP 유닛으로부터 제공되는 패치 요청에 따라 수행되고, 상기 패치 요청은 상기 가상 주소에 대한 페이지 디스크립터 또는 상기 가상 주소 중 적어도 하나를 포함하는 응용 프로세서.
  16. 제 12 항에 있어서,
    복수의 물리 주소에 대한 페이지 디스크립터들을 저장하는 다이렉트 버퍼를 더 포함하고, 상기 주소 변환 유닛은 다이렉트 패치 요청 명령을 수신하고, 수신된 상기 다이렉트 패치 요청 명령에 따라 상기 수신된 가상 주소에 대한 페이지 디스크립터들 중 적어도 하나를 패치하여 상기 다이렉트 버퍼에 저장하는 응용 프로세서.
  17. 제 16 항에 있어서,
    상기 다이렉트 패치 요청 명령은, 상기 메모리 관리 유닛과 통신하는 하드웨어 IP 유닛으로부터 수신되는 응용 프로세서.
  18. 제 16 항에 있어서,
    상기 다이렉트 패치 요청 명령은, 상기 메모리 관리 유닛과 통신하는 프로세싱 유닛으로부터 수신되는 응용 프로세서.
  19. 제 16 항에 있어서,
    상기 다이렉트 패치 요청 명령은 상기 메모리 접근 요청보다 먼저 수신되고 실행되는 응용 프로세서.
  20. 프로세싱 유닛;
    가상 주소를 포함하는 메모리 접근 요청을 생성하는 하드웨어 IP 유닛;
    메모리 장치;
    상기 프로세싱 유닛, 상기 하드웨어 IP 유닛, 그리고 상기 메모리 장치와 통신하는 메모리 관리 유닛을 포함하되,
    상기 메모리 관리 유닛은:
    상기 하드웨어 IP 유닛으로부터 가상 주소를 포함하는 메모리 접근 요청을 수신하고, 상기 가상 주소를 물리 주소로 변환하는 주소 변환 유닛;
    복수의 물리 주소에 대한 페이지 디스크립터들을 저장하는 변환 색인 버퍼를 포함하되, 상기 주소 변환 유닛은 상기 가상 주소에 대응하는 페이지 디스크립터가 상기 변환 색인 버퍼에 존재하는지 결정하고; 그리고
    복수의 물리 주소에 대한 페이지 디스크립터들을 저장하는 프리패치 버퍼를 포함하고, 상기 주소 변환 유닛은 제 1 접근 방향 정보(ADI1) 또는 제 2 접근 방향 정보(ADI2)에 근거하여 상기 프리패치 버퍼를 업데이트하되,
    상기 제 1 접근 방향 정보(ADI1)는 상기 프로세싱 유닛으로부터 수신된 프리패치 버퍼 매칭 정보이고, 상기 제 2 접근 방향 정보(ADI2)는 상기 하드웨어 IP 유닛으로부터 수신되는 프리패치 버퍼 매칭 정보이고,
    상기 제 1 및 제 2 접근 방향 정보(ADI1, ADI2)는 상기 가상 주소에 후속하는 가상 주소의 증감 방향에 대한 정보이며, 상기 프로세싱 유닛 또는 상기 하드웨어 IP 유닛은 상기 제 1 및 제 2 접근 방향 정보(ADI1, ADI2)에 따라 상기 메모리 장치로부터 상기 페이지 디스크립터를 프리패치할 경우 미스가 발생할 불연속 가상 주소의 페이지 디스크립터들을 상기 메모리 장치의 주소 변환 테이블로부터 미리 패치하도록 상기 메모리 관리 유닛에게 요청하는 시스템 온 칩.
KR1020140117790A 2013-09-13 2014-09-04 시스템 온 칩 및 그것의 주소 변환 방법 KR102290464B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201361877471P 2013-09-13 2013-09-13
US61/877,471 2013-09-13
US201361898079P 2013-10-31 2013-10-31
US61/898,079 2013-10-31
US14/462,774 US9645934B2 (en) 2013-09-13 2014-08-19 System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer
US14/462,774 2014-08-19

Publications (2)

Publication Number Publication Date
KR20150031402A KR20150031402A (ko) 2015-03-24
KR102290464B1 true KR102290464B1 (ko) 2021-08-19

Family

ID=52669090

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140117790A KR102290464B1 (ko) 2013-09-13 2014-09-04 시스템 온 칩 및 그것의 주소 변환 방법

Country Status (2)

Country Link
US (1) US9645934B2 (ko)
KR (1) KR102290464B1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7944946B2 (en) 2008-06-09 2011-05-17 Fortinet, Inc. Virtual memory protocol segmentation offloading
US9594687B2 (en) * 2015-04-14 2017-03-14 Google Inc. Virtualization-aware prefetching
US20170024145A1 (en) * 2015-07-23 2017-01-26 Qualcomm Incorporated Address translation and data pre-fetch in a cache memory system
US9734088B2 (en) 2015-08-12 2017-08-15 International Business Machines Corporation Memory management unit and method for accessing data
US9990690B2 (en) 2015-09-21 2018-06-05 Qualcomm Incorporated Efficient display processing with pre-fetching
CN105512054B (zh) * 2015-12-09 2018-11-09 上海兆芯集成电路有限公司 主机接口控制器以及储存装置控制方法
US9820018B2 (en) * 2015-12-12 2017-11-14 Intel Corporation Low power sensing apparatus and method using a combination of virtual machine and dedicated hardware intellectual property IP block
US10402332B2 (en) * 2016-05-24 2019-09-03 Xilinx, Inc. Memory pre-fetch for virtual memory
US10489304B2 (en) * 2017-07-14 2019-11-26 Arm Limited Memory address translation
US11061591B2 (en) * 2018-11-02 2021-07-13 Samsung Electronics Co., Ltd. Storage device processing stream data, system including the same, and operation method thereof
US11256439B2 (en) * 2020-06-30 2022-02-22 EMC IP Holding Company, LLC System and method for parallel journaling in a storage cluster
KR20220078132A (ko) 2020-12-03 2022-06-10 삼성전자주식회사 어드레스 변환을 수행하는 시스템 온 칩 및 이의 동작 방법
EP4352619A2 (en) * 2021-06-09 2024-04-17 Enfabrica Corporation Transparent remote memory access over network protocol
US20230060194A1 (en) * 2021-08-30 2023-03-02 International Business Machines Corporation Dynamically allocating memory controller resources for extended prefetching

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070226422A1 (en) * 2006-03-08 2007-09-27 Matsushita Electric Industrial Co., Ltd. Multi-master system and data transfer system
US20080155226A1 (en) * 2005-05-18 2008-06-26 International Business Machines Corporation Prefetch mechanism based on page table attributes
US20110296136A1 (en) * 2005-03-29 2011-12-01 O'connor Dennis M Locking Entries Into Translation Lookaside Buffers
US20120198176A1 (en) * 2009-03-30 2012-08-02 Via Technologies, Inc. Prefetching of next physically sequential cache line after cache line that includes loaded page table entry

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6175898B1 (en) * 1997-06-23 2001-01-16 Sun Microsystems, Inc. Method for prefetching data using a micro-TLB
EP1139222A1 (en) * 2000-03-31 2001-10-04 Texas Instruments Incorporated Prefetch for TLB cache
US7167954B2 (en) * 2002-09-09 2007-01-23 Broadcom Corporation System and method for caching
US6910106B2 (en) * 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US7177985B1 (en) 2003-05-30 2007-02-13 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US7194582B1 (en) 2003-05-30 2007-03-20 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US7200719B2 (en) * 2003-07-31 2007-04-03 Freescale Semiconductor, Inc. Prefetch control in a data processing system
US7386679B2 (en) 2004-04-15 2008-06-10 International Business Machines Corporation System, method and storage medium for memory management
JP4520790B2 (ja) * 2004-07-30 2010-08-11 富士通株式会社 情報処理装置およびソフトウェアプリフェッチ制御方法
US7395406B2 (en) 2005-05-12 2008-07-01 International Business Machines Corporation System and method of large page handling in a virtual memory system
US20060288130A1 (en) 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
US7793067B2 (en) 2005-08-12 2010-09-07 Globalfoundries Inc. Translation data prefetch in an IOMMU
JP4160589B2 (ja) 2005-10-31 2008-10-01 富士通株式会社 演算処理装置,情報処理装置,及び演算処理装置のメモリアクセス方法
US7739476B2 (en) 2005-11-04 2010-06-15 Apple Inc. R and C bit update handling
JP2007233615A (ja) * 2006-02-28 2007-09-13 Fujitsu Ltd アドレス変換装置
US7620749B2 (en) 2007-01-10 2009-11-17 International Business Machines Corporation Descriptor prefetch mechanism for high latency and out of order DMA device
US8024547B2 (en) 2007-05-01 2011-09-20 Vivante Corporation Virtual memory translation with pre-fetch prediction
US20090006754A1 (en) * 2007-06-28 2009-01-01 Luick David A Design structure for l2 cache/nest address translation
US20090006803A1 (en) * 2007-06-28 2009-01-01 David Arnold Luick L2 Cache/Nest Address Translation
US9239799B2 (en) * 2008-06-26 2016-01-19 Qualcomm Incorporated Memory management unit directed access to system interfaces
KR20100005539A (ko) 2008-07-07 2010-01-15 삼성전자주식회사 캐시 메모리 시스템 및 캐시의 프리페칭 방법
JP5526626B2 (ja) * 2009-06-30 2014-06-18 富士通株式会社 演算処理装置およびアドレス変換方法
US8397049B2 (en) * 2009-07-13 2013-03-12 Apple Inc. TLB prefetching
US8296538B2 (en) 2010-02-17 2012-10-23 Arm Limited Storing secure mode page table data in secure and non-secure regions of memory
US8244978B2 (en) 2010-02-17 2012-08-14 Advanced Micro Devices, Inc. IOMMU architected TLB support
KR101781617B1 (ko) * 2010-04-28 2017-09-25 삼성전자주식회사 통합 입출력 메모리 관리 유닛을 포함하는 시스템 온 칩
US20120079303A1 (en) * 2010-09-24 2012-03-29 Madduri Venkateswara R Method and apparatus for reducing power consumption in a processor by powering down an instruction fetch unit
US8838935B2 (en) * 2010-09-24 2014-09-16 Intel Corporation Apparatus, method, and system for implementing micro page tables
US8405668B2 (en) 2010-11-19 2013-03-26 Apple Inc. Streaming translation in display pipe
US9092358B2 (en) * 2011-03-03 2015-07-28 Qualcomm Incorporated Memory management unit with pre-filling capability
KR20120127108A (ko) * 2011-05-13 2012-11-21 삼성전자주식회사 메모리 시스템
KR20120129695A (ko) * 2011-05-20 2012-11-28 삼성전자주식회사 메모리 관리 유닛, 이를 포함하는 장치들 및 이의 동작 방법
US20140108766A1 (en) * 2012-10-17 2014-04-17 Advanced Micro Devices, Inc. Prefetching tablewalk address translations
EP2840504A1 (en) * 2013-08-23 2015-02-25 ST-Ericsson SA Enhanced pre-fetch in a memory management system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110296136A1 (en) * 2005-03-29 2011-12-01 O'connor Dennis M Locking Entries Into Translation Lookaside Buffers
US20080155226A1 (en) * 2005-05-18 2008-06-26 International Business Machines Corporation Prefetch mechanism based on page table attributes
US20070226422A1 (en) * 2006-03-08 2007-09-27 Matsushita Electric Industrial Co., Ltd. Multi-master system and data transfer system
US20120198176A1 (en) * 2009-03-30 2012-08-02 Via Technologies, Inc. Prefetching of next physically sequential cache line after cache line that includes loaded page table entry

Also Published As

Publication number Publication date
KR20150031402A (ko) 2015-03-24
US20150082000A1 (en) 2015-03-19
US9645934B2 (en) 2017-05-09

Similar Documents

Publication Publication Date Title
KR102290464B1 (ko) 시스템 온 칩 및 그것의 주소 변환 방법
US11074190B2 (en) Slot/sub-slot prefetch architecture for multiple memory requestors
US8495301B1 (en) System and method for scatter gather cache processing
US8423715B2 (en) Memory management among levels of cache in a memory hierarchy
JP5688823B2 (ja) ディスプレイパイプにおけるストリーミング式翻訳
JP7340326B2 (ja) メンテナンス動作の実行
US8037281B2 (en) Miss-under-miss processing and cache flushing
US9563568B2 (en) Hierarchical cache structure and handling thereof
CN113424160A (zh) 一种处理方法、装置及相关设备
US9558120B2 (en) Method, apparatus and system to cache sets of tags of an off-die cache memory
US20210089470A1 (en) Address translation methods and systems
US7809889B2 (en) High performance multilevel cache hierarchy
JPWO2010035426A1 (ja) バッファメモリ装置、メモリシステム及びデータ転送方法
KR102482516B1 (ko) 메모리 어드레스 변환
US10467140B2 (en) Apparatus having main TLB and local TLBS, and configured to set selected size for new entry allocated to local TLB to a default size
US8880847B2 (en) Multistream prefetch buffer
CN115292214A (zh) 页表预测方法、存储访问操作方法、电子装置和电子设备
KR101893966B1 (ko) 메모리 관리 방법 및 장치, 및 메모리 컨트롤러
CN118020064A (zh) 具有伪lru补充年龄信息的重新引用区间预测(rrip)
US20110167223A1 (en) Buffer memory device, memory system, and data reading method
CN110046107B (zh) 存储器地址转换装置和方法
JP2015527684A (ja) スティッキー抜去エンジンを伴うシステムキャッシュ
US20020188805A1 (en) Mechanism for implementing cache line fills
US11003591B2 (en) Arithmetic processor, information processing device and control method of arithmetic processor
GB2502858A (en) A method of copying data from a first memory location and storing it in a cache line associated with a different memory location

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