KR20160018204A - 전자 장치, 온 칩 메모리 장치 및 온 칩 메모리의 운영 방법 - Google Patents
전자 장치, 온 칩 메모리 장치 및 온 칩 메모리의 운영 방법 Download PDFInfo
- Publication number
- KR20160018204A KR20160018204A KR1020140102481A KR20140102481A KR20160018204A KR 20160018204 A KR20160018204 A KR 20160018204A KR 1020140102481 A KR1020140102481 A KR 1020140102481A KR 20140102481 A KR20140102481 A KR 20140102481A KR 20160018204 A KR20160018204 A KR 20160018204A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- area
- allocation
- storage area
- chip
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
전자 장치, 온 칩 메모리 장치 및 온 칩 메모리의 운영 방법이 개시된다. 온 칩 메모리 장치는 복수의 설계 자산(IP : Intellectual Property), 및 저장 영역을 포함하고, 복수의 IP 중 적어도 하나의 IP의 메모리 트랙픽을 모니터닝하고, 모니터닝 결과를 기초로 저장 영역의 사용을 제어하는 메모리 모듈을 포함한다. 본 발명에 따른 온 칩 메모리 장치, 전자 장치 및 온 칩 메모리의 운영 방법에 의하면, AP-CP One Chip 구조에서, 안정적인 통신을 보장할 수 있고, CP의 Real-Time 처리가 필요한 코드에 대해 Memory Latency를 보장할 수 있으며, AP-CP One Chip 구조에서, 통신 Bandwidth를 향상시킬 수 있다.
Description
본 발명은 전자 장치, 온 칩 메모리 장치 및 온 칩 메모리의 운영 방법에 관한 것으로, 보다 상세하게는, 애플리케이션 프로세서, 통신 프로세서 및 메모리가 하나의 칩 상에 함께 탑재된 칩 메모리 장치 및 이의 운영 방법에 관한 것이다.
모바일 환경에서, 스마트폰이나 태블릿 기기 등의 모바일 기기에 애플리케이션 프로세서(AP: Application Processor)가 널리 사용되고 있다. 모바일 기기의 고성능화, 기능의 다양화, 크기의 축소화에 대한 경쟁이 치열해지고 있다. 그러한 추세 중 한 가지로써, 기존에 별도의 칩(Chip)으로 만들어 AP에 연결했던 통신 프로세서(CP: Communication Processor)를 AP 내에 탑재하여 크기, 단가 등을 낮추고자 하는 노력이 지속되고 있다.
도 1 및 도 2은 AP-CP 연결 구조를 도시한 도면이다.
도 1 및 도 2를 참조하면, AP-CP One Chip (200)에서는 이전의 AP(10), CP(20) 개별의 Chip(100)을 사용할 때보다, 메모리 대기 시간(Memory Latency)이 증가하여 적시성(Real-Time) 보장에 어려움을 겪고 있다. 먼저, AP-CP One Chip (200)에서는 CP 자체의 메모리 대기 시간이 증가하였다. CP가 처리한 통신 데이터를 CP영역에서 AP영역에 넘겨주는 작업은 DMA(Direct memory access)가 하기 때문에 그 경로(Path)의 대기 시간이 경로(101)에서 경로(201)으로 줄어든 것은 성능에 영향을 주지 않는다. 그러나, CP CPU(Central Processing Unit)의 DRAM 접근 대기 시간(Access Latency)이 경로(102)에서 경로(201)으로 늘어난 것은 통신 데이터 처리 속도에 영향을 주게 된다. 특히, CP의 CPU가 하드웨어(H/W)를 제어할 때, 적시성 처리가 필요하기 때문에, 대기 시간에 제약 조건이 생기게 되고, 그 조건보다 대기 시간이 길어질 경우에는, 통신을 수행할 수 없게 된다.
또한, AP의 M/M 트래픽(Traffic)이 발생하게 되면, DRAM 대기 시간이 길어지고, CP의 메모리 대기 시간도 함께 길어지게 된다. 현재, CP의 메모리 대기 시간이 평균 200ns, 최고 400ns 인 환경에서 다운 링크(Downlink) 300Mbps 수준이다. 그런데, AP의 M/M 트래픽이 발생하게 되면, 경로(201)의 메모리 대기 시간이 평균 500ns, 최대 1000ns 이상으로 증가할 것으로 예상되어, 다운링크 300Mbps 달성에 어려움이 있다.
CP에서는 메모리 대기 시간을 줄이기 위해, 전통적으로 TCM(Tightly Coupled Memory)과 캐시(Cache)를 사용해왔다. CPU와 DSP(Digital Signal Processor)가 각각의 프로세서(Processor) 내부에 레벨 1 캐시(Level 1 Cache)와 TCM을 탑재하고 있고, CPU는 별도의 설계 자산(IP: Intellectual Property)으로 레벨 2 캐시를 사용하여 대기 시간을 줄였다.
AP에서는 전통적으로 특정 IP의 트랜잭션(Transaction)의 대기 시간 QoS를 보장하기 위해, 우선 순위 기반의 QoS를 버스(Bus), DRAM 제어부(Controller)에 적용하여 사용해왔다. 이 방식을 사용하게 되면, 우선 순위가 낮은 IP의 트랜잭션(Transaction)은 대기 시간이 다소 길어지게 되고, DRAM 전체적으로는 스루풋(Throughput)이 줄어들게 된다. AP에서 디스플레이(Display) IP 처럼 적시성(Real-Time) 처리가 필요한 트래픽(Traffic)에 대해 우선순위를 높여서 대기 시간을 보장하였다.
캐시는 전통적으로 프로세서에 가까이 위치하여 히트 레이트(Hit Rate) 확률에 따라 평균 메모리 접근 시간(Memory Access Time)을 줄여 주는 기능을 한다. 최근에 주목 받고 있는 시스템 캐시(System Cache)는 시스템 내 모든 IP들이 공유하여 사용하는 자원으로써, 많은 연구가 진행되고 있다.
본 발명이 이루고자 하는 기술적 과제는, 애플리케이션 프로세서, 통신 프로세서 및 메모리가 하나의 칩 상에 함께 탑재된 온 칩 메모리 장치, 전자 장치 및 온 칩 메모리의 운영 방법을 제공하는 데 있다.
본 발명이 이루고자 하는 다른 기술적 과제는, 설계 자산(IP: Intellectual Property)의 IP 적시성(Real-Time) 처리를 보장하기 위한 온 칩 메모리 장치, 전자 장치 및 온 칩 메모리의 운영 방법을 제공하는 데 있다.
본 발명이 이루고자 하는 또 다른 기술적 과제는, 적시성 IP(Real-Time IP)에 대해, DRAM 등의 프로세서 칩 외부의 메모리 Latency를 숨김(Hiding)으로써, 고정된 메모리 대기 시간을 제공하여, 통신과 디스플레이(Display)에 안정성을 제공할 수 있는 온 칩 메모리 장치, 전자 장치 및 온 칩 메모리의 운영 방법을 제공하는 데 있다.
상기의 기술적 과제를 해결하기 위한, 본 발명에 따른 온 칩 메모리 장치는, 복수의 설계 자산(IP: Intellectual Property), 및 저장 영역을 포함하고, 상기 복수의 IP 중 적어도 하나의 IP의 메모리 트래픽을 모니터링하고, 상기 모니터링 결과를 기초로 저장 영역의 사용을 제어하는 메모리 모듈을 포함할 수 있다.
상기의 다른 기술적 과제를 해결하기 위한, 본 발명에 따른 온 칩 메모리 장치의 운영 방법은, 복수의 설계 자산(IP: Intellectual Property)을 포함하는 온 칩 메모리 장치의 운영 방법에 있어서, 상기 복수의 IP 중 적어도 하나의 IP의 메모리 트래픽을 모니터링하는 단계, 및 상기 모니터링 결과를 기초로 상기 온 칩 메모리 장치에 포함된 저장 영역의 사용을 제어하는 단계를 포함할 수 있다.
상기의 또 다른 기술적 과제를 해결하기 위한, 본 발명에 따른 전자 장치는 본 발명에 따른 온 칩 메모리 장치 및 메모리를 포함할 수 있다. 여기서 상기 메모리는 DRAM일 수 있다. 상기 온 칩 메모리 장치는 캐시 또는 버퍼를 포함할 수 있다.
본 발명에 따른 온 칩 메모리 장치, 전자 장치 및 온 칩 메모리의 운영 방법에 의하면, AP-CP One Chip 구조에서, CP의 Real-Time 처리가 필요한 코드에 대해 Memory Latency를 보장함으로써, 안정적인 통신을 보장할 수 있고, 또한, CP의 Memory Latency를 줄임으로써, 같은 시간 동안 처리할 수 있는 데이터 량이 증가하여, 통신 Bandwidth를 향상시킬 수 있다. AP에 대해서는, 전자 장치의 화면 크기가 커져도, 끊김 없는 디스플레이를 지원할 수 있다. 또한, DRAM Latency 모니터링을 통해, IP 별로 동적으로 QoS를 지원할 수 있고, 여러 Real-Time IP에 대해 On-Chip Memory를 활용하여, 동작에 필요한 Latency 조건을 만족시킬 수 있다.
도 1은 종래의 AP-CP 연결 구조의 일실시예를 도시한 도면이다.
도 2은 종래의 AP-CP 연결 구조의 다른 실시예를 도시한 도면이다.
도 3은 본 발명에 따른 전자 장치의 일실시예의 구성을 도시한 블록도이다.
도 4은 본 발명에 따른 전자 장치의 다른 실시예의 구성을 도시한 블록도이다.
도 5는 본 발명에 따른 메모리 모듈의 일실시예의 구성을 도시한 블록도이다.
도 6은 본 발명에 따른 할당 테이블(Allocation Table)의 일실시예를 도시한 도면이다.
도 7은 본 발명에 따른 할당 테이블(Allocation Table)의 다른 실시예를 도시한 도면이다.
도 8a는 메모리의 전용 영역에 대한 사용의 일실시예를 도시한 도면이다.
도 8b는 메모리의 일반 영역에 대한 사용의 일실시예를 도시한 도면이다.
도 9는 본 발명에 따른 오퍼레이션 테이블(Operation Table)의 일실시예를 도시한 도면이다.
도 10은 오퍼레이션 테이블(Operation Table)의 사용의 일예를 도시한 도면이다.
도 11은 오퍼레이션 테이블(Operation Table)의 사용의 다른 예를 도시한 도면이다.
도 12는 프리로드를 설명하기 위한 도면이다.
도 13은 시나리오에 따라 프리로드를 수행할 데이터를 분류한 일실시예를 도시한 도면이다.
도 14는 본 발명에 따른 메모리 운영 방법의 일실시예의 수행과정을 설명하기 위한 도면이다.
도 15는 Display IP를 위한 메모리 묘듈의 역할을 설명하기 위한 도면이다. 도 15는 Display IP에 대한 캐시 활용을 도시한다.
도 16는 본 발명에 따른 태그 메모리의 일실시예를 도시한 도면이다.
도 17은 본 발명에 따른 메모리 운영 방법의 일실시예의 수행과정을 도시한 순서도이다.
도 18은 본 발명에 따른 메모리 운영 방법의 다른 실시예의 수행과정을 도시한 순서도이다.
도 19는 해상도 변화에 따른 디스플레이의 Real-Time 조건을 나타나낸 테이블을 도시한 도면이다.
도 20은 통신 대역폭에 따른 영상의 다운로드 시간 및 화질을 도시한 도면이다.
도 2은 종래의 AP-CP 연결 구조의 다른 실시예를 도시한 도면이다.
도 3은 본 발명에 따른 전자 장치의 일실시예의 구성을 도시한 블록도이다.
도 4은 본 발명에 따른 전자 장치의 다른 실시예의 구성을 도시한 블록도이다.
도 5는 본 발명에 따른 메모리 모듈의 일실시예의 구성을 도시한 블록도이다.
도 6은 본 발명에 따른 할당 테이블(Allocation Table)의 일실시예를 도시한 도면이다.
도 7은 본 발명에 따른 할당 테이블(Allocation Table)의 다른 실시예를 도시한 도면이다.
도 8a는 메모리의 전용 영역에 대한 사용의 일실시예를 도시한 도면이다.
도 8b는 메모리의 일반 영역에 대한 사용의 일실시예를 도시한 도면이다.
도 9는 본 발명에 따른 오퍼레이션 테이블(Operation Table)의 일실시예를 도시한 도면이다.
도 10은 오퍼레이션 테이블(Operation Table)의 사용의 일예를 도시한 도면이다.
도 11은 오퍼레이션 테이블(Operation Table)의 사용의 다른 예를 도시한 도면이다.
도 12는 프리로드를 설명하기 위한 도면이다.
도 13은 시나리오에 따라 프리로드를 수행할 데이터를 분류한 일실시예를 도시한 도면이다.
도 14는 본 발명에 따른 메모리 운영 방법의 일실시예의 수행과정을 설명하기 위한 도면이다.
도 15는 Display IP를 위한 메모리 묘듈의 역할을 설명하기 위한 도면이다. 도 15는 Display IP에 대한 캐시 활용을 도시한다.
도 16는 본 발명에 따른 태그 메모리의 일실시예를 도시한 도면이다.
도 17은 본 발명에 따른 메모리 운영 방법의 일실시예의 수행과정을 도시한 순서도이다.
도 18은 본 발명에 따른 메모리 운영 방법의 다른 실시예의 수행과정을 도시한 순서도이다.
도 19는 해상도 변화에 따른 디스플레이의 Real-Time 조건을 나타나낸 테이블을 도시한 도면이다.
도 20은 통신 대역폭에 따른 영상의 다운로드 시간 및 화질을 도시한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예들을 상세히 설명한다. 이 때, 첨부된 도면에서 동일한 구성 요소는 가능한 동일한 부호로 나타내고 있음에 유의해야 한다. 또한 본 발명의 요지를 흐리게 할 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략할 것이다.
본 명세서와 도면에 개시된 본 발명의 실시예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
도 3은 본 발명에 따른 전자 장치의 일실시예의 구성을 도시한 블록도이다.
도 3을 참조하면, 본 발명에 따른 전자 장치(1)는 메모리 시스템(300) 및 메모리(3)를 포함한다. 전자 장치(1)은 이동국, 고정 또는 이동 가입자국, 페이저, 셀룰러 전화, 개인 휴대 단말기(PDA), 스마트폰, 랩탑, 넷북, 퍼스널 컴퓨터 또는 무선 센서등을 포함할 수 있다. 메모리 시스템(300)은 하나의 칩으로 제조될 수 있다. 즉 메모리 시스템(300)은 SoC(System on Chip)으로 제조될 수 있다. 메모리(3)는 DRAM 메모리를 포함할 수 있다.
메모리 시스템(300)은 AP(Application Processor) 모듈(310), CP(Communication Processor) 모듈(320), 메모리 모듈(330) 및 메모리 제어부(340)를 포함할 수 있다.
AP 모듈(310)은 CPU(Central Processing Unit), ISP(Image Signal Processor), GPU(Graphic Processing Unit), H/W Codec IP(Intellectual Property), Display IP, DSP(Digital Signal Processing)를 포함할 수 있다.
CP 모듈(320)은 CPU, DSP, DMA(Direct Memory Access), MAC IP 등으로 구성될 수 있다.
AP 모듈(310)과 CP 모듈(310)은 메인 버스(Main Bus)를 통해 메모리 모듈(330)과 연결될 수 있다.
메모리 모듈(330)은 버퍼(Buffer)나 캐시(Cache) 형태로 구현될 수 있으며, 메인 버스에 연결되어, AP 모듈(310) 및 CP 모듈(320)에 포함된 IP들이 메인 버스를 통해 메모리 모듈(330)을 이용할 수 있다. 메모리 모듈(330)은 온 칩 메모리(On Chip Memory)일 수 있다.
메모리 제어부(340)는 메모리 모듈(330)과 연결되고, 메모리(3)과 인터페이스를 통해 연결될 수 있다. 메모리 제어부(340)는 메모리(3)를 액세스하여 메모리(3)로부터 데이터를 읽어 오거나 메모리(3)에 데이터를 저장한다. 메모리 제어부(340)는 메모리(3)로부터 읽은 데이터를 AP 모듈(310), CP 모듈(320) 및 메모리 모듈(330) 중 적어도 하나로 전달할 수 있고, AP 모듈(310), CP 모듈(320) 및 메모리 모듈(330)로부터 수신된 데이터를 메모리(3)에 저장한다.
메모리 제어부(340)는 AP 모듈(310), CP 모듈(320) 및 메모리 모듈(330) 중 적어도 하나로부터 메모리에 대한 요청(request)를 수신하고, 수신한 요청을 메모리(3)으로 전달한다. 여기서 상기 요청은 메모리에 저장된 데이터를 요구하는 것일 수 있고, 데이터를 메모리에 저장할 것을 요구하는 것일 수 있다. 이하에서 메모리에 대한 요청은 메모리 요청이라고 명명한다.
도 4은 본 발명에 따른 전자 장치의 다른 실시예의 구성을 도시한 블록도이다.
도 4를 참조하면, 일부 실시예로, 전자 장치(1)는 메모리 시스템(300) 대신 메모리 시스템(400)를 포함할 수 있다. 메모리 시스템(400)의 메모리 제어부(340)는 메인 버스에 연결된다. 즉 메모리 모듈(330) 및 메모리 제어부(340)는 독립적으로 각각 메인 버스에 연결된다. 이하, 메모리 시스템(400)의 나머지 구성 요소는 메모리 시스템(300)의 구성 요소와 각각 대응하며, 이에 상세한 설명을 생략한다.
도 5는 본 발명에 따른 메모리 모듈의 일실시예의 구성을 도시한 블록도이다.
도 5를 참조하면, 메모리 모듈(330)은 메모리(510), 주소 필터(Address Filter)(520) 및 제어부(530)를 포함할 수 있다.
메모리(510)는 데이터를 저장하며, 버퍼(Buffer) 또는 캐시(Cache)의 형태로 구현될 수 있다.
주소 필터(Address Filter)(520)는 메모리(510)를 사용할 주소(Address) 구간을 설정하고, 설정된 주소 구간 정보에 따라 AP 모듈(310) 또는 CP 모듈(320)로부터 수신되는 메모리 요청을 필터링할 수 있다.
주소 필터(520)는 주소 구간의 시작 주소(Start Address), 오프셋(Offset)을 사전에 정의하고, 상기 시작 주소 및 상기 오프셋을 이용하여 AP 모듈(310) 또는 CP 모듈(320)로부터 수신되는 메모리 요청을 필터링할 수 있다. 주소 필터(520)는 상기 시작 주소 및 상기 오프셋을 실행 시간(Run-Time) 동안 변경할 수 있다. 즉 상기 시작 주소 및 상기 오프셋 실행 시간 변경이 가능하다.
일부 실시예로, 상기 오프셋 대신에 주소 구간의 마지막 주소(End Address)가 설정될 수 있다.
주소 구간의 시작 주소 및 마지막 주소는 상기 주소 구간에 저장된 데이터가 메모리(3)에 저장된 구간의 시작 주소 및 마지막 주소와 대응할 수 있다.
제어부(530)는 할당 테이블(Allocation Table)(531), 오퍼레이션 테이블(Operation table)(533), 엔진(535) 및 트래픽 감시부(Traffic Monitor)(537)를 포함할 수 있다.
제어부(530)는 사전에 정의된 정보를 기초로 메모리(510)를 제어한다. 여기서 상기 사전에 정의된 정보는 적시성(Real-Time) IP의 프리로드(Preload) 영역, 대기 시간 경계값(Latency Threshold), 및 경계(Threshold) 상황에서의 메모리(510)의 사용 중 적어도 하나를 지시하는 정보를 포함할 수 있다. 상기 사전에 정의된 정보는 메모리 시스템(300, 400)의 디자인 시점(Design Time)에 정의된 것일 수 있다.
제어부(530)는 상기 사전에 정의된 정보를 기초로 오퍼레이션 테이블(533)을 셋팅(Setting)할 수 있다. 실행 시점(Run-Time)에 제어부(530)는 메모리(3)의 트래픽(Traffic)을 모니터링하여 메모리(3)의 사용 상황을 파악하고, 오퍼레이션 테이블(533)에 저장된 정보를 기초로 IP에 대해 메모리(510)의 영역을 할당 및 프리페치(Prefetch)를 제어한다.
할당 테이블(531)은 마스터(Master) IP들의 그룹(Group)별 온 칩 메모리 크기(On-Chip Memory Allocation Size)를 지시하는 정보 및 사용 상태(Usage Status)를 지시하는 정보 중 적어도 하나를 저장할 수 있다. 여기서 마스터 IP는 적시성 IP일 수 있다.
도 6은 본 발명에 따른 할당 테이블(Allocation Table)의 일실시예를 도시한 도면이다. 도 6은 메모리(510)를 버퍼로 구현했을 때의 할당 테이블의 구성을 나타낸다.
도 6을 참조하면, 할당 테이블(600)의 각 행은 GID(group ID) 필드, 할당 크기(Allocation Size) 필드 및 사용(Usage) 필드 중 적어도 하나를 포함할 수 있다. IP Group 별로 사용할 온 칩 메모리 크기(On-Chip Memory Size)를 정의하는 정보가 할당 테이블(600)의 각 행에 저장될 수 있다. 할당 테이블(600)의 각 행에는 해당 IP에 적절한 크기의 메모리(510)의 영역을 할당할 것을 지시하는 정보가 저장될 수 있다. 여기서 필드는 요소(Element) 및 열 등으로 지칭될 수 있다.
GIO 필드는 해당 그룹(Group)을 식별하기 위한 정보를 저장한다.
할당 크기 필드는 메모리(510)의 영역 중 해당 그룹에 할당할 메모리 영역을 지시하는 정보를 저장한다. 상기 정보 버퍼로 할당할 할당 크기(Allocation Size)를 지시할 수 있다.
사용 필드는 할당된 메모 영역의 사용 상태를 지시하는 정보를 포함한다. 상기 정보는 실제 사용 크기를 지시할 수 있다.
도 7은 본 발명에 따른 할당 테이블(Allocation Table)의 다른 실시예를 도시한 도면이다. 도 7은 메모리(510)를 캐시로 구현했을 때의 할당 테이블(Allocation Table)의 구성을 나타낸다.
도 7을 참조하면, 할당 테이블(700)의 각 행은 GID(group ID) 필드, 우선권(Priority) 필드, 할당 크기(Allocation size) 필드, 전용(Dedicated) 필드, 및 사용(Usage) 필드 중 적어도 하나를 포함할 수 있다. IP Group 별로 사용할 온 칩 메모리 크기(On-Chip Memory Size)를 정의하는 정보가 할당 테이블(700)의 각 행에 저장될 수 있다. 할당 테이블(700)의 각 행에는 해당 IP에 적절한 크기의 메모리(510)의 영역을 할당할 것을 지시하는 정보가 저장될 수 있다. 여기서 필드는 요소(Element) 및 열 등으로 지칭될 수 있다.
메모리(510)를 캐시(Cache)로 구현하게 될 경우에는, 다른 IP가 지나치게 많이 사용하여 적시성 IP에 일정 공간을 보장하지 못할 수 있다. 그 점을 막기 위해, 전용(Dedicated) 영역을 설정하고, 캐시 교체(Cache Replacement)정책에 활용하기 위해, 우선권(Priority)를 두어서, 우선적인 보장이 필요한 적시성 IP의 순위를 높이는데 사용할 수 있다. 할당 테이블(700)은 이러한 정보를 기록하는 데 사용할 수 있다.
GIO 필드는 해당 그룹(Group)을 식별하기 위한 정보를 저장한다.
우선권 필드는 해당 그룹의 우선 순위를 지시하는 정보를 저장한다.
할당 크기 필드는 메모리(510)의 영역 중 해당 그룹에 할당할 메모리 영역을 지시하는 정보를 저장한다. 상기 정보 버퍼로 할당할 할당 크기(Allocation Size)를 지시할 수 있다.
전용 필드는 해당 그룹의 전용 영역을 지시하는 정보를 저장한다. 앞서 언급한 대로, 전용 영역은 IP가 메모리(510)를 사용할 때, 최소한으로 유지해야 할 전용 공간으로 활용한다. 엔진(535)이 프리로드(Preload)하여 사용할 데이터도 이 전용 영역에 할당한다. 전용(Dedicated)되지 않은 일반(Normal) 영역은 여러 IP들이 공용으로 사용할 수 있는 공간이다.
사용 필드는 할당된 메모 영역의 사용 상태를 지시하는 정보를 포함한다. 상기 정보는 실제 사용 크기를 지시할 수 있다.
도 8a는 전용 영역에 대한 메모리의 사용의 일실시예를 도시한 도면이다.
도 8a를 참조하면, 메모리(810)은 메모리(510)을 AP 모듈(310)의 CPU, Codec, CP의 프리로드 영역을 전용시켜 할당한 경우를 나타낸다. 메모리(510)를 캐시 형태로 구현하게 되면, 메모리(3)의 액세스가 많은 IP에 대해 동적으로 일반(Normal) 영역을 할당하여 사용할 수 있다.
도 8b는 일반 영역에 대한 메모리의 사용의 일실시예를 도시한 도면이다.
도 8b를 참조하면, 메모리(850)은 실행 시점(Run-Time)에 GPU 사용으로 발생할 수 있는 일반(Normal) 영역에 대한 메모리(510) 예를 나타낸다. 제어부(530)는 할당 테이블(700)의 사용 필드를 Run-Time에 계속 업데이트할 수 있고, 시나리오에 따라 할당 크기(Allocation Size)를 변경할 수 있다.
오퍼레이션 테이블(533)은 시나리오에 따른 메모리(510)의 사용, 프리페치(Prefetch) 사용에 관한 정의를 지시하는 정보를 저장할 수 있다.
사전에 각 이벤트(Event) 상황에 대한 메모리(510), 프리페치(Prefetch) 사용 방식이 정의되고, 상기 정의를 지시하는 지시하는 정보가 오퍼레이션 테이블(510)에 저장될 수 있다. 사용 시나리오는 사전에 각 이벤트(Event) 상황에 대한 메모리(510), 프리페치(Prefetch) 사용 방식을 정의한 것을 의미한다.
추가로, 사전에 다른 IP들의 메모리(510)의 사용도 정의되고, 상기 정의를 지시하는 정보가 오퍼레이션 테이블(533)에 저장될 수 있다. 상기 정보는, 어느 IP에 대해 대기 시간(Latency)보장을 위한 우선적인 처리가 필요할 경우에 활용될 수 있다.
도 9는 본 발명에 따른 오퍼레이션 테이블(Operation Table)의 일실시예를 도시한 도면이다.
도 9를 참조하면, 오퍼레이션 테이블(900)은 인덱스(Index) 필드, 이벤트(Event) 필드, 사용(Usage) 필드 및 프리페치(Prefetch) 필드 중 적어도 하나를 포함할 수 있다. 여기서 필드는 요소(Element) 및 열 등으로 지칭될 수 있다.
인덱스(Index) 필드는 오퍼레이션 테이블(900)의 해당 행과 연관된 인덱스를 저장한다.
이벤트(Event) 필드는 이벤트를 지시하는 정보를 저장한다. 예를 들면, 상기 이벤트는 초기(부팅시)일 수 있고, 'A' IP 에 대해 대기 시간 경계값(Latency Threshold) 'x'에 도달했을 때일 수 있다.
사용(Usage) 필드는 해당 이벤트 필드에 저장된 정보가 지시하는 이벤트에 대한 메모리(510)의 활용 여부를 지시하는 정보를 저장한다. AP 모듈(310)의 적시성 IP에 대해 Latency Threshold에 도달했을 때의, 메모리(510) 활용에 대하여 정의되고 상기 정보는 상기 정의를 지시하는 정보를 포함할 수 있다. 여기서, 온(On)은 메모리(510)의 활용을 지시하고, 오프(off)는 메모리(510)의 비활용을 지시한다.
프리페치(Prefetch) 필드는 해당 이벤트 필드에 저장된 정보가 지시하는 이벤트에 대한 프리페치 또는 프리로드의 수행 여부를 지시하는 정보 및 프리로드할 영역을 지시하는 주소 중 적어도 하나를 포함할 수 있다. AP 모듈(310)의 적시성 IP에 대해 Latency Threshold에 도달했을 때의, 상기 프리페치 또는 프리로드의 수행 여부를 지시하는 정보를 기초로 프리페치 또는 프리로드의 수행 여부가 결정될 수 있다. 여기서, 온(On)은 프리페치의 수행을 지시하고, 오프(off)는 프리페치의 미수행을 지시한다.
프리로드할 영역을 지시하는 주소는 시작 주소(start Address), 오프셋 및 마지막 주소(End Address) 중 적어도 하나를 포함할 수 있다.
도 10은 오퍼레이션 테이블(Operation Table)의 사용의 일예를 도시한 도면이다.
도 10을 참조하면, 오퍼레이션 테이블(1000)은 메모리(510)를 버퍼 구조로 구현한 경우의 오퍼레이션 테이블의 사용 예이다.
인덱스 '0'인 행의 이벤트 필드에 저장된 "Init"는 초기(부팅시)를 지시한다.
인덱스 '1'인 행의 이벤트 필드에 저장된 "A Threshold x"는 'A' IP가 에 대해 대기 시간 경계값(Latency Threshold) 'x'에 도달했을 때를 지시한다.
인덱스 '1'인 행의 사용 필드 중 'A' 필드에 저장된 'On'은, 실행 시점에 'A' IP에 대해 대기 시간 경계값(Latency Threshold) x에 도달한 경우(A Threshold x)에는, 'A' IP가 메모리(510)를 활용한다는 것을 지시한다.
인덱스 '0'인 행의 프리페치 필드 중 'B' 필드에 저장된 "Preload 0 (Start Address, Offset0)"은 프리로드할 영역이 프리로드 '0'이라는 것을 지시한다.
도 11은 오퍼레이션 테이블(Operation Table)의 사용의 다른 예를 도시한 도면이다.
도 11을 참조하면, 오퍼레이션 테이블(1100)은 메모리(510)를 캐시 구조로 구현한 경우의 오퍼레이션 테이블의 사용 예이다. 메모리(510)를 캐시로 구현한 경우에는, 전용(Dedicated) 영역과 일반(Normal) 영역으로 나누어 운영할 수 있으므로, 이 일반(Normal) 영역에 추가 할당(Additional Allocation), 프리페치 온/오프(Prefetch On/Off)를 정의하여 사용할 수 있다.
인덱스 '2'인 행의 사용 필드의 'B' 필드에 저장된 "On (Preload 2 + Additional Allocation)"은, 실행 시점에 'B' IP에 대해 대기 시간 경계값(Latency Threshold) Y에 도달한 경우(B Threshold y)에는, 'B' IP가 전용 영역에 'Preload 2)가 지시하는 프리로드 구간을 업로드하고, 'B' IP를 위한 "Additional Allocation"이 지시하는 크기의 메모리 영역을 추가로 할당하고 Prefetch도 함께 수행할 것을 지시한다.
엔진(535)은 메모리(510)에 대한 프리로드 및 프리페치를 수행한다. 엔진(535)은 할당 테이블(530)에 저장된 정보 및 오퍼레이션 테이블(533)에 저장된 정보 중 적어도 하나를 기초로 프리로드를 수행할 수 있다. 또한 엔진(535)은 AP 모듈(310) 또는 CP 모듈(320)의 메모리 요청(request)를 기초로 메모리(510)에 대한 프리페치를 수행할 수 있으며, 상기 프리페치는 Sequential Prefetch, Stride Prefetch, Global History Buffer 등의 일반적인 프리페치 알고리즘이 적용될 수 있다. 또한 엔진(535)은 오퍼레이션 테이블(533)의 이벤트 필드에 저장된 정보와 트래픽 감시부(537)를 통해서 확인되는 정보를 기초로 프리로드 또는 프리페치를 수행해야 할 시점을 판단하고, 오퍼레이션 테이블(533)에 저장된 정보를 기초로 엔진(535)의 동작을 시나리오에 따라 변경할 수 있다.
도 12는 프리로드를 설명하기 위한 도면이다.
도 12를 참조하면, 전자 장치(1)의 부팅(Booting)이 완료되면, 제어부(530)는 오퍼레이션 테이블(533)에 미리 정의된 프리로드 영역을 메모리(510)에 적재한다. CP 코드(Code)의 경우에는 사용 시나리오에 따라 메모리(510)에 적재 하도록 한다. 프리로드가 완료되면, 제어부(530)는 할당 테이블(531)의 사용 필드를 업데이트한다.
메모리(510)를 캐시로 구현하는 경우에는, 할당하여 사용할 크기(1250)가 웨이 크기(Way Size)에 가까우면 1개 웨이(Way)(1210)를 할당하고, 모자란 부분은 다른 Way에 라인 단위(1222, 1223)로 할당한다. 프리로드 영역이 캐시에 적재되면 해당하는 캐시 라인의 태그 메모리(Tag Memory)에 전용(Dedicated), 락 상태(Lock State)를 설정하여 캐시에 상주할 수 있도록 한다.
CP 모듈(320)의 사용 시나리오에 따라 프리로드(Preload) 영역을 바꿀 수 있다. 전자 장치(1)의 비행기 모드(Airplane Mode)나 WiFi 사용 등, AP 모듈(310)이 CP 모듈(320)의 사용에 대한 정보를 알 수 있으므로, 연계하여 유동적으로 사용할 수 있다. 비행기 모듈에서 CP 모듈(320)를 사용하지 않는 경우에는, 프리로드를 포함하여, CP 모듈(320)에 할당했던 메모리(510)의 영역을 다른 용도로 사용할 수 있다. 전자 장치(1)가 WiFi 사용 중이면, 위에서 도 13에 도시된 프리로드 0을 프리로드 1로 바꾸고, CP 모듈(320)에 할당했던 영역을 다른 IP가 사용할 수 있도록 한다.
트래픽 감시부(537)는 일정한 주기로 AP 모듈(310) 및 CP 모듈(320)의 Real-Time IP의 메모리 대기 시간 변화를 모니터링하고, 요청 응답 사이클(Request-Response Cycle) 차이와 동작 주파수(Frequency)로 메모리 대기 시간을 산출한다. 여기서, 메모리(3)이 DRAM인 경우에는, 상기 메모리 대기 시간은 DRAM 대기 시간(DRAM Latency)일 수 있다.
도 13은 시나리오에 따라 데이터를 분류한 일실시예를 도시한 도면이다.
도 13을 참조하면,CP 모듈(320)에서 Preload하는 영역은 중요도와 시나리오에 따라 다르게 적용할 수 있다. Real-Time 처리가 필요한 부분은 Design Time에 알 수 있으며, 중요도와 사용 시나리오에 따라서 몇 가지로 나눌 수 있다. 테이블(1350)에서 시나리오에 따른 Real-Time 영역의 구분 방식을 확인할 수 있다. Run-Time에, AP 모듈(310)의 동작 상황과 DRAM 사용 상황을 고려하여 Preload 영역을 다르게 활용할 수 있다. 메모리(510)에 여유가 많고, DRAM Access가 적은 상황이면, Preload 0을 메모리(510)에 할당하여 사용할 수 있다. 만일 전자 장치(1)의 WiFi가 연결되어있는 상황이라면, 전화 통화 프로토콜(Protocol) 관련된 Preload 1 만 메모리(510)에 할당하여 사용할 수 있다. CP 모듈(320)의 Traffic이 많아지는 상황이면, Preload 2를 추가로 메모리(510)에 할당하여 사용할 수도 있다. 메모리(510)에 해당 영역을 업로드(Upload) 시키는 방식은 엔진(535)가 트래픽 조건에 따라 수행하는 방식이나 CP 모듈(320)이나 AP 모듈(310)에서 Preload를 수행하도록 명령을 주는 방식을 포함할 수 있다.
도 14는 본 발명에 따른 메모리 운영 방법의 일실시예의 수행과정을 설명하기 위한 도면이다. 도 14는 CP와 AP Display에 대해 DRAM Latency를 기반으로 하여 메모리(510)를 운영하는 과정을 나타내고 있다.
도 14을 참조하면, 대기 시간(Latency)은 버스 대기 시간(Bus Latency) 및 메모리(3) 대기 시간의 합으로 표시될 수 있다. 여기서 Bus Latency는 Design Time에 정해지는 부분이고, 일정 부분 Margin을 고려하면 Run-Time중에도 큰 변화는 없다. 그러나 메모리(3)의 대기 시간은 Access Pattern, Traffic 양에 따라 달라지므로, 본 발명에 따른 메모리 모듈(330)은 메모리(3)의 대기 시간을 Monitoring하여 그 값을 메모리(510)의 운영에 활용한다. 여기서 메모리(3)의 대기 시간은 메모리 요청이 메모리 모듈(330)에서 메모리(3)로 전달된 시점부터 상기 메모리 요청과 연관된 데이터가 메모리 모듈(330)로 도착 시점까지의 시간 차이로 정의될 수 있다.
임의의 Real-Time IP A에 대해, Delta는 하기 수학식 1과 같이 정의될 수 있다.
[수학식 1]
Delta = Threshold - Monitored DRAM Latency
Delta ≤ Margin이면, 오퍼레이션 테이블(533)에서 정의된 메모리 할당 및 프리페치 동작을 수행한다. 대부분의 적시성 IP는 Latency에 대해 제약 조건이 있고, Bus Latency를 Design Time에 구할 수 있으므로, Threshold도 Design Time에 정의할 수 있다. Margin은 Real-Time IP의 제약 조건에 따라 정할 수 있다.
제어부(530)는 상태(1410), 단계(1420) 및 단계(1430)를 수행하여 메모리(510)의 운영을 제어할 수 있다.
"CP Threshold y - Monitored Latency > MarginCP"이면, 제어부(530)는 메모리(510)의 상태가 상태(1410)이 되도록 한다. 상태(1410)에서 메모리(510)는 CP 모듈(320)의 Preload 1 Area를 저장한다.
"CP Threshold y - Monitored Latency ≤ MarginCP"이면, 제어부(530)는 메모리(510)의 상태를 상태(1410)에서 상태(1420)로 변경한다. 상태(1420)에서 메모리(510)는 CP 모듈(320)의 Preload 0 Area를 저장한다. Memory (510)가 캐시로 구현된 경우에는, 상태(1420)에서 제어부(530)는 CP 일반 액세스(CP Normal Access) 위한 캐시 할당을 허용하고 프리페치(Prefetch)를 수행한다.
"Display Threshold x - Monitored Latency ≤ MarginDisp"이면, 제어부(530)는 메모리(510)의 상태를 상태(1420)에서 상태(1430)로 변경한다. 상태(1430)에서 메모리(510)는 CP 모듈(320)의 Preload 1 Area 및 AP 모듈(310)의 Display Area 저장하고, 제어부(530)는 Display Area 에 대한 프리페치를 수행한다. 메모리(510)가 Cache로 구현된 경우에는, 제어부(530)는 CP 모듈(320) Preload 2 의 Lock을 풀어서, 교체 대상으로 만들어 주고, Display IP를 위한 캐시 할당을 허용하고, Display IP를 위한 프리페치(Prefetch)를 수행하여 Display IP의 Latency 감소시킨다.
도 15는 Display IP를 위한 메모리 모듈(330)의 역할을 설명하기 위한 도면이다. 도 15는 Display IP에 대한 캐시 활용을 도시한다.
도 15를 참조하면, Display IP(1510)는 Real-Time IP로써, 한 화면을 구성할 때, 여러 장의 이미지를 합쳐서 화면(1520)에 출력한다. 풀 HD 프레임(Full HD Frame) 한 장에 7.9MB정도 이고, Display IP(1510)가 3장의 이미지를 합쳐서 화면에 출력한다고 하면, 최악의 경우 약 23MB정도의 이미지가 필요한데, 이는 메모리(510)로 감당할 수 있는 크기가 아니므로, 전체를 메모리(510)에 할당하여 사용할 수는 없다.
그러나 Display IP가 1 Line 단위(1521, 1522)로 출력한다는 점을 활용한다면, 실제로 필요한 Cache Size를 줄이고, 메모리(3) Access를 Hiding 할 수 있다. Full HD 기준으로 하면,
해상도 1920 * 1080인 화면에서 1 Line은 1920 Pixel이고, 픽셀당 바이트수가 4 Byptes/Pixel이면, 1 Line을 위한 데이터 크기는 하기 수학식 2와 같이 산출될 수 있다.
[수학식 2]
1 Line = 1920 * 4 Bytes/Pixel = 7.5KB
[수학식 3]
60FPS = 1 / 60 s = 1 / 60 / 1080 s = 15.4us
수학식 3에 따르면, Display IP가 최소 15.4us 마다 7.5KB를 출력해야 화면이 정상적으로 보여진다. 이미지 3장을 사용하고 Margin을 고려한다고 하더라도 메모리(510)에 128KB 정도만 할당하면 각 5개 Line을 Cache에서 유지할 수 있다. 여기에 엔진(535)가 지속적으로 출력될 Frame의 라인의 데이터를 미리 채워 두면, 적은 공간의 메모리(510)로 Display IP의 DRAM Access를 Hiding 시킬 수 있다. 이를 통해, 전자 장치(1)의 고해상도 캠코딩이나, 다운로드(Download) 진행 시, Display의 안정성을 보장하고, 화면 회전할 때, 멈추는 시간을 줄일 수 있다.
도 16는 본 발명에 따른 태그 메모리의 일실시예를 도시한 도면이다.
도 16을 참조하면, 여러 IP가 메모리(510)를 사용할 수 있다. 만일, 메모리(510)를 캐시로 구현하는 경우에는, IP 각각이 지정한 크기의 영역을 사용하도록 하고, Preload한 Data가 메모리(510)에 상주할 수 있도록 하기 위한, 할당 관리(Allocation Management)가 필요하다.
메모리(510)를 캐시로 구현하는 경우에는, 메모리(510)는 태그 메모리(Tag Memory)(1600) 및 데이터 메모리(Data Memory)로 구성될 수 있다. Tag Memory(1600)에는 Cache Data의 상태를 표시하는 상태 (State)를 지시하는 상태 정보가 저장되며, 엔진(535)은 상기 상태 정보를 이용하여 Allocation Management를 수행할 수 있다. 상기 상태(State)는 Dedicated, Priority 및 Lock State를 포함할 수 있다. Dedicated(1611)는 IP 또는 IP Group 전용임을 표시하는 것이고, Lock state(1612)은 교체 대상이 아님을 표시하는 용도이다. Priority(1613)는 교체 대상이 될 때 고려될 순서를 알기 위해 사용된다.
어떤 IP가 Cache로 구현된 메모리(510)에 액세스하였을 경우에, Cache Miss가 발생하면 새로운 Cache Line을 할당해야 한다. 만일 빈 공간이 없으면, 기존에 사용되고 있던 Cache Line의 자리에 새로 Allocation하여 사용해야 한다. 즉 교체(Replacement)를 수행해야 하는데, 엔진(535)은 다음과 같은 우선 순위에 따라 교체 대상(Victim)을 결정한다.
① Dedicated 영역의 빈 공간
② Normal 영역의 빈 공간
③ Normal 영역의 Priority 낮은 Group의 Cache Line
④ Normal 영역의 Priority 같고 다른 Group의 Cache Line
⑤ Normal 영역의 같은 Group의 Cache Line
⑥ Dedicated 영역의 사용 중이지만 Lock 걸려 있지 않은 Cache Line
Preload 영역은 Dedicated, Lock 처리하여 교체대상에서 제외한다. 만일 조건에 맞는 Cache Line을 찾지 못하면, Cache Allocation을 하지 않는다. 본 발명에서 제안하는 내용은, 새로운 Cache Line을 할당하기 위한 대체(Replacement) 수행 이전에, Replacement 대상의 후보를 먼저 선정하는 방식으로, 기존의 Random, Round-Robin, LRU 등의 교체 정책과 함께 사용할 수 있다. 또한, 메모리(510)를 사용할 IP의 개수가 적어 Priority를 고려할 필요가 없다면, 위의 경우에서 ③④번은 제외하여 간단하게 만들 수도 있다.
도 17은 본 발명에 따른 메모리 운영 방법의 일실시예의 수행과정을 도시한 순서도이다.
도 17을 참조하면, 엔진(530)은 메모리(510)에 데이터를 프리로드한다(S110). 상기 데이터는 오퍼레이션 테이블(533)에 미리 정의된 프리로드 영역에 저장된 데이터일 수 있다. 엔진(530)은 할당 테이블(513)에 저장된 정보를 기초로 IP별로 메모리(510)의 영역을 할당할 수 있고, IP 별로 할당된 해당 메모리 영역에 해당 IP의 프리로드 영역에 저장된 데이터를 적재할 수 있다. 프리로드를 완료한 후, 엔진(530)는 할당 테이블(531)의 사용 필드를 업데이트할 수 있다. 단계 S110는 전자 장치(1) 부팅이 완료되면 실행될 수 있다.
트래픽 감시부(537)는 메모리(3) 대기 시간을 감시한다(S120). 트래픽 감시부(537)는 일정한 주기로 AP 모듈(310) 및 CP 모듈(320)의 Real-Time IP의 메모리 대기 시간 변화를 모니터링하고, 요청 응답 사이클(Request-Response Cycle) 차이와 동작 주파수(Frequency)로 메모리 대기 시간을 산출할 수 있다. 여기서 메모리 대기 시간은 버스 대기 시간(Bus Latency) 및 메모리(3) 대기 시간 중 적어도 하나를 포함할 수 있다.
엔진(535)은 사전에 설정된 반복 횟수(N)만큼 메모리 대기 시간을 감시하였는지 여부를 확인한다(S130).
N 만큼 메모리 대기 시간이 감시된 경우에는, 엔진(535)은 "Delta ≤ Margin"인지 여부를 확인한다(S140).
Delta ≤ Margin"인 경우에는, 엔진(535)은 오퍼레이션 테이블에 포함된 정보를 기초로 메모리(510)에 적재된 프리로드 영역의 변경이 필요한지 여부를 확인한다(S150).
프리로드 영역 변경이 필요한 경우에는, 엔진(535)은 오퍼레이션 테이블에 포함된 정보를 기초로 메모리(510)에 적재된 프리로드 영역을 변경한다(S160). 여기서 엔진(535)은 프리로드 영역을 변경한 후에, 상기 변경 사항에 따라 할당 테이블(531)를 업데이트할 수 있다.
프리로드 영역의 변경이 필요하지 않은 경우 또는 프리로드 영역 변경된 경우에는, 엔진(535)은 오퍼레이션 테이블(533)에 정의한 사용 시나리오에 따라 메모리(510)를 설정한다(S170). 이 과정은 전자 장치(1) 부팅 이후에 지속적으로 발생할 수 있다.
도 18은 본 발명에 따른 메모리 운영 방법의 다른 실시예의 수행과정을 도시한 순서도이다.
도 18을 참조하면, 특정 IP로부터 메모리 요청을 수신한 경우에, 엔진(535)은 전용 영역에 사용되지 않은 캐시 라인(Cache Line)이 있는지 여부를 확인한다(S200).
상기 사용되지 않은 캐시 라인이 없는 경우에는, 엔진(535)은 상기 메모리 요청이 요구하는 메모리 사용 용량이 캐시 라인 크기보다 작은지 여부를 확인한다(S205).
상기 사용 용량이 해당 IP에 할당한 캐시 크기보다 작은 경우에는, 엔진(535)은 상기 메모리 요청을 요구한 IP와 같은 그룹ID(GID)를 갖는 IP의 일반 영역(Normal Area)에서 후보 지점(Candidate Location)을 검색한다(S210).
일반 영역에서 후보 지점이 검색되지 않은 경우에는, 엔진(535)은 전용 영역(Dedicated Area)에서 후보 지점을 검색한다(S215).
전용 영역에서 후보 지점이 검색된 경우에는, 엔진(535)은 교체 대상을 선택한다(S220). 여기서 엔진(535)은 Lock 걸려 있지 않은 캐시 라인을 교체 대상으로 선택할 수 있다.
엔진(535)은 교체 대상이 저장된 영역에 단계 S200에서 수신된 메모리 요청이 요구하는 데이터를 저장한다(S225).
전용 영역에서 후보 지점이 검색되지 않은 경우에는, 엔진(535)은 캐시 라인을 할당하지 않고, 단계 S200에서 수신된 메모리 요청을 메모리(3)으로 전달한다(S230).
일반 영역에서 후보 지점이 검색된 경우에는, 엔진(535)은 단계 S220을 수행한다. 여기서 엔진(535)은 Normal 영역의 같은 그룹의 캐시 라인을 교체 대상으로 선택할 수 있다.
상기 사용 용량이 해당 IP에 할당한 캐시 크기보다 작지 않은 경우에는, 엔진(535)은 일반 영역에서 사용되지 않은 캐시 라인이 존재하는 지 여부를 확인한다(S235).
일반 영역에서 사용되지 않은 캐시 라인이 존재하지 않는 경우에는, 엔진(535)은 일반 영역에서 낮은 우선권을 갖는 IP를 위한 캐시 라인이 존재하는 여부를 확인한다(S240).
일반 영역에서 낮은 우선권을 갖는 IP를 위한 캐시 라인이 존재하는 경우에는, 엔진(535)은 단계 S220을 수행한다. 여기서, 엔진(535)은 상기 캐시 라인을 교체 대상으로 선택할 수 있다.
일반 영역에서 낮은 우선권을 갖는 IP를 위한 캐시 라인이 존재하지 않는 경우에는, 엔진(535)은 일반 영역에서 Priority 같고 다른 Group의 Cache Line이 존재하는지 여부를 확인한다(S245).
일반 영역에서 Priority 같고 다른 그룹의 캐시 라인이 존재하는 경우에는, 엔진(535)은 단계 S220을 수행한다. 여기서, 엔진(535)은 상기 캐시 라인을 교체 대상으로 선택할 수 있다.
일반 영역에서 Priority 같고 다른 그룹의 캐시 라인이 존재하지 않는 경우에는, 엔진(535)은 상기 메모리 요청을 요구한 IP와 같은 그룹ID(GID)를 갖는 IP를 위해 할당된 영역에서 후보 지점(Candidate Location)을 검색한다(S250).
상기 메모리 요청을 요구한 IP와 같은 그룹ID(GID)를 갖는 IP를 위해 할당된 영역에서 후보 지점(Candidate Location)이 검색된 경우에는, 엔진(535)은 단계 S220을 수행한다. 여기서, 엔진(535)은 상기 후보 지점을 교체 대상으로 선택할 수 있다.
상기 메모리 요청을 요구한 IP와 같은 그룹ID(GID)를 갖는 IP를 위해 할당된 영역에서 후보 지점(Candidate Location)이 검색되지 않은 경우에는, 엔진(535)은 단계 S230을 수행한다.
일반 영역에 사용되지 않은 캐시 라인(Cache Line)이 있는 경우에는, 엔진(535)은 단계 S225를 수행한다. 여기서 엔진(535)은 상기 캐시 라인이 저장된 영역에 단계 S200에서 수신된 메모리 요청이 요구하는 데이터를 저장한다.
전용 영역에 사용되지 않은 캐시 라인(Cache Line)이 있는 경우에는, 엔진(535)은 단계 S225를 수행한다. 여기서 엔진(535)은 상기 캐시 라인이 저장된 영역에 단계 S200에서 수신된 메모리 요청이 요구하는 데이터를 저장한다.
도 19는 해상도 변화에 따른 디스플레이의 Real-Time 조건을 나타나낸 테이블을 도시한 도면이다.
도 19를 참조하면, 스크린(Screen) 해상도가 커지게 되면, AP Traffic이 2~4배 이상 증가할 것이므로, CP의 메모리 대기 시간 제약뿐 만 아니라, AP Display IP의 적시성 요구도 더욱 커지게 된다. 이는 테이블(1900)에서 확인할 수 있다.
AP-CP One Chip에서, 적시성 조건들이 충족되지 않게 되면, 사용자는 통신의 질 저하, 디스플레이(Display) 질 저하를 겪을 수 있다. 다운로드(Download)시 콘텐트(Contents)가 손상되거나, 영상통화 도중 영상이나 음성이 끊기는 현상을 겪을 수 있고, 고해상도 영상 촬영 중에 애플리케이션 업데이트(Application Update)가 일어난다거나 하면, 화면이 끊기거나 다운로드 중, 고해상도 영상 재생 시 화면이 끊기는 현상을 경험하는 빈도가 늘어날 수 있다. 물론, 이러한 상황이 발생하지 않도록 개발 단계에서 충분한 검증이 이루어져야겠지만, 조건을 만족할 수 없다면, 원하는 성능으로 제품을 출시할 수 없게 될 것이다.
도 20은 통신 대역폭에 따른 영상의 다운로드 시간 및 화질을 나타낸 테이블을 도면이다.
도 20을 참조하면, 스크린(Screen) 해상도의 증대와 더불어 통신 성능에 대한 요구는 계속 증대되고 있다. 특히 영상통화 화질이나, 온라인 게임(On-line Game), 인터넷 브라우징(Internet Browsing), 스트리밍 서비스(Streaming Service) 등 단말에서의 응답속도 개선 요구는 점점 증대되고 있다. 단말에서의 대용량 콘텐트 사용도 확대되고 있다. 테이블(2000)에서는 통신 대역폭(Bandwidth) 변화에 따라 비슷한 시간에 받는 영상의 화질이 달라질 수 있음을 알 수 있다. 앞으로도 고해상도에 대한 요구는 지속될 것이므로, AP-CP One Chip (200)에서의 통신, 디스플레이 등의 적시성 보장 문제는 발생 가능성이 높아질 것이다. 이를 해결하기 위해, 본 발명은 AP-CP One Chip 구조에서 메모리 대기 시간 감소를 위한 메모리 모듈(330). 이를 포함하는 전자 장치 및 운영 방법을 제공한다.
기존에 사용되어 왔던 TCM과 Cache 모두 크기(Size)가 제한적이어서 대기 시간을 줄이는 데, 한계가 있다. CP가 수행해야 할 통신 프로토콜 코드 사이즈(Protocol Code Size)가 커서 모든 코드를 온 칩(On-Chip)에 적재하기 어렵기 때문이다. 특히 DSP를 제어하는 데 사용되는 코드는 적시성 처리가 필요한데, 이러한 코드 수행 중에 캐시 미스(Cache Miss)가 발생하면, DRAM 액세스를 해야 하고, 만일, DRAM 대기 시간이 길어지면, 통신을 제대로 수행할 수 없게 된다. 게다가, AP와 함께 DRAM을 사용하면서, DRAM 대기 시간이 CP 전용 DRAM을 사용할 때보다 길어져서 TCM과 내부 캐시만으로는 Real-Time 처리를 보장할 수 없게 되었다.
일반적으로 캐시는 적시성 처리를 100% 보장할 수는 없다. 적시성 처리를 위해서는 특정 시간 안에 동작이 완료되는 것을 보장할 수 있어야 하는데, 캐시는 캐시 미스가 발생하면 대기 시간이 늘어나는데다, 그런 경우를 예측하기도 어렵기 때문이다.
Bus, DRAM 제어부에서 사용하는 우선 순위 기반 QoS는, 특정 트랜잭션에 대한 우선적인 처리를 가능하게 한다. 그러나, QoS를 적용한다고 하더라도, 기본적인 DRAM 대기 시간이 줄어들지는 않으며, 다른 IP의 트랜잭션의 처리를 계속해서 지연시킬 수도 없기 때문에, 적시성 보장이 어렵다. 또한 CP CPU Code, AP의 디스플레이처럼 중요한 적시성 트랜잭션(Real-Time Transaction)이 동시에 DRAM에 들어오게 되면, 우선 순위에 따라 한 쪽은 손해를 보게 되기 때문에 Real-Time 보장이 더욱 어렵게 된다. 이를 해결하기 위해, 본 발명은 AP-CP One Chip 구조에서 메모리 대기 시간 감소를 위한 메모리 모듈(330), 이를 포함하는 전자 장치 및 운영 방법을 제공한다.
본 명세서와 도면에 개시된 본 발명의 실시예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다. 여기에 개시된 실시예들 각각에 기재된 기술적 특징은 다른 실시예에도 결합하여 실시 가능하다.
Claims (16)
- 복수의 설계 자산(IP : Intellectual Property); 및
저장 영역을 포함하고, 상기 복수의 IP 중 적어도 하나의 IP의 메모리 트랙픽을 모니터닝하고, 상기 모니터닝 결과를 기초로 저장 영역의 사용을 제어하는 메모리 모듈을 포함하는 것을 특징으로 하는 온 칩 메모리 장치. - 제 1항에 있어서,
상기 메모리 모듈은,
상기 저장 영역에 사전에 설정된 프리로드 영역을 프리로드하고, 상기 프리로드 영역은 상기 복수의 IP 중 적어도 하나의 IP와 연관된 데이터 중 일부 또는 전부가 저장된 영역인 것을 특징으로 하는 온 칩 메모리 장치. - 제 1항에 있어서,
상기 메모리 모듈은,
IP가 요구한 메모리 요청을 기초로 상기 저장 영역에 프리페치를 수행하는 것을 특징으로 하는 온 칩 메모리 장치. - 제 1항에 있어서,
사전에 정의된 이벤트의 발생 여부를 확인하고, 상기 발생된 이벤트와 연관된 상기 메모리에 대한 액션을 수행하는 것을 특징으로 하는 온 칩 메모리 장치. - 제 4항에 있어서,
상기 메모리에 대한 액션은 상기 이벤트와 연관된 IP의 프리로드의 변경, 상기 IP에 상기 저장 영역의 할당, 상기 IP에 상기 저장 영역의 할당해제, 상기 IP를 위한 프리페치 수행 활성화 및 상기 IP 위한 프리페치 수행 비활성화 중 적어도 하나를 포함하는 것을 특징으로 하는 온 칩 메모리 장치. - 제 4항에 있어서,
상기 모니터링 결과를 기초로 상기 이벤트의 발생 여부를 확인하는 것을 특징으로 하는 온 칩 메모리 장치. - 제 1항에 있어서,
상기 메모리 모듈은,
IP 별로 사전에 정의된 할당 정보를 기초로 상기 IP에 상기 저장 영역을 할당하고, 상기 할당 정보는 할당 영역의 우선순위를 지시하는 정보, 할당 영역의 종류를 지시하는 정보 및 할당 영역의 크기를 지시하는 정보 중 적어도 하나를 포함하고, 상기 할당 영역의 종류는 전용 영역 및 일반 영역 중 적어도 하나를 포함하는 것을 특징으로 하는 온 칩 메모리 장치. - 복수의 설계 자산(IP : Intellectual Property)을 포함하는 온 칩 메모리 장치의 운영 방법에 있어서,
상기 복수의 IP 중 적어도 하나의 IP의 메모리 트랙픽을 모니터닝하는 단계; 및
상기 모니터닝 결과를 기초로 상기 온 칩 메모리 장치에 포함된 저장 영역의 사용을 제어하는 단계를 포함하는 것을 특징으로 하는 온 칩 메모리 장치의 운영 방법. - 제 8항에 있어서,
상기 저장 영역에 사전에 설정된 프리로드 영역을 프리로드하는 단계를 더 포함하고, 상기 프리로드 영역은 상기 복수의 IP 중 적어도 하나의 IP와 연관된 데이터 중 일부 또는 전부가 저장된 영역인 것을 특징으로 하는 온 칩 메모리 장치의 운영 방법. - 제 8항에 있어서,
IP가 요구한 메모리 요청을 기초로 상기 저장 영역에 프리페치를 수행하는 단계를 더 포함하는 것을 특징으로 하는 온 칩 메모리 장치의 운영 방법. - 제 8항에 있어서,
사전에 정의된 이벤트의 발생 여부를 확인하고, 상기 발생된 이벤트와 연관된 상기 메모리에 대한 액션을 수행하는 단계를 더 포함하는 것을 특징으로 하는 온 칩 메모리 장치의 운영 방법. - 제 11항에 있어서,
상기 메모리에 대한 액션은 상기 이벤트와 연관된 IP의 프리로드의 변경, 상기 IP에 상기 저장 영역의 할당, 상기 IP에 상기 저장 영역의 할당해제, 상기 IP를 위한 프리페치 수행 활성화 및 상기 IP 위한 프리페치 수행 비활성화 중 적어도 하나를 포함하는 것을 특징으로 하는 온 칩 메모리 장치의 운영 방법. - 제 8항에 있어서,
상기 저장 영역의 사용을 제어하는 단계는,
상기 모니터링 결과를 기초로 사전에 정의된 이벤트의 발생 여부를 확인하는 단계; 및
상기 발생된 이벤트와 연관된 상기 메모리에 대한 액션을 수행하는 단계를 포함하는 것 특징으로 하는 온 칩 메모리 장치의 운영 방법. - 제 8항에 있어서,
IP 별로 사전에 정의된 할당 정보를 기초로 상기 IP에 상기 저장 영역을 할당하는 단계를 더 포함하고,
상기 할당 정보는 할당 영역의 우선순위를 지시하는 정보, 할당 영역의 종류를 지시하는 정보 및 할당 영역의 크기를 지시하는 정보 중 적어도 하나를 포함하고, 상기 할당 영역의 종류는 전용 영역 및 일반 영역 중 적어도 하나를 포함하는 것을 특징으로 하는 온 칩 메모리 장치의 운영 방법. - 제 1항 내지 제 7항 중 어느 하나의 항에 따른 온 칩 메모리 장치를 포함하는 전자 장치.
- 메모리를 더 포함하고,
상기 온 칩 메모리 장치의 메모리 모듈은 상기 복수의 IP 중 적어도 하나의 IP 및 상기 메모리 간의 메모리 트랙픽을 모니터닝하고, 상기 모니터닝 결과를 기초로 상기 저장 영역의 사용을 제어하는 것을 특징으로 하는 전자 장치.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140102481A KR20160018204A (ko) | 2014-08-08 | 2014-08-08 | 전자 장치, 온 칩 메모리 장치 및 온 칩 메모리의 운영 방법 |
EP15179992.1A EP2983105B1 (en) | 2014-08-08 | 2015-08-06 | Electronic device, on-chip memory and method of operating the on-chip memory |
CN201580042726.4A CN106575258A (zh) | 2014-08-08 | 2015-08-06 | 电子设备、片上存储器和操作所述片上存储器的方法 |
PCT/KR2015/008258 WO2016021964A1 (en) | 2014-08-08 | 2015-08-06 | Electronic device, on-chip memory and method of operating the on-chip memory |
US14/821,663 US20160041791A1 (en) | 2014-08-08 | 2015-08-07 | Electronic device, on-chip memory and method of operating the on-chip memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140102481A KR20160018204A (ko) | 2014-08-08 | 2014-08-08 | 전자 장치, 온 칩 메모리 장치 및 온 칩 메모리의 운영 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20160018204A true KR20160018204A (ko) | 2016-02-17 |
Family
ID=53879348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140102481A KR20160018204A (ko) | 2014-08-08 | 2014-08-08 | 전자 장치, 온 칩 메모리 장치 및 온 칩 메모리의 운영 방법 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20160041791A1 (ko) |
EP (1) | EP2983105B1 (ko) |
KR (1) | KR20160018204A (ko) |
CN (1) | CN106575258A (ko) |
WO (1) | WO2016021964A1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10599208B2 (en) * | 2015-09-08 | 2020-03-24 | Toshiba Memory Corporation | Memory system and controller |
KR102512727B1 (ko) * | 2017-12-22 | 2023-03-22 | 삼성전자주식회사 | 가비지 컬렉션을 수행하는 스토리지 장치, 및 스토리지 장치의 가비지 컬렉션 방법 |
US11210186B2 (en) * | 2019-03-07 | 2021-12-28 | Arm Limited | Error recovery storage for non-associative memory |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654837B1 (en) * | 1999-12-28 | 2003-11-25 | Intel Corporation | Dynamic priority external transaction system |
EP1182567B1 (en) * | 2000-08-21 | 2012-03-07 | Texas Instruments France | Software controlled cache configuration |
GB2373595B (en) * | 2001-03-15 | 2005-09-07 | Italtel Spa | A system of distributed microprocessor interfaces toward macro-cell based designs implemented as ASIC or FPGA bread boarding and relative common bus protocol |
US6662272B2 (en) * | 2001-09-29 | 2003-12-09 | Hewlett-Packard Development Company, L.P. | Dynamic cache partitioning |
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 |
CN100445944C (zh) * | 2004-12-21 | 2008-12-24 | 三菱电机株式会社 | 控制电路以及控制方法 |
GB0603552D0 (en) * | 2006-02-22 | 2006-04-05 | Advanced Risc Mach Ltd | Cache management within a data processing apparatus |
EP2041661B1 (en) * | 2006-07-05 | 2014-02-12 | Synopsys, Inc. | Electronic device, system on chip and method for monitoring a data flow |
KR101781617B1 (ko) * | 2010-04-28 | 2017-09-25 | 삼성전자주식회사 | 통합 입출력 메모리 관리 유닛을 포함하는 시스템 온 칩 |
US8949579B2 (en) * | 2010-10-04 | 2015-02-03 | International Business Machines Corporation | Ineffective prefetch determination and latency optimization |
US8321627B1 (en) * | 2011-10-06 | 2012-11-27 | Google Inc. | Memory operation command latency management |
CN103246584B (zh) * | 2012-02-14 | 2017-02-22 | 苏州澜起微电子科技有限公司 | 片上系统芯片结构及保存调试信息的方法 |
US20140215177A1 (en) * | 2012-08-02 | 2014-07-31 | Boo Jin Kim | Methods and Systems for Managing Heterogeneous Memories |
KR102001414B1 (ko) * | 2012-09-27 | 2019-07-18 | 삼성전자주식회사 | 데이터 트랜잭션에 따라 전력공급을 제어하는 시스템-온-칩 및 그 동작방법 |
US9286223B2 (en) * | 2013-04-17 | 2016-03-15 | Advanced Micro Devices, Inc. | Merging demand load requests with prefetch load requests |
-
2014
- 2014-08-08 KR KR1020140102481A patent/KR20160018204A/ko not_active Application Discontinuation
-
2015
- 2015-08-06 EP EP15179992.1A patent/EP2983105B1/en active Active
- 2015-08-06 CN CN201580042726.4A patent/CN106575258A/zh not_active Withdrawn
- 2015-08-06 WO PCT/KR2015/008258 patent/WO2016021964A1/en active Application Filing
- 2015-08-07 US US14/821,663 patent/US20160041791A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20160041791A1 (en) | 2016-02-11 |
EP2983105B1 (en) | 2019-10-02 |
WO2016021964A1 (en) | 2016-02-11 |
EP2983105A1 (en) | 2016-02-10 |
CN106575258A (zh) | 2017-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11567885B2 (en) | System and method for optimizing DRAM bus switching using LLC | |
CN109074331B (zh) | 具有系统高速缓存和本地资源管理的功率降低存储器子系统 | |
US10496550B2 (en) | Multi-port shared cache apparatus | |
CN113424160A (zh) | 一种处理方法、装置及相关设备 | |
CN111382089B (zh) | 用于专用最末级高速缓存器的旁路预测器 | |
US11620243B2 (en) | Way partitioning for a system-level cache | |
AU2015354703A1 (en) | Providing shared cache memory allocation control in shared cache memory systems | |
CN115794682A (zh) | 缓存替换方法及装置、电子设备、存储介质 | |
US8977817B2 (en) | System cache with fine grain power management | |
CN106294192B (zh) | 内存分配方法、内存分配装置及服务器 | |
KR20160018204A (ko) | 전자 장치, 온 칩 메모리 장치 및 온 칩 메모리의 운영 방법 | |
CN118035132A (zh) | 一种缓存数据预取方法、处理器及电子设备 | |
CN109408412B (zh) | 内存预取控制方法、装置及设备 | |
US9354812B1 (en) | Dynamic memory utilization in a system on a chip | |
CN108885587B (zh) | 具有系统高速缓存和本地资源管理的功率降低存储器子系统 | |
US11016899B2 (en) | Selectively honoring speculative memory prefetch requests based on bandwidth state of a memory access path component(s) in a processor-based system | |
CA2832223C (en) | Multi-port shared cache apparatus | |
CN116107926B (zh) | 缓存替换策略的管理方法、装置、设备、介质和程序产品 | |
US11422935B2 (en) | Direct mapping mode for associative cache | |
US12093181B2 (en) | Allocation control for cache | |
CN116360985A (zh) | 缓存分配方法、装置、芯片及计算机存储介质 | |
CN118035129A (zh) | 存储空间的分配方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |