KR102069273B1 - 시스템 온 칩 및 그 동작방법 - Google Patents

시스템 온 칩 및 그 동작방법 Download PDF

Info

Publication number
KR102069273B1
KR102069273B1 KR1020130025727A KR20130025727A KR102069273B1 KR 102069273 B1 KR102069273 B1 KR 102069273B1 KR 1020130025727 A KR1020130025727 A KR 1020130025727A KR 20130025727 A KR20130025727 A KR 20130025727A KR 102069273 B1 KR102069273 B1 KR 102069273B1
Authority
KR
South Korea
Prior art keywords
page table
prefetch
address
management unit
memory management
Prior art date
Application number
KR1020130025727A
Other languages
English (en)
Other versions
KR20140111499A (ko
Inventor
김관호
김석민
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020130025727A priority Critical patent/KR102069273B1/ko
Priority to AU2014201012A priority patent/AU2014201012A1/en
Priority to TW103107120A priority patent/TWI621945B/zh
Priority to DE102014103056.7A priority patent/DE102014103056A1/de
Priority to NL2012387A priority patent/NL2012387B1/en
Priority to JP2014047411A priority patent/JP6370065B2/ja
Priority to US14/203,799 priority patent/US9880940B2/en
Priority to CN201410088744.3A priority patent/CN104050089B/zh
Publication of KR20140111499A publication Critical patent/KR20140111499A/ko
Application granted granted Critical
Publication of KR102069273B1 publication Critical patent/KR102069273B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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/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
    • 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/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation

Abstract

시스템 온칩 및 그 동작방법이 개시된다. 본 발명의 실시예에 따른 SoC는 프리펫치 방향 정보 및 MMU 할당 정보를 설정하는 CPU, 적어도 하나의 작업세트를 처리하는 마스터 IP, 상기 각 작업세트마다 할당되어 상기 각 작업세트의 가상주소를 물리주소로 주소번역하는 적어도 하나의 MMU(Memory Management Unit)들, 상기 MMU 할당 정보를 저장하고, 상기 MMU 할당 정보에 기초하여 주소번역을 수행할 MMU를 할당하는 주소 분배기 및 데이터에 대한 물리주소 정보 및 데이터를 저장하는 메모리 장치를 포함한다. 상기 MMU는 상기 프리펫치 방향 정보에 따라 상기 페이지 테이블로부터 페이지 테이블 엔트리를 프리펫치한다.

Description

시스템 온 칩 및 그 동작방법{SYSTEM ON CHIP AND OPERATING METHOD THEREOF}
본 발명의 개념에 따른 실시예들은 메모리 관리유닛을 포함하는 시스템 온 칩에 관한 것으로, 복수 개의 작업세트들에 대해 동작하는 메모리 관리 유닛을 포함하는 시스템 온 칩 및 그 동작방법에 관한 것이다.
디스플레이 장치를 포함한 전자 장치(예를 들어 모바일 폰, 터치형 PC 등 모바일 기기)에서, 전자장치를 돌려 가로(landscape) 또는 세로(portrait) 영상으로 보는 사용자 작업이 많아지고 있다.
메모리 관리 유닛(Memory Management Unit; 이하 MMU)은 CPU(Central Processing Unit), GPU(Graphic Processing Unit) 등으로 대표되는 직접 메모리 접근 유닛들, 즉 마스터 IP들에 의해 요구되는 메모리 접근(Memory Access)를 처리하기 위한 하드웨어 컴포넌트(hardware component)이다. MMU는 페이지 메모리 관리 유닛(Page Memory Management Unit; PMMU)라고 불리기도 한다.
디스플레이 장치에서 로테이션(rotation) 동작은 단순한 이미지 사이즈 변화 및 X축 회전, Y축 회전,90도 회전, XY축 회전 등 여러가지 경우에 따라 소스 이미지(Source Image)에 재접근하여 리드하고 데스티네이션 이미지(Destination Image 또는 Rotated Image)를 생성해야 한다. 이때 소스 이미지에 재접근시 데이터 접근을 위한 가상주소가 순차적으로 증가하지 않는다.
MMU는 소스 이미지에 재접근시 TLB(Translation Lookaside Buffer; TLB)를 먼저 검색하고, TLB 미스(TLB miss)시 페이지 테이블 워크(Page Table Walk; PTW)를 수행한다. 이 경우 연속되지 않은 가상주소로 인해 장치에서 TLB 미스가 많이 날 경우 무시못할 미스 패널티(miss penalty) 때문에 장치의 성능이 저하된다.
미스 패널티를 해결하기 위해 MMU를 포함하는 장치는 다음 액세스할 가능성이 있는 페이지 테이블 정보를 미리 MMU 내의 프리펫치 버퍼(prefetch buffer)로 프리펫치할 수 있다. 그러나 복수의 작업세트들이 있고 각 작업세트가 서로 다른 액세스 패턴을 갖는 경우에는, 프리펫치 버퍼에 대한 프리펫치 히트 비율(Prefetch hit ratio)이 떨어진다.
본 발명이 이루고자 하는 기술적인 과제는 마스터 IP가 복수의 작업세트들을 처리할 경우 프리펫치 히트 비율(Prefetch Hit ratio)을 높일 수 있는 시스템 온칩, 및 그 동작방법을 제공하는 것이다.
상술한 기술적 과제를 해결하기 위해 본 발명의 일실시예에 따른 시스템 온 칩은는 프리펫치 방향(Prefetch Direction)을 설정하는 CPU(Central Processing Unit), 적어도 하나의 작업세트를 처리하는 IP(Intellectual Properties), 상기 작업세트의 가상주소와 물리주소 간 주소번역시 상기 프리펫치 방향에 기초하여 다음에 접근할 페이지 테이블 엔트리(Next Page Table Entry)를 프리펫치 하는 적어도 하나의 메모리 관리 유닛(Memory Management Unit)를 포함한다.
일 실시예에 따라 상기 SoC는 복수의 상기 페이지 테이블 엔트리를 포함하는 페이지 테이블을 포함하는 메모리 장치를 더 포함한다.
상기 메모리 관리 유닛은 상기 가상주소와 상기 물리주소의 맵핑정보를 저장하는 TLB(Translation Lookaside Buffer), 설정된 상기 프리펫치 방향을 저장하는 저장부 및 상기 다음에 접근할 페이지 테이블 엔트리(Next Page Table Entry)를 저장하는 프리펫치 버퍼(Prefetch Buffer)를 포함한다.
상기 CPU는 상기 메모리 관리 유닛의 할당정보를 설정할 수 있다.
상기 메모리 관리 유닛은 상기 IP로부터 데이터 요청을 수신하면 상기 할당정보에 따라 상기 작업세트별로 할당되어 상기 주소번역을 할 수 있다.
상기 SoC는 상기 CPU에 의해 설정된 상기 각 작업세트에 할당되는 상기 메모리 관리 유닛의 할당정보를 저장하여, 상기 IP로부터 수신한 요청이 발생하면, 상기 할당정보에 기초하여 상기 요청에 상응하는 상기 메모리 관리 유닛을 할당하는 주소분배기를 더 포함할 수 있다.
다른 실시예에 따라 상기 SoC는 복수의 상기 페이지 테이블 엔트리들을 포함하는 페이지 테이블을 포함하는 메모리 장치를 더 포함할 수 있다.
상기 각 페이지 테이블 엔트리는 물리 페이지 주소, 오프셋 및 설정된 상기 프리펫치 방향을 저장하는 프리펫치 방향 필드를 포함한다.
또다른 실시예에 따라 상기 SoC는 복수의 상기 페이지 테이블 엔트리들을 포함하는 페이지 테이블을 포함하는 메모리 장치를 더 포함할 수 있다.
상기 각 페이지 테이블 엔트리는 물리 페이지 주소, 오프셋 및 설정된 상기 프리펫치 방향에 따라 상기 다음에 접근할 페이지 테이블 엔트리를 저장하는 프리펫치 타겟 엔트리 넘버 필드를 포함할 수 있다.
본 발명의 다른 실시예에 따른 메모리 관리 유닛(MMU)은 IP로부터 요청된 복수의 작업세트들 각각의 가상주소들을 물리주소들로 번역하는 TLB(Translation Lookaside Buffer), 상기 각 작업세트마다 기설정된 프리펫치 방향을 저장하는 SFR(Special Function Register) 및 페이지 테이블 워크시 상기 프리펫치 방향에 따라 메모리 장치로부터 다음에 접근할 페이지 테이블 엔트리를 프리펫치하는 프리펫치 버퍼를 포함한다.
상기 프리펫치 방향 정보는 상기 각 작업세트에 따라, 상기 이미지의 데이터에 대한 상기 물리 주소가 액세스되는 패턴 정보이다.
본 발명의 실시예에 따른 메모리 관리 유닛은 IP로부터 요청된 복수의 작업세트들 각각의 가상주소들을 물리주소들로 번역하는 TLB(Translation Lookaside Buffer), 상기 각 작업세트마다 기설정된 프리펫치 방향을 저장하는 SFR(Special Function Register), 페이지 테이블 워크시 상기 프리펫치 방향에 따라 메모리 장치로부터 다음에 접근할 페이지 테이블 엔트리를 프리펫치하는 프리펫치 버퍼를 포함한다.
본 발명의 또다른 실시예에 따른 CPU, 적어도 하나의 IP(Intellectual Property), 메모리 관리 유닛을 포함하는 시스템 온 칩(System On Chip)의 동작방법은 (a)상기 CPU가 프리펫치 방향 및 메모리 관리 유닛 할당정보를 설정하는 단계, (b)상기 IP가 복수의 작업세트들 각각에 따라 메모리 관리 유닛(Memory Management Unit)로 데이터 액세스를 요청하는 단계, (c)상기 메모리 관리 유닛이 상기 요청에 따른 주소 번역의 페이지 테이블 워크시 상기 프리펫치 방향에 기초하여 다음에 접근할 페이지 테이블 엔트리(Next Page Table Entry)를 프리펫치(Prefetch)하는 단계 및 (d)상기 메모리 관리 유닛이 상기 페이지 테이블 엔트리에 따라 상기 각 작업세트의 가상주소들을 물리주소로 번역하여 데이터에 액세스하는 단계를 포함한다.
본 발명의 또다른 실시예에 따른 SoC는 프리펫치 방향 정보 및 메모리 관리 유닛 할당 정보를 설정하는 CPU(Central Processing Unit), 적어도 하나의 작업세트를 처리하는 IP, 상기 프리펫치 방향 정보를 저장하고, 상기 각 작업세트마다 할당되어 상기 IP의 요청에 따른 상기 각 작업세트의 가상주소를 물리주소로 주소번역하는 적어도 하나의 메모리 관리 유닛(Memory Management Unit)들, 상기 메모리 관리 유닛 할당 정보를 저장하고, 상기 메모리 관리 유닛 할당 정보에 기초하여 주소번역을 수행할 메모리 관리 유닛을 할당하는 주소 분배기 및 페이지 테이블을 포함하여, 데이터에 대한 물리주소 정보 및 데이터를 저장하는 메모리 장치를 포함한다.
상기 메모리 관리 유닛은 상기 프리펫치 방향 정보에 따라 상기 페이지 테이블로부터 다음에 접근할 페이지 테이블 엔트리를 프리펫치(Prefetch)한다.
본 발명의 실시예들에 따른 SoC 및 그 동작방법은 메모리 관리 유닛에 프리펫치 방향을 알려주고, 상기 프리펫치 방향에 따라 페이지 테이블 엔트리를 프리펫치함으로써 프리펫치 히트(Prefetch hit) 비율을 높이고, 그 성능을 향상시킬 수 있는 효과가 있다.
도 1은 소스 이미지를 각각 설정되는 방향으로 회전시키는 회전 이미지(데스티네이션 이미지)들을 나타낸다.
도 2는 본 발명의 실시예들에 따른 메모리 관리 유닛을 포함하는 전자장치의 블록도이다.
도 3은 도 2에 도시된 SoC의 블록도이다.
도 4는 도 2에 도시된 메모리 관리 유닛의 일실시예에 따른 구체적인 블록도이다.
도 5는 도 4에 도시된 페이지 테이블에 따라 가상주소와 물리주소의 맵핑을 나타내는 개념도이다.
도 6은 도 2에 도시된 메모리 관리 유닛의 일실시예에 따른 개념도이다.
도 7은 도 2에 도시된 메모리 관리 유닛의 다른 실시예에 따른 개념도이다.
도 8은 도 4에 도시된 페이지 테이블의 필드 구성을 나타낸 다이어그램이다.
도 9는 본 발명의 다른 실시예에 따른 메모리 관리 유닛의 동작방법을 나타낸 순서도이다.
도 10은 도 2에 도시된 SoC를 포함하는 전자장치의 일 실시예를 나타낸다.
도 11은 도 2에 도시된 SoC를 포함하는 전자장치의 다른 실시예를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
본 발명의 개념에 따른 실시 예는 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있으므로 특정 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예를 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1 및/또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 다수개의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다.
도 1은 소스 이미지를 각각 설정되는 방향으로 회전시키는 회전 이미지(데스티네이션 이미지)들을 나타낸다.
도 1을 참조하면, 소스 이미지(Source Image)는 디스플레이 장치의 설정, 사용자의 설정 또는 시스템 설정 등에 따라 여러 가지 경우로 회전될 수 있다.
다양한 실시예에 따라 소스 이미지(Source)는 X축 기준으로 반대위상으로 회전될 수도 있고(X Flip), Y축 기준으로 반대위상으로 회전될 수 있으며(Y Flip), XY축 기준으로 반대위상으로 회전될 수도 있다(XY Flip,180).
또한 다양한 실시예에 따라 소스 이미지는 시계방향으로 90도 회전될 수도 있으며(90), X축 기준으로 반대위상이 되며 시계방향으로 90도 또는 270도 회전될 수 있거나(90+X Flip, 270+X Flip) 단순히 시계방향으로 270도 회전될 수도 있다(270)
회전된 이미지는 데스티네이션 이미지로서, 각 경우마다 로테이션으로 인한 주소 접근 패턴이 상기와 같이 정해질 수 있다.
도 2는 본 발명의 실시예들에 따른 메모리 관리 유닛을 포함하는 전자 장치의 블록도이다.
도 2를 참조하면, PC(personal computer), 태블릿 PC(tablet PC), 넷-북(net-book), e-리더(e-reader), PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 또는 MP4 플레이어와 같은 데이터 처리 장치로 구현될 수 있는 전자 장치(100)는 전자 장치(100)의 전반적인 동작을 제어하는 SoC(1)를 포함한다.
SoC(1)는 일례로 프로세서(Processor)로 구현가능하고, 프로세서는 프로그램 명령들(program instructions)을 읽고 실행하는 유닛이다. SoC(1)는 메모리 관리 유닛(Memory Management Unit; 이하 MMU, 10)를 포함할 수 있다.
예컨대, SoC(1)는 프로그램 명령들(예컨대, 입력 장치(120)를 통하여 입력된 입력 신호에 의해 생성된 프로그램 명령들)을 실행한다. SoC(1)는 메모리 장치(110)에 저장된 데이터를 리드(read)하고 리드된 데이터를 디스플레이(130)를 통하여 디스플레이하도록 한다. 메모리 장치(110)는 SoC(1)로부터 수신한 요청에 따라 데이터를 처리한다.
메모리 장치(110)는 가상주소에 대한 물리주소를 변환하는 페이지 테이블(115)을 포함할 수 있다. 메모리 장치(110)는 다양한 실시예에 따라 SoC(1) 내부에 구현될 수도 있고, SoC(1) 외부에 구현될 수도 있다.
예컨대, 입력 장치(120)는 터치 패드(touch pad) 또는 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(key pad), 또는 키보드로 구현될 수 있다.
도 3은 도 2에 도시된 SoC의 블록도이다.
도 2와 도 3을 참조하면, SoC(1)는 CPU(3), 캐시(cache, 5), 및 메모리 관리 유닛(memory management unit; 이하 MMU, 10) 등을 포함한다.
CPU(3)는 프로그램 명령들을 읽고 실행하는 동작을 수행하는 프로세서(1)의 부분일 수 있다.
실시 예에 따라, MMU(10)는 디스플레이 컨트롤러(80)으로부터 출력되는 가상 주소를 물리 주소로 번역하기 위해 사용될 수 있다.
캐시(5)는 메모리 장치(110)로부터 데이터를 보다 빠르게 리드/라이트(read/write)하기 위해 상기 데이터를 저장하는 컴포넌트(component)이다. CPU(3)는 페이지의 내용을 메모리 장치(110)로부터 리드(Read 또는 Page In)하여 캐시(5)에 저장할 수 있다. CPU(3)는 캐시(5)에 저장되어 있던 페이지의 내용을 메모리 장치(110)로 라이트(Write 또는 Page Out)할 수 있다.
MMU(10)는 CPU(3)에 의해 요구되는 메모리(110)의 접근을 처리하기 위한 하드웨어 컴포넌트이다.
MMU(10)의 기능은 CPU(3), GPU, 디스플레이 컨트롤러(80) 또는 멀티미디어 가속 유닛(60) 내 그래픽 엔진로부터의 요청들에 대한 가상 주소들(virtual addresses)을 물리 주소들(physical addresses)로의 번역(translation), 메모리 보호, 캐시(5)의 제어, 버스 중재(bus arbitration), 또는 뱅크 스위칭(bank switching)을 포함한다.
실시 예에 따라 SoC(1)는 시스템 주변 유닛(50), 멀티 미디어 가속 유닛(multimedia acceleration unit; 60), 접속 유닛(connectivity unit; 70), 디스플레이 컨트롤러(80), 및 메모리 인터페이스 유닛(90)을 더 포함할 수 있다.
시스템 주변 유닛(50), 멀티 미디어 가속 유닛(60), 접속 유닛(70), 디스플레이 컨트롤러(80), 및 메모리 인터페이스 유닛(90) 각각은 시스템 버스(30)를 통해 데이터나 명령을 주고 받는다.
시스템 버스(30)는 복수의 채널들을 포함할 수 있다. 예컨대, 복수의 채널들은 AXI 채널 규격에 따라 리드 데이터 채널(R), 리드 주소 채널(AR), 라이트 주소 채널(WR), 라이트 응답채널(B) 및 라이트 데이터 채널(W)을 포함할 수 있다.
시스템 주변 유닛(50)은 실시간 클럭(real-time clock (RTC)), 위상 동기 루프 (phase-locked loop(PLL)), 및 워치독 타이머(watch dog Timer)를 포함한다.
멀티 미디어 가속 유닛(60)은 그래픽 엔진(62)을 포함한다. 실시 예에 따라, 멀티 미디어 가속 유닛(60)은 카메라 인터페이스, 그래픽 계산을 수행하기 위해 프레임 버퍼 또는 다른 비디오 디스플레이 회로(circuitry)와 집적된 그래픽 엔진, 및 압축되지 않은 디지털 데이터를 전송하기 위한 오디오/비디오 인터페이스인 HDMI(High-Definition Multimedia Interface)을 포함할 수 있다.
실시 예에 따라, MMU(10)는 상기 그래픽 엔진(62)으로부터 출력되는 작업세트의 가상 주소들을 물리 주소로 번역하기 위해 사용될 수 있다.
실시 예에 따라 멀티 미디어 가속 유닛(60)은 HDMI 대신에 아날로그 텔레비전 인코딩 시스템인 NTSC(national television system committee)/PAL(phase alternate line)을 포함할 수 있다.
접속 유닛(70)은 오디오 인터페이스(Audio IF), ATA(Advanced Technology Attachment)와 같은 스토리지 인터페이스(storage IF), 및 접속 인터페이스(connectivity IF)을 포함한다. 예컨대, 접속 유닛(70)은 입력 장치 (120)와 통신을 수행하도록 한다.
디스플레이 컨트롤러(80)는 데이터를 디스플레이(130)에 디스플레이되도록 제어한다.
실시 예에 따라, MMU(10)는 디스플레이 컨트롤러(80)으로부터 출력되는 가상 주소를 물리 주소로 번역하기 위해 사용될 수 있다.
메모리 인터페이스 유닛(90)은 메모리 장치(110)의 종류(예컨대, 플래시 메모리, 또는 DRAM)에 따라 메모리(110)를 접근 가능하도록 하는 인터페이스이다.
설명의 편의를 위해, 상술한 바와 같이 CPU(3), 그래픽 엔진, 디스플레이 컨트롤러(80) 등 작업세트 단위로 데이터를 처리하는 프로세서들을 IP(Master Intellectual Property; Master IP)라고 하자.
IP는 작업세트 단위로 동작할 수 있고, 동시에 복수 개의 작업세트들을 처리할 수 있다. 작업세트(Working Set)란 메모리 장치(110)에 저장되는 데이터 세트로, IP가 메모리 장치(110)에서 자주 참조하는 페이지(page)들의 집합, 또는 하나의 IP로부터 메모리 장치(110)로 올라갈 수 있는 페이지들의 양을 말한다. 이때 IP에서 각 작업세트는 다른 작업세트들과 독립적으로 운용된다. 하나의 작업세트는 연속된 가상주소들의 데이터일 수 있다.
도 4는 도 2에 도시된 메모리 관리 유닛의 동작을 설명하기 위한 개념도이다.
도 2 내지 도 4를 참고하면, MMU(10)는 TLB(Translation Lookaside Buffer; 이하 TLB, 12)를 포함하고, IP(4) 및 메모리 장치(110)와 복수의 채널들(R, AR, AW, B 및 W)로 연결되어 있다.
IP(4)는 복수의 작업세트들을 처리하기 위해 데이터 액세스를 요청한다. IP(4)는 데이트 액세스를 위해, 각 작업세트에 상응하는 요청을 MMU (10) 또는 캐시 (5)로 출력한다. 이때 IP(4)가 출력하는 요청에는 액세스하려는 데이터에 대한 정보, 즉, 메모리 장치(110) 내 해당 작업세트에 대한 가상주소( VA)들이 포함된다.
IP(4)의 요청에 따라 가상 주소(VA)를 이용하여 페이지 물리 주소(PA)를 계산하여 출력한다. 페이지 물리 주소(PA)는 가상 주소(VA)의 페이지 번호(PN)와 오프셋(예컨대, 페이지 테이블 포인터)을 결합하여 페이지 테이블(115)에 인덱스로서 접근하기 위한 주소이다.
TLB(Translation Lookaside Buffer. 12)는 가상 주소 번역 속도(virtual address translation speed)를 향상시키기 위해서 사용되는 메모리 관리 하드웨어이며, 페이지 번호(PN)와 프레임 번호(FN)가 매핑되어 있다. 즉, TLB(12)는 IP(4)가 참조하였던 페이지들에 대해 가상주소(VA)와 물리주소(PA)를 매핑(mapping)하여 저장한다. 가상주소를 물리 주소로 주소번역을 시도할 때 MMU(10)은 TLB(12)를 먼저 확인한다.
만약 IP(4)의 요청에 상응하는 가상주소(VA)에 대하여 TLB(12)에 매핑(mapping) 정보가 있다면, MMU 모듈(10)은 메모리 장치(110)에 접근할 필요없이 바로 번역을 처리한다(TLB hit).
그러나 IP(4)의 요청의 가상주소(VA)에 대하여 TLB(12)에 매핑(mapping) 정보가 없는 경우(TLB miss), 페이지 테이블 워크(page table walk; PTW)가 수행된다.
페이지 테이블 워크(PTW)란 TLB 미스일 때(즉, 가상 주소(VA)에 매핑되는 물리주소(PA) 정보가 없을 때), 페이지 테이블(115)에 접근하여 가상 주소(VA)의 페이지 번호(PN)와 프레임 번호(FN)가 존재하는지 여부를 찾는 과정(process)를 의미한다.
페이지 테이블(115)은 메모리 장치(110) 내 데이터들 각각의 가상주소와 물리주소를 매핑한 정보를 저장한다.
캐시(5)는 IP(4)가 리드하고자 하는 명령 또는 데이터의 물리 주소(PA)로 리드를 시도할 때 해당 물리 주소의 명령이나 데이터가 캐쉬(5) 내에 존재하면, 메모리 장치(110)에 접근할 필요 없이, 바로 상기 명령이나 데이터를 IP(4)로 출력한다(Cache hit).
그러나 IP(4)가 리드하고자 하는 명령 또는 데이터의 물리 주소로 리드를 시도하여도, 해당 명령이나 데이터가 캐쉬(5) 내에 존재하지 않을 경우, 메모리 장치(110)의 데이터/명령저장부(117)에 접근하여 해당 명령이나 데이터를 읽어온다(Cache miss).
데이터/명령저장부(117)는 메모리 장치(110) 내 데이터/명령들 각각에 대한 정보를 저장한다.
도 5는 도 4에 도시된 페이지 테이블에 따라 가상주소와 물리주소의 맵핑을 나타내는 개념도이다. 설명의 편의를 위해, TLB 미스 후 MMU(10)가 페이지 테이블 워크를 수행하는 중이라고 하자.
도 5를 참조하면, 소스 이미지를 리드하는 제1 작업세트에 대해 IP는 가상주소 VA(6) 내지 VA(9)의 소스 이미지 영역 리드 요청을 한다. MMU(10)는 상기 제1 작업세트의 가상주소 VA(6) 내지 VA(9)에 대한 물리주소 정보가 TLB(12)에 없는 경우(TLB miss), 페이지 테이블(115)에 액세스하여 페이지 테이블 워크를 한다.
페이지 테이블(115)는 페이지의 가상 주소에 맵핑(mapping)되는 물리 주소 정보, 즉 복수의 페이지 테이블 엔트리들을 포함한다. 메모리 장치(110)는 물리주소 PA(1)에 페이지 테이블(115)에 대한 정보를 저장한다.
상기 예에서 페이지 테이블(115)는 페이지 테이블 엔트리 pte6 내지 pte9에 제1 작업세트의 가상주소 VA(6) 내지 VA(9)에 대한 물리 주소 정보를 MMU(10)로 알려준다. MMU(10)는 상기 페이지 테이블(115)로 수신된 물리 주소 정보에 따라 물리주소 PA(8),PA(11),PA(9) 및 PA(6)에 액세스하고, 상기 물리주소 PA(8),PA(11),PA(9) 및 PA(6)에 저장되어 있는 데이터를 리드하여 상기 소스 이미지 영역 리드 요청을 한 상기 IP로 전송한다.
소스 이미지와 동일한 방식으로,데스티네이션 이미지를 리드하는 제2 작업세트에 대해 IP는 가상주소 VA(12) 내지 VA(15)의 데스티네이션 이미지 영역 리드 요청을 한다. MMU(10)는 상기 제2 작업세트의 가상주소 VA(12) 내지 VA(15)에 대한 물리주소 정보가 TLB(12)에 없는 경우(TLB miss), 페이지 테이블(115)에 액세스하여 페이지 테이블 워크를 한다.
상기 예에서 페이지 테이블(115)는 페이지 테이블 엔트리 pte12 내지 pte15에 제2 작업세트의 가상주소 VA(12) 내지 VA(15)에 대한 물리 주소 정보를 MMU(10)로 알려준다. MMU(10)는 상기 페이지 테이블(115)로 수신된 물리 주소 정보에 따라 리주소 PA(13),PA(5),PA(10) 및 PA(12)에 액세스하고, 상기 물리주소 PA(13),PA(5),PA(10) 및 PA(12)에 저장되어 있는 데이터를 리드하여 상기 데스티네이션 이미지 영역 리드 요청을 한 상기 IP로 전송한다.
도 6은 도 2에 도시된 메모리 관리 유닛의 일실시예에 따른 개념도이다. 설명의 편의를 위해, CPU(3), IP(4), MMU(10), 버스(41), 메모리 장치(110)만 도시한다.
IP(4)는 작업세트 단위로 동작한다. IP(4)는 복수의 작업세트들에 대한 동작을 수행한다. 이때 메모리 장치(110) 내 복수의 작업세트들 각각은 서로 독립적이고, IP(4)는 각 작업세트를 독립적으로 운용한다.
IP(4)는 일례로 GPU(Graphic Processing Unit), 그래픽 엔진(62)일 수 있고, 실시예에 따라 기타 직접 메모리 접근이 가능한 프로세싱 유닛일 수 있다.
IP(4)는 각 작업세트를 처리할 때 데이터 액세스 요청(request)을 MMU 모듈(10)로 출력한다.
일 실시예로, 도 6에 도시된 실시예와 같이 IP(4)가 메모리 장치(110)의 데이터에 대해 리드 동작(read)을 하는 경우를 살펴보자. 도시된 예에서 IP(4)는 A 작업세트 및 B 작업세트B를 처리한다. 예를 들어 A 작업세트는 도 1에 도시된 바와 같이 소스 이미지를 90도 회전하는 경우라고 하고, B 작업세트는 소스 이미지를 180도 회전하는 경우라고 가정하자.
IP(4)의 데이터 액세스 요청 전에, CPU(3)는 메모리(110)에 페이지 테이블(115)을 기입한다. 페이지 테이블은 가상주소와 물리주소가 맵핑된 페이지 테이블 엔트리를 복수 개 포함한다.
CPU(3)는 프리펫치 방향 정보를 설정한다. 도 6에 도시된 실시예에서, CPU(3)는 SFR(203)에 A 작업세트에 상응하는 A 프리펫치 방향 정보 및 B 작업세트에 상응하는 B 프리펫치 방향 정보를 각각 설정한다.
MMU(10')가 IP(4)로부터 데이터 액세스 요청을 수신하면, 액세스 요청에 포함된 각 가상주소에 따라 어느 작업세트인지 확인한다. MMU(10')는 TLB(12)에 상기 가상주소에 대한 물리주소 정보가 있는지 확인하고, 없는 경우(TLB miss) 페이지 테이블 워크(page table walk)를 수행한다.
MMU(10')는 작업세트 별로 할당되는 프리펫치 버퍼를 포함한다. 상기 실시예에서, MMU(10')는 각 작업세트 별로 A 프리펫치 버퍼(201) 및 B 프리펫치 버퍼(202)를 포함할 수 있다. 프리펫치 버퍼(201,202)는 MMU(10')가 접근할 페이지 테이블 엔트리를 펫치 및 프리펫치하여 임시로 저장한다.
예를 들어 A 작업세트인 경우, MMU(10')는 SFR(203)에 설정된 A 프리펫치 방향을 기초로 페이지 테이블(115)로부터 페이지 테이블 엔트리를 펫치(fetch)하여 A 작업세트의 주소번역을 하고, SFR(203)에 설정된 A 프리펫치 방향을 기초로 다음에 접근할 페이지 테이블 엔트리를 프리펫치 버퍼(201)에 저장한다. MMU(10')는 A 작업세트에 대해 펫치된 페이지 테이블 엔트리에 따른 주소 번역 후 프리펫치된 페이지 테이블 엔트리에 따라 주소 번역을 한다. B 작업세트 또한 A 작업세트와 같은 방법으로 SFR(203)에 설정된 B 프리펫치 방향에 따라 페이지 테이블 엔트리를 펫치 및 프리펫치하여 주소번역을 한다. MMU(10')는 A 작업세트 및 B 작업세트 각각의 번역된 물리주소로 액세스하여 메모리(110)로부터 A 작업세트 데이터 및 B 작업세트 데이터를 리드한다. 그 결과 SFR(203)에 접근 방향을 셋팅해 둠으로써 펫치 후 다음에 접근할 프리펫치 방향을 찾는데 필요한 시간을 절약하여 SoC의 성능 및 처리 속도를 향상시킬 수 있다.
설명의 편의를 위해 작업세트들의 리드 동작을 설명하였으나, 다양한 실시예에 따라 라이트 동작, 이레이즈 동작 또한 포함될 수 있다.
도 7은 도 2에 도시된 메모리 관리 유닛의 다른 실시예에 따른 개념도이다. 설명의 편의를 위해, CPU(3), IP(4), 복수의 MMU들(11A,11B), 버스 인터커넥터(43,44) 및 메모리(110)만 도시한다.
도 7을 참조하면, IP(4)는 작업세트 단위로 동작한다. IP(4)는 복수의 작업세트들에 대한 동작을 수행한다. 이때 메모리 장치 내 복수의 작업세트들은 서로 독립적이고, IP(4)는 각 작업세트마다 독립적으로 운용한다. IP(4)는 각 작업세트에 대한 데이터 액세스 요청을 MMU (11A,11B)로 출력한다.
일 실시예로, 도 7에 도시된 실시예와 같이 IP(4)가 메모리 장치(110)의 데이터에 대해 리드 동작(read)을 하는 경우를 살펴보자. 도시된 예에서 IP(4)는 A 작업세트 및 B 작업세트를 처리한다. 예를 들어 A 작업세트는 도 1에 도시된 바와 같이 소스 이미지를 90도 회전하는 경우라고 하고, B 작업세트는 소스 이미지를 180도 회전하는 경우라고 가정하자.
IP(4)의 데이터 액세스 요청 전에, CPU(3)는 메모리(110)에 페이지 테이블(115)을 기입한다. 페이지 테이블은 물리주소에 대한 페이지 테이블 엔트리를 복수 개 포함한다.
CPU(3)는 프리펫치 방향 정보를 설정한다. 도 7에 도시된 실시예에서, CPU(3)는 SFR(203)에 A 작업세트에 상응하는 A 프리펫치 방향 정보 및 B 작업세트에 상응하는 B 프리펫치 방향 정보를 각각 설정한다.
CPU(3)는 작업세트별로 주소번역을 수행할 MMU(11A,11B)를 할당한다. 도 7에 도시된 실시예에서, CPU(3)는 MMU A(11A)와 MMU B(11B)에서 A 작업세트와 B 작업세트 각각의 주소번역을 수행할 수 있도록 각 작업세트의 주소정보를 셋팅한다. 즉, 주소 분배기(Address Distributor)에 각 작업세트에 대한 MMU 할당정보를 셋팅한다. 일 실시예에 따라 주소 분배기는 작업세트의 가상주소의 시작과 끝을 알리는 인디케이터 정보를 포함할 수 있다.
주소분배기는 IP(4)가 데이터 액세스 요청을 하면, 요청에 포함된 작업세트의 가상주소(VA)에 상응하여 해당 작업세트가 할당된 MMU ID를 제1 버스인터커넥터(Bus Interconnect 0,43)로 보낸다. 제1 버스 인터커넥터(43)는 상기 MMU ID에 상응하는 MMU(11A, 11B)를 상기 IP(4)에 연결하여 상기 데이터 액세스 요청을 전송한다.
예를 들어, IP(4)가 A 작업세트에 대한 데이터 액세스 요청을 하는 경우, 주소 분배기는 상기 A 작업세트에 할당된 MMU A의 ID를 제1 버스 인터커넥터(43)로 전송한다. 제1 버스 인터커넥터(43)는 A 채널을 열어 상기 IP(4)의 A 작업세트에 대한 데이터 액세스 요청을 MMU A(11A)로 전송한다.
MMU(11A, 11B)가 IP(4)로부터 데이터 액세스 요청을 수신하면, MMU(11A, 11B)는 TLB(12A,12B)에 상기 가상주소에 대한 물리주소 정보가 있는지 확인하고, 없는 경우(TLB miss) 페이지 테이블 워크를 수행한다.
도 7의 실시예는 도 6의 실시예와 달리 MMU A(11A), MMU B(11B) 각각의 SFR A(303), SFR B(313)는 CPU(3)에 의해 설정된 단일의 프리펫치 방향만이 셋팅된다. 즉, SFR A(303)는 A 프리펫치 방향에 대한 정보만 저장하고 B 프리펫치 방향에 대한 정보는 저장하지 않는다. SFR B(313)는 B 프리펫치 방향에 대한 정보만 저장하고 A 프리펫치 방향에 대한 정보를 저장하지 않는다. 또한, 각 프리펫치 버퍼(302,312)도 자신이 속한 MMU에 할당된 해당 작업세트에 대해 프리펫치될다음 페이지 테이블 엔트리만 저장한다.
예를 들어 A 작업세트인 경우, MMU A(11A)는 SFR A(303)에 설정된 A 프리펫치 방향을 기초로 페이지 테이블(115)로부터 페이지 테이블 엔트리를 펫치(fetch)하여 A 작업세트의 주소번역을 하고, 다음에 접근할 페이지 테이블 엔트리를 프리펫치 버퍼(302)에 저장한다. MMU(11A)는 A 작업세트에 대해 펫치된 페이지 테이블 엔트리에 따른 주소 번역 후 프리펫치된 페이지 테이블 엔트리에 따라 주소 번역을 한다.
B 작업세트 또한 A 작업세트와 같은 방법으로 MMU B(11B)의 SFR B(313)에 설정된 B 프리펫치 방향에 따라 페이지 테이블 엔트리를 펫치 및 프리펫치하여 주소번역을 한다.
MMU(11A,11B)는 A 작업세트 및 B 작업세트 각각의 번역된 물리주소로 액세스하여 메모리(110)로부터 A 작업세트 데이터 및 B 작업세트 데이터를 리드한다.
설명의 편의를 위해 작업세트들의 리드 동작을 설명하였으나, 다양한 실시예에 따라 라이트 동작, 이레이즈 동작 또한 포함될 수 있다.
도 8은 본 발명의 또다른 실시예에 따른 페이지 테이블의 필드 구성을 나타낸 다이어그램이다.
도 8을 참조하면, 페이지 테이블은 복수의 페이지 테이블 엔트리(Page Table Entry #1 내지 #N)를 포함한다. 일례로 페이지 테이블 엔트리는 64 비트(bit)로 구성될 수 있다.
도 8에 도시된 페이지 테이블 엔트리는, 도 6 및 도 7의 페이지 테이블과 달리 제1 상위비트 [31:12]는 가상 페이지 주소에 대한 물리 페이지 주소(Physical Page Number; PPN)이다.하위비트 [11:0]는 최근에 접근한 페이지인지 여부, 액세스 권한, 리드/라이트 가능여부, 페이지가 물리주소상에 로드되어있는지 여부 등을 나타낼 수 있다.
그리고 제2 상위비트 [31:12]는 다음 접근할 페이지 정보(Next VPN)를 나타낸다.
일 실시예로 제2 상위비트 [31:12]는 프리펫치 방향 필드(prefetch direction field)일 수 있다.
즉, MMU(10)가 페이지 테이블 워크 수행시 페이지 테이블 엔트리를 펫치(fetch)하면, 펫치된 페이지 테이블 엔트리에 포함된 제2 상위비트 즉, 프리펫치 방향 필드에 기초하여 다음 프리펫치(prefetch)를 어디서 해야하는지 알 수 있다.
다른 일 실시예로 제2 상위비트 [31:12]는 프리펫치 타겟 넘버 필드(prefetch target number field)일 수 있다.
즉, MMU(10)가 페이지 테이블 워크 수행시 페이지 테이블 엔트리를 펫치(fetch)하면, 펫치된 페이지 테이블 엔트리에 포함된 제2 상위비트 즉, 프리펫치 타겟 넘버 필드에 기초하여 다음 페이지 테이블 엔트리에 액세스할 수 있다.
상기 실시예들에서 프리펫치 방향 필드 또는 프리펫치 타겟 넘버 필드는 CPU(3)에 의해 페이지테이블 내에 기입될 수 있다.
도 9는 본 발명의 다른 실시예에 따른 메모리 관리 유닛의 동작방법을 나타낸 순서도이다.
도 9를 참조하면, 먼저 메인 프로세서(3)는 메모리 장치(110)에 페이지 테이블을 기입(Write)한다(S11). 예를 들면 메인 프로세서(3)는 도 5에 도시된 바와 같이 PA(1)에 페이지 테이블 정보를 라이트하도록 제어한다.
메인 프로세서(3)는 MMU(10)의 할당정보를 설정한다(S12). 즉, IP(4)가 적어도 하나 이상의 작업세트에 대해 동작하는 경우, 적어도 하나 이상의 MMU 중 각 작업세트마다 주소번역을 담당할 MMU의 할당 정보를 설정한다. 일례로, 도 7에 도시한 바와 같이, IP(4)가 두 개의 작업세트로 동작하는 경우, 각 작업세트의 가상주소에 기초하여 주소번역을 수행할 MMU(10)를 할당할 수 있도록 메인 프로세서(3)는 주소 분배기(Address Distributor)에 MMU 할당정보를 설정한다. 실시예에 따라, 주소 분배기는 주소 레지스터(Address Register)를 포함할 수 있다. 이 경우 메인 프로세서(3)는 작업세트의 각 가상주소들에 대한 MMU 맵핑 정보를 상기 주소 레지스터에 설정할 수 있다.
메인 프로세서(3)는 MMU(10)마다 프리펫치 방향(prefetch direction)을 설정한다(S13). 예를 들어 90도 회전에 대한 작업세트에 할당된 MMU인 경우, 메인 프로세서(3)는 MMU(10)가 소스 이미지를 90도 회전하여 리드하기 위해 다음번 접근할 데이터의 가상주소를 미리 예측하는데 필요한 프리펫치 방향을 MMU(10)에 설정한다. 실시예에 따라 상기 프리펫치 방향은 SFR에 셋팅될 수도 있고, 페이지 테이블(115)의 페이지 테이블 엔트리에 프리펫치 방향 필드로 정의될 수도 있으며, 또는 페이지 테이블 엔트리에 프리펫치 타겟 엔트리 넘버 필드로 정의될 수도 있다.
일 실시예에 따라 메인 프로세서(3)는 MMU(10)가 하나인 경우에는 SFR에 작업세트의 개수에 따라 복수의 프리펫지 방향을 상기 MMU 내 하나의 SFR에 설정하여 저장할 수 있다. 다른 실시예에 따라 메인 프로세서(3)는 MMU(10)가 복수 개인 경우에는 각 MMU(10)에 속한 각 SFR마다 할당된 작업세트에 대한 프리펫치 방향을 설정하여 저장할 수 있다.
IP(4)가 적어도 하나 이상의 작업세트로 동작하게 되면, MMU(10)를 통해 상기 작업세트에 해당하는 데이터에 대해 액세스를 요청한다(S14). 예를 들어 리드 요청인 경우, IP(4)는 리드 명령 및 리드할 데이터의 가상주소를 MMU(10)로 전송한다.
MMU(10)는 IP(4)로부터의 상기 액세스 요청에 따라 해당 작업세트의 주소번역을 수행한다(S15). 먼저 TLB(12)에 해당 작업세트의 가상주소에 대한 맵핑정보가 있는지 확인하고, TLB(12)에 해당 작업세트의 가상주소에 대한 맵핑정보가 있으면, 상기 가상주소에 상응하는 메모리 장치(110)의 물리주소로 접근하여 데이터에 액세스한다(S16). 그러나 TLB(12)에 해당 작업세트의 가상주소에 대한 맵핑정보가 없는 경우 페이지테이블(115)에 액세스하여 페이지테이블워크를 수행한다(S17).
MMU(10)는 페이지 테이블(115)에 액세스하여 페이지 테이블 엔트리를 펫치(fetch)하고, 설정된 프리펫치 방향에 따라 다음 페이지 테이블 엔트리를 프리펫치하여 프리펫치 버퍼(Pbuf)에 저장한다(S18). MMU(10)는 펫치된 페이지 테이블 엔트리 및 프리펫치된 다음 페이지 테이블 엔트리에 따라 해당 작업세트의 가상주소를 물리주소로 번역하여, 해당 물리주소의 데이터에 액세스한다(S19).
MMU(10)는 액세스된 상기 데이터를 IP(4)로 전송한다(S20).
도 10은 도 3에 도시된 SoC를 포함하는 전자장치의 일 실시 예를 나타낸다.
도 10을 참조하면, 전자장치(400)은 이동 전화기(cellular phone), 스마트폰(smartphone), 태블릿 PC(tablet personal computer), PDA (personal digital assistant), PMP(portable multimedia player), 또는 무선 통신 장치로 구현될 수 있다.
전자장치(400)는 데이터를 저장하는 메모리 장치(410)를 포함한다.메모리 장치(410)는 불휘발성 메모리와 메모리 컨트롤러를 포함할 수 있다. 메모리 컨트롤러는 SoC(1)의 제어에 따라 불휘발성 메모리의 데이터 액세스 동작, 예컨대 프로그램(program) 동작, 이레이즈(erase) 동작, 또는 리드(read) 동작을 제어할 수 있다.
무선 송수신기(420)는 안테나(ANT)를 통하여 무선 신호를 주거나 받을 수 있다. 예컨대, 무선 송수신기(420)는 안테나(ANT)를 통하여 수신된 무선 신호를 SoC(1)에서 처리될 수 있는 신호로 변경할 수 있다.
따라서, SoC(1)는 무선 송수신기(420)로부터 출력된 신호를 처리하고 처리된 신호를 메모리 장치(410) 또는 디스플레이(440)로 전송할 수 있다. 메모리 컨트롤러는 SoC(1)에 의하여 처리된 신호를 불휘발성 메모리 장치에 프로그램 또는 라이트할 수 있다.
또한, 무선 송수신기(420)는 SoC(1)로부터 출력된 신호를 무선 신호로 변경하고, 변경된 무선 신호를 안테나(ANT)를 통하여 외부 장치로 출력할 수 있다.
입력 장치(430)는 SoC(1)의 동작을 제어하기 위한 제어 신호 또는 SoC(1)에 의하여 처리될 데이터를 입력할 수 있는 장치로서, 터치 패드(touch pad)와 컴퓨터 마우스(computer mouse)와 같은 포인팅 장치(pointing device), 키패드(keypad), 또는 키보드로 구현될 수 있다.
SoC(1)는 메모리 장치(410)로부터 출력된 데이터, 무선 송수신기 (420)로부터 출력된 데이터, 또는 입력 장치(430)로부터 출력된 데이터가 디스플레이(440)를 통하여 디스플레이될 수 있도록 디스플레이(440)의 동작을 제어할 수 있다.
실시 예에 따라, 불휘발성 메모리 장치의 동작을 제어할 수 있는 메모리 컨트롤러는 SoC(1)의 일부로서 구현될 수 있고 또한 SoC(1)와 별도의 칩으로 구현될 수 있다.
도 11은 도 2에 도시된 SoC를 포함하는 전자장치의 또 다른 실시 예를 나타낸다.
도 11에 도시된 전자장치(500)는 이미지 처리 장치, 예컨대 디지털 카메라, 디지털 카메라가 부착된 이동 전화기, 디지털 카메라가 부착된 스마트폰, 또는 디지털 카메라가 부착된 태블릿 PC로 구현될 수 있다.
전자장치(500)은 메모리 장치(520)를 포함한다. 메모리 장치(520)는 불휘발성 메모리 및 불휘발성 메모리의 데이터 처리 동작, 예컨대 프로그램 동작, 이레이즈 동작, 또는 리드 동작을 제어할 수 있는 메모리 컨트롤러를 포함할 수 있다.
전자장치(500)의 이미지 센서(510)는 광학 이미지를 디지털 이미지로 변환하고, 변환된 디지털 이미지는 SoC(1) 또는 메모리 장치(520)로 전송된다. SoC(1)의 제어에 따라, 변환된 디지털 이미지는 디스플레이(330)를 통하여 디스플레이되거나 또는 메모리 장치(520)에 저장될 수 있다.
또한, 메모리 장치(520)에 저장된 데이터는 SoC(1) 또는 메모리 컨트롤러의 제어에 따라 디스플레이(530)를 통하여 디스플레이된다.
실시 예에 따라 불휘발성 메모리의 동작을 제어할 수 있는 메모리 컨트롤러는 SoC(1)의 일부로서 구현될 수 있고 또한 SoC(1)와 별개의 칩으로 구현될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
1: SoC 3 : CPU
5 : 캐시 10 , 10', 11A, 11B : MMU
12 : TLB
4 : 마스터 IP 40, 41 : 시스템 버스
43,44 : 버스 인터커넥터 50 : 시스템 주변 유닛
60 : 멀티미디어 가속 유닛 70 : 연결 유닛
80 : 디스플레이 컨트롤러 90 : 메모리 인터페이스 유닛
110 : 메모리 장치 115 : 페이지 테이블
117 : 데이터/명령부 120 : 입력 장치
130 : 디스플레이 100,400,500 : 전자장치

Claims (20)

  1. 프리펫치 방향(Prefetch Direction)을 설정하는 CPU(Central Processing Unit);
    적어도 하나의 작업세트를 처리하는 IP(Intellectual Properties); 및
    상기 작업세트의 가상주소와 물리주소 간 주소번역시 상기 프리펫치 방향에 기초하여 다음에 접근할 페이지 테이블 엔트리(Next Page Table Entry)를 프리펫치 하는 적어도 하나의 메모리 관리 유닛(Memory Management Unit)를 포함하며,
    복수의 상기 페이지 테이블 엔트리들을 포함하는 페이지 테이블을 포함하는 메모리 장치를 더 포함하고,
    상기 각 페이지 테이블 엔트리는
    물리 페이지 주소, 오프셋 및 설정된 상기 프리펫치 방향을 저장하는 프리펫치 방향 필드를 더 포함하는 SoC(system on chip).
  2. 제1항에 있어서, 상기 SoC는
    복수의 상기 페이지 테이블 엔트리를 포함하는 페이지 테이블을 포함하는 메모리 장치를 더 포함하고,
    상기 메모리 관리 유닛은
    상기 가상주소와 상기 물리주소의 맵핑정보를 저장하는 TLB(Translation Lookaside Buffer);
    설정된 상기 프리펫치 방향을 저장하는 저장부; 및
    상기 다음에 접근할 페이지 테이블 엔트리(Next Page Table Entry)를 저장하는 프리펫치 버퍼(Prefetch Buffer)를 포함하는 SoC.
  3. 제1항에 있어서, 상기 CPU는
    상기 메모리 관리 유닛의 할당정보를 설정하고,
    상기 메모리 관리 유닛은 상기 IP로부터 데이터 요청을 수신하면 상기 할당정보에 따라 상기 작업세트별로 할당되어 상기 주소번역을 하는 SoC.
  4. 제1항에 있어서, 상기 SoC는
    상기 CPU에 의해 설정된 상기 각 작업세트에 할당되는 상기 메모리 관리 유닛의 할당정보를 저장하여, 상기 IP로부터 수신한 요청이 발생하면, 상기 할당정보에 기초하여 상기 요청에 상응하는 상기 메모리 관리 유닛을 할당하는 주소분배기를 더 포함하는 SoC.
  5. 삭제
  6. 제1항에 있어서, 상기 SoC는
    복수의 상기 페이지 테이블 엔트리들을 포함하는 페이지 테이블을 포함하는 메모리 장치를 더 포함하고,
    상기 각 페이지 테이블 엔트리는
    물리 페이지 주소, 오프셋 및 설정된 상기 프리펫치 방향에 따라 상기 다음에 접근할 페이지 테이블 엔트리를 저장하는 프리펫치 타겟 엔트리 넘버 필드를 포함하는 SoC.
  7. 제1항에 있어서, 상기 프리펫치 방향은
    상기 각 작업세트에 따라, 이미지의 데이터에 대한 상기 물리주소가 액세스되는 패턴 정보를 포함하는 SoC.
  8. 프리펫치 방향 정보 및 메모리 관리 유닛 할당 정보를 설정하는 CPU(Central Processing Unit);
    적어도 하나의 작업세트를 처리하는 IP;
    상기 프리펫치 방향 정보를 저장하고, 상기 각 작업세트마다 할당되어 상기 IP의 요청에 따른 상기 각 작업세트의 가상주소를 물리주소로 주소번역하는 적어도 하나의 메모리 관리 유닛(Memory Management Unit)들;
    상기 메모리 관리 유닛 할당 정보를 저장하고, 상기 메모리 관리 유닛 할당 정보에 기초하여 주소번역을 수행할 메모리 관리 유닛을 할당하는 주소 분배기; 및
    페이지 테이블을 포함하여, 데이터에 대한 물리주소 정보 및 데이터를 저장하는 메모리 장치를 포함하고,
    상기 메모리 관리 유닛은
    상기 프리펫치 방향 정보에 따라 상기 페이지 테이블로부터 다음에 접근할 페이지 테이블 엔트리를 프리펫치(Prefetch)하고,
    상기 메모리 관리 유닛은
    상기 가상주소와 상기 물리주소의 맵핑정보를 저장하는 TLB(Translation Lookaside Buffer);
    상기 프리펫치 방향 정보를 저장하는 SFR(Special Function Register); 및
    상기 프리펫치 방향 정보에 따라 상기 페이지 테이블로부터 상기 다음에 접근할 페이지 테이블 엔트리(Next Page Table Entry)를 프리펫치하여 저장하는 프리펫치 버퍼(Prefetch Buffer)를 포함하는 SoC.
  9. 제8항에 있어서, 상기 페이지 테이블 엔트리는
    물리 페이지 주소, 오프셋 및 설정된 상기 프리펫치 방향을 저장하는 프리펫치 방향 필드를 포함하고,
    상기 메모리 관리 유닛은
    상기 프리펫치 방향 필드의 값에 따라 상기 다음에 접근할 페이지 테이블 엔트리를 프리펫치하는 SoC.
  10. 제8항에 있어서, 상기 페이지 테이블 엔트리는
    물리 페이지 번호, 오프셋 및 프리펫치 타겟 엔트리 넘버 필드를 포함하고,
    상기 메모리 관리 유닛은
    상기 프리펫치 타겟 엔트리 넘버 필드의 값에 상응하는 상기 페이지 테이블 엔트리를 프리펫치하는 SoC.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020130025727A 2013-03-11 2013-03-11 시스템 온 칩 및 그 동작방법 KR102069273B1 (ko)

Priority Applications (8)

Application Number Priority Date Filing Date Title
KR1020130025727A KR102069273B1 (ko) 2013-03-11 2013-03-11 시스템 온 칩 및 그 동작방법
AU2014201012A AU2014201012A1 (en) 2013-03-11 2014-02-26 System-on-chip and method of operating the same
TW103107120A TWI621945B (zh) 2013-03-11 2014-03-04 系統晶片
DE102014103056.7A DE102014103056A1 (de) 2013-03-11 2014-03-07 Ein-Chip-System und Verfahren des Betreibens desselben
NL2012387A NL2012387B1 (en) 2013-03-11 2014-03-10 System-on-chip and method of operating the same
JP2014047411A JP6370065B2 (ja) 2013-03-11 2014-03-11 システムオンチップ及びその動作方法
US14/203,799 US9880940B2 (en) 2013-03-11 2014-03-11 System-on-chip and method of operating the same
CN201410088744.3A CN104050089B (zh) 2013-03-11 2014-03-11 片上系统及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130025727A KR102069273B1 (ko) 2013-03-11 2013-03-11 시스템 온 칩 및 그 동작방법

Publications (2)

Publication Number Publication Date
KR20140111499A KR20140111499A (ko) 2014-09-19
KR102069273B1 true KR102069273B1 (ko) 2020-01-22

Family

ID=51385722

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130025727A KR102069273B1 (ko) 2013-03-11 2013-03-11 시스템 온 칩 및 그 동작방법

Country Status (8)

Country Link
US (1) US9880940B2 (ko)
JP (1) JP6370065B2 (ko)
KR (1) KR102069273B1 (ko)
CN (1) CN104050089B (ko)
AU (1) AU2014201012A1 (ko)
DE (1) DE102014103056A1 (ko)
NL (1) NL2012387B1 (ko)
TW (1) TWI621945B (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9741150B2 (en) 2013-07-25 2017-08-22 Duelight Llc Systems and methods for displaying representative images
US9542332B2 (en) * 2014-11-13 2017-01-10 Via Alliance Semiconductor Co., Ltd. System and method for performing hardware prefetch tablewalks having lowest tablewalk priority
US9495303B2 (en) * 2015-02-03 2016-11-15 Intel Corporation Fine grained address remapping for virtualization
US9792215B2 (en) 2015-03-28 2017-10-17 Qualcomm Incorporated Command-driven translation pre-fetch for memory management units
KR102491622B1 (ko) * 2015-11-17 2023-01-25 삼성전자주식회사 가상 어드레스 생성기의 동작 방법과 이를 포함하는 시스템의 동작 방법
US10402332B2 (en) * 2016-05-24 2019-09-03 Xilinx, Inc. Memory pre-fetch for virtual memory
US10303621B1 (en) * 2017-03-07 2019-05-28 Amazon Technologies, Inc. Data protection through address modification
US11188472B2 (en) 2019-02-13 2021-11-30 Google Llc Caching streams of memory requests
CN110046106B (zh) * 2019-03-29 2021-06-29 海光信息技术股份有限公司 一种地址转换方法、地址转换模块及系统
US11327757B2 (en) * 2020-05-04 2022-05-10 International Business Machines Corporation Processor providing intelligent management of values buffered in overlaid architected and non-architected register files
CN111800625B (zh) * 2020-07-06 2021-12-03 安徽文香科技有限公司 一种hdmi端口摄像头连接检测方法、装置及设备
CN112000592B (zh) * 2020-07-27 2023-08-22 瑞芯微电子股份有限公司 一种模块间数据交互的方法和装置
CN113722246B (zh) * 2021-11-02 2022-02-08 超验信息科技(长沙)有限公司 处理器中物理内存保护机制的实现方法及装置
CN114238167B (zh) * 2021-12-14 2022-09-09 海光信息技术股份有限公司 信息预取方法、处理器、电子设备
CN114281720B (zh) * 2021-12-14 2022-09-02 海光信息技术股份有限公司 处理器、用于处理器的地址翻译方法、电子设备
CN117349204B (zh) * 2023-12-04 2024-02-09 中科亿海微电子科技(苏州)有限公司 一种用于提高axi总线读效率的装置及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000035918A (ja) 1998-07-16 2000-02-02 Fujitsu Ltd キャッシュメモリ装置
US20040049640A1 (en) 2002-09-09 2004-03-11 Kimming So System and method for directional prefetching
US20050198439A1 (en) * 2004-03-04 2005-09-08 Fredy Lange Cache memory prefetcher

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06149680A (ja) * 1992-11-12 1994-05-31 Nec Corp アドレス変換装置
EP0752644A3 (en) 1995-07-07 2001-08-22 Sun Microsystems, Inc. Memory management unit incorporating prefetch control
US6628294B1 (en) * 1999-12-31 2003-09-30 Intel Corporation Prefetching of virtual-to-physical address translation for display data
KR100389867B1 (ko) * 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
KR20040038548A (ko) 2002-11-01 2004-05-08 삼성전자주식회사 높은 히트율을 갖는 캐쉬 메모리 시스템 및 그의 데이터캐슁 방법
US7519791B2 (en) * 2004-02-06 2009-04-14 Intel Corporation Address conversion technique in a context switching environment
US7277991B2 (en) * 2004-04-12 2007-10-02 International Business Machines Corporation Method, system, and program for prefetching data into cache
US20060136696A1 (en) 2004-12-16 2006-06-22 Grayson Brian C Method and apparatus for address translation
US7886126B2 (en) * 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US20060168432A1 (en) 2005-01-24 2006-07-27 Paul Caprioli Branch prediction accuracy in a processor that supports speculative execution
KR100699656B1 (ko) 2005-03-15 2007-03-23 미쓰비시덴키 가부시키가이샤 제어 회로 및 제어 방법
US7447869B2 (en) * 2005-04-07 2008-11-04 Ati Technologies, Inc. Method and apparatus for fragment processing in a virtual memory system
US7395406B2 (en) 2005-05-12 2008-07-01 International Business Machines Corporation System and method of large page handling in a virtual memory system
US7793067B2 (en) 2005-08-12 2010-09-07 Globalfoundries Inc. Translation data prefetch in an IOMMU
US8024547B2 (en) * 2007-05-01 2011-09-20 Vivante Corporation Virtual memory translation with pre-fetch prediction
US7584394B2 (en) 2007-07-18 2009-09-01 International Business Machines Corporation System and method for pseudo-random test pattern memory allocation for processor design verification and validation
KR100981884B1 (ko) 2008-01-08 2010-09-14 한국과학기술원 컴퓨터 저장장치에서의 프리페칭 데이터 관리 방법
US8161264B2 (en) * 2008-02-01 2012-04-17 International Business Machines Corporation Techniques for data prefetching using indirect addressing with offset
KR20100005539A (ko) 2008-07-07 2010-01-15 삼성전자주식회사 캐시 메모리 시스템 및 캐시의 프리페칭 방법
KR101598828B1 (ko) * 2008-12-22 2016-03-02 삼성전자주식회사 메모리 장치의 페이지 오픈 시간 조절 방법 및 이를 이용한메모리 시스템
US8161246B2 (en) 2009-03-30 2012-04-17 Via Technologies, Inc. Prefetching of next physically sequential cache line after cache line that includes loaded page table entry
US8397049B2 (en) * 2009-07-13 2013-03-12 Apple Inc. TLB prefetching
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 삼성전자주식회사 메모리 시스템
KR101299767B1 (ko) 2011-09-02 2013-08-23 주식회사 포스코 원료 투입용 벨트 컨베이어
US9251083B2 (en) * 2013-03-11 2016-02-02 Via Technologies, Inc. Communicating prefetchers in a microprocessor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000035918A (ja) 1998-07-16 2000-02-02 Fujitsu Ltd キャッシュメモリ装置
US20040049640A1 (en) 2002-09-09 2004-03-11 Kimming So System and method for directional prefetching
US20050198439A1 (en) * 2004-03-04 2005-09-08 Fredy Lange Cache memory prefetcher

Also Published As

Publication number Publication date
NL2012387B1 (en) 2018-05-23
CN104050089B (zh) 2019-06-07
TWI621945B (zh) 2018-04-21
KR20140111499A (ko) 2014-09-19
JP2014175017A (ja) 2014-09-22
TW201439764A (zh) 2014-10-16
NL2012387A (en) 2014-09-15
JP6370065B2 (ja) 2018-08-08
CN104050089A (zh) 2014-09-17
US20140258674A1 (en) 2014-09-11
DE102014103056A1 (de) 2014-09-11
US9880940B2 (en) 2018-01-30
AU2014201012A1 (en) 2014-09-25

Similar Documents

Publication Publication Date Title
KR102069273B1 (ko) 시스템 온 칩 및 그 동작방법
US9348764B2 (en) System on chip including memory management unit and memory address translation method thereof
KR101667772B1 (ko) 프리페칭을 갖는 변환 색인 버퍼
US8405668B2 (en) Streaming translation in display pipe
KR101708142B1 (ko) 속성 필드의 멀티-코어 페이지 테이블 세트
US11216385B2 (en) Application processor, system-on chip and method of operating memory management unit
US8694755B1 (en) Virtual memory management for real-time embedded devices
US8898429B2 (en) Application processor and a computing system having the same
KR20150031402A (ko) 시스템 온 칩 및 그것의 주소 변환 방법
US9037831B2 (en) Memory management unit and apparatuses having same
US8700865B1 (en) Compressed data access system and method
US10228991B2 (en) Providing hardware-based translation lookaside buffer (TLB) conflict resolution in processor-based systems
KR102491622B1 (ko) 가상 어드레스 생성기의 동작 방법과 이를 포함하는 시스템의 동작 방법

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