KR20240045069A - Application processor, system on chip and method of operation thereof - Google Patents

Application processor, system on chip and method of operation thereof Download PDF

Info

Publication number
KR20240045069A
KR20240045069A KR1020230048985A KR20230048985A KR20240045069A KR 20240045069 A KR20240045069 A KR 20240045069A KR 1020230048985 A KR1020230048985 A KR 1020230048985A KR 20230048985 A KR20230048985 A KR 20230048985A KR 20240045069 A KR20240045069 A KR 20240045069A
Authority
KR
South Korea
Prior art keywords
physical address
address
memory
processor
sub
Prior art date
Application number
KR1020230048985A
Other languages
Korean (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 US18/473,917 priority Critical patent/US20240111686A1/en
Priority to EP23199777.6A priority patent/EP4345632A1/en
Priority to CN202311259788.3A priority patent/CN117785726A/en
Publication of KR20240045069A publication Critical patent/KR20240045069A/en

Links

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data

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

애플리케이션 프로세서, 시스템 온 칩 및 이의 동작 방법이 개시된다. 본 개시의 예시적 실시예에 따른 시스템 온 칩은, 제1 엑세스 주소를 출력하는 제1 프로세서, 상기 프로세서 또는 적어도 하나의 IP(Intellectual Property)로부터 수신되는 엑세스 주소가 상기 메모리의 물리 주소 영역에 대응하면, 상기 엑세스 주소를 상기 메모리에 전송하고, 상기 엑세스 주소가 상기 메모리의 상기 물리 주소 영역 이외에 쉐도우 물리 주소 영역에 대응하면 상기 엑세스 주소를 상기 메모리가 아닌 다른 프로세싱 회로로 전송하는 시스템 버스; 및 상기 시스템 버스를 통해 상기 프로세서로부터의 상기 제1 엑세스 주소를 수신하고, 상기 제1 엑세스 주소를 상기 물리 주소 영역에 대응하는 제2 엑세스 어드레스로 변환하고, 상기 메모리를 엑세스 하도록 상기 제2 엑세스 주소를 상기 시스템 버스로 전송하는 서브-프로세싱 회로를 포함할 수 있다.An application processor, system-on-chip, and method of operating the same are disclosed. The system-on-chip according to an exemplary embodiment of the present disclosure includes a first processor outputting a first access address, an access address received from the processor, or at least one IP (Intellectual Property) corresponding to a physical address area of the memory. a system bus that transmits the access address to the memory and, if the access address corresponds to a shadow physical address area other than the physical address area of the memory, transfers the access address to a processing circuit other than the memory; and receiving the first access address from the processor through the system bus, converting the first access address to a second access address corresponding to the physical address area, and using the second access address to access the memory. It may include a sub-processing circuit that transmits to the system bus.

Description

애플리케이션 프로세서, 시스템 온 칩 및 이의 동작 방법 {Application processor, system on chip and method of operation thereof}Application processor, system on chip and method of operation thereof {Application processor, system on chip and method of operation thereof}

본 개시의 기술적 사상은 시스템 온 칩에 관한 것으로서, 더욱 상세하게는, 프로세서가 실행하는 애플리케이션을 지원하는 서브-프로세싱 회로를 포함하는 시스템 온 칩, 애플리케이션 및 시스템 온 칩의 동작 방법에 관한 것이다. The technical idea of the present disclosure relates to a system-on-chip, and more specifically, to a system-on-chip including a sub-processing circuit supporting an application executed by a processor, an application, and a method of operating the system-on-chip.

시스템 온 칩(System on Chip, 이하 SoC라고 칭함)은 여러 가지 기능을 갖는 복잡한 시스템을 단일 반도체 칩에 집적하는 기술이다. 컴퓨터, 통신, 방송 등이 통합되는 컨버전스(convergence) 경향에 따라 주문형 반도체 (Application Specific IC, ASIC) 및 특정 용도의 표준 제품(Application Specific Standard Product, ASSP)에 대한 수요가 SoC로 옮겨가고 있다. 또한, IT(Information Technology) 기기의 소형화 및 경량화는 SoC 관련 사업을 촉진하고 있다. System on Chip (hereinafter referred to as SoC) is a technology that integrates a complex system with multiple functions into a single semiconductor chip. With the convergence trend of integrating computers, communications, broadcasting, etc., the demand for application specific semiconductors (Application Specific IC, ASIC) and standard products for specific purposes (Application Specific Standard Product, ASSP) is shifting to SoC. In addition, miniaturization and lightweighting of IT (Information Technology) devices are promoting SoC-related businesses.

모바일 애플리케이션이 발전함에 따라 프로세서 및 메모리의 사용량이 증가하고 있다. 제한된 전력 사용량 내에서 프로세서 및 메모리의 사용량의 증가를 최소화하면서 사용자를 위한 서비스 소프트웨어의 이용을 지원할 수 있는 SoC가 요구된다. As mobile applications evolve, processor and memory usage is increasing. An SoC that can support the use of service software for users while minimizing the increase in processor and memory usage within limited power usage is required.

본 개시의 기술적 사상은, 소프트웨어의 메모리 사용 요청을 구별하여 처리할 수 있는 시스템 온 칩 및 어플리케이션 프로세서를 제공하는 데 있다.The technical idea of the present disclosure is to provide a system-on-chip and an application processor that can distinguish and process memory use requests of software.

본 개시의 예시적 실시예에 따른 시스템 온 칩은, 제1 엑세스 주소를 출력하는 제1 프로세서, 상기 프로세서 또는 적어도 하나의 IP(Intellectual Property)로부터 수신되는 엑세스 주소가 상기 메모리의 물리 주소 영역에 대응하면, 상기 엑세스 주소를 상기 메모리에 전송하고, 상기 엑세스 주소가 상기 메모리의 상기 물리 주소 영역 이외에 쉐도우 물리 주소 영역에 대응하면 상기 엑세스 주소를 상기 메모리가 아닌 다른 프로세싱 회로로 전송하는 시스템 버스, 및 상기 시스템 버스를 통해 상기 프로세서로부터의 상기 제1 엑세스 주소를 수신하고, 상기 제1 엑세스 주소를 상기 물리 주소 영역에 대응하는 제2 엑세스 어드레스로 변환하고, 상기 메모리를 엑세스 하도록 상기 제2 엑세스 주소를 상기 시스템 버스로 전송하는 서브-프로세싱 회로를 포함할 수 있다. The system-on-chip according to an exemplary embodiment of the present disclosure includes a first processor outputting a first access address, an access address received from the processor, or at least one IP (Intellectual Property) corresponding to a physical address area of the memory. Then, a system bus that transmits the access address to the memory and, if the access address corresponds to a shadow physical address area other than the physical address area of the memory, transfers the access address to a processing circuit other than the memory, and Receiving the first access address from the processor through a system bus, converting the first access address to a second access address corresponding to the physical address area, and converting the second access address to access the memory It may include sub-processing circuitry for transmission to the system bus.

본 개시의 예시적 실시예에 따른 애플리케이션 프로세서는, 애플리케이션을 실행함에 따라 생성되는 제1 가상 주소를, 메모리의 물리 주소 영역 및 쉐도우 물리 주소 영역 중 하나를 나타내는 물리 주소와 상기 애플리케이션이 인지하는 가상 메모리의 주소 영역을 나타내는 가상 주소 간의 맵핑 정보를 포함하는 제1 페이지 테이블을 이용하여 제1 물리 주소로 변환하고 상기 제1 물리 주소를 포함하는 제1 엑세스 요청을 출력하는, 메인 프로세서, 상기 메인 프로세서로부터 상기 제1 엑세스 요청을 수신하고, 상기 제1 물리 주소가 상기 메모리의 상기 물리 주소 영역에 대응하는 것에 응답하여 상기 제1 엑세스 요청을 상기 메모리에 전송하고, 상기 제1 물리 주소가 상기 쉐도우 주소 영역에 대응하는 것에 응답하여 상기 제1 엑세스 요청을 상기 메모리가 아닌 다른 IP로 출력하는 라우터; 상기 라우터로부터 상기 제1 엑세스 요청을 수신하고, 상기 제1 엑세스 요청과 관계되는 데이터를 처리하고, 상기 제1 물리 주소를 제2 가상 주소로 변환하는 서브-프로세싱 회로; 및 상기 제2 가상 주소를 상기 메모리의 상기 물리 주소 영역에 대응하는 제2 물리 주소로 변환하는 제1 MMU(Memory Management Unit)를 포함하고, The application processor according to an exemplary embodiment of the present disclosure includes a first virtual address generated when executing an application, a physical address representing one of a physical address area and a shadow physical address area of a memory, and a virtual memory recognized by the application. A main processor, converting a first physical address to a first physical address using a first page table containing mapping information between virtual addresses representing an address area, and outputting a first access request including the first physical address, from the main processor. Receiving the first access request, and transmitting the first access request to the memory in response to the first physical address corresponding to the physical address area of the memory, and the first physical address corresponding to the shadow address area a router that outputs the first access request to an IP address other than the memory in response to a corresponding IP address; a sub-processing circuit that receives the first access request from the router, processes data related to the first access request, and converts the first physical address to a second virtual address; and a first MMU (Memory Management Unit) that converts the second virtual address into a second physical address corresponding to the physical address area of the memory,

상기 라우터는, 상기 제1 MMU로부터 상기 제2 물리 주소를 포함하는 제2 액세스 요청을 수신하고, 상기 제2 물리 주소가 상기 메모리의 상기 물리 주소 영역에 대응하는 것에 응답하여 상기 제2 엑세스 요청을 상기 메모리로 전송할 수 있다.The router receives a second access request including the second physical address from the first MMU, and sends the second access request in response to the second physical address corresponding to the physical address area of the memory. It can be transferred to the memory.

본 개시의 예시적 실시예에 따른 시스템 온 칩의 동작 방법은, 프로세서가 제1 물리 주소를 포함하는 제1 엑세스 요청 신호를 라우터로 전송하는 단계, 상기 라우터가 상기 제1 물리 주소가 메모리의 물리 주소 영역에 대응하지 않는 것에 응답하여, 상기 제1 엑세스 요청 신호를 서브-프로세싱 회로로 전송하는 단계, 상기 서브-프로세싱 회로가 상기 제1 물리 주소를 상기 메모리의 상기 물리 주소 영역에 대응하는 제2 물리 주소로 변환하는 단계, 상기 서브-프로세싱 회로가 상기 제2 물리 주소를 포함하는 제2 엑세스 요청 신호를 상기 라우터로 전송하는 단계 및 상기 라우터가 상기 제2 엑세스 요청 신호를 상기 메모리로 전송하는 단계를 포함할 수 있다.A method of operating a system-on-chip according to an exemplary embodiment of the present disclosure includes transmitting, by a processor, a first access request signal including a first physical address to a router, wherein the router determines that the first physical address is a physical address of a memory. In response to not corresponding to an address area, transmitting the first access request signal to a sub-processing circuit, wherein the sub-processing circuit converts the first physical address to a second access request signal corresponding to the physical address area of the memory. Converting to a physical address, the sub-processing circuit transmitting a second access request signal including the second physical address to the router, and the router transmitting the second access request signal to the memory. may include.

본 개시의 기술적 사상에 따른 애플리케이션 프로세서, 시스템 온 칩 및 이의 동작 방법 따르면, 시스템 버스가 소프트웨어의 메모리 사용 요청을 구별하여 처리할 수 있어 소프트웨어를 실행하는 프로세서가 서브-프로세싱 회로를 통하여 메모리를 우회적으로 엑세스할 수 있다. 프로세서가 제공하지 않는 압축/압축 해제, 암호화/복호화, 프리-패치(pre-fetch) 등의 기능을 서브-프로세싱 회로가 지원할 수 있으므로 시스템 온 칩은 프로세서의 수정이나 부담(load)의 증가 없이 다양한 소프트웨어를 지원할 수 있으며 메모리 사용의 대역폭이 감소할 수 있다. 이에 따라 시스템 온 칩의 성능이 증가하고 소비 전력이 감소할 수 있다.According to the application processor, system-on-chip, and operating method thereof according to the technical idea of the present disclosure, the system bus can distinguish and process memory use requests of software, so that the processor executing the software indirectly accesses the memory through a sub-processing circuit. You can access it. Since the sub-processing circuit can support functions such as compression/decompression, encryption/decryption, and pre-fetch that are not provided by the processor, the system-on-chip can support various functions without modifying the processor or increasing the load. Software can be supported and the bandwidth of memory usage can be reduced. Accordingly, the performance of the system-on-chip can increase and power consumption can be reduced.

도 1은 본 개시의 예시적 실시예에 따른 시스템 온 칩을 개략적으로 나타내는 블록도이다.
도 2a는 본 개시의 예시적 실시예에 따른 페이지 테이블을 나타내고, 도 2b는 본 개시의 예시적 실시예에 따른 주소 영역들을 나타낸다.
도 3은 본 개시의 예시적 실시예에 따른 시스템 온 칩을 개략적으로 나타내는 블록도이다.
도 4a 및 도 4b는 본 개시의 예시적 실시예에 따른 시스템 온 칩에서 프로세서가 메모리에 엑세스하는 경로를 나타낸다.
도 5는 본 개시의 예시적 실시예에 따른 시스템 온 칩에서 프로세서가 메모리에 엑세스하는 방법을 나타내는 흐름도이다.
도 6은 본 개시의 예시적 실시예에 따른 시스템 온 칩의 동작을 나타낸다.
도 7은 본 개시의 예시적 실시예에 따른 시스템 온 칩(100d)의 동작을 나타낸다.
도 8a 및 도 8b는 본 개시의 예시적 실시예에 따른 시스템 온 칩(100e)의 독출 동작을 나타낸다.
도 9는 압축 버퍼(CBUF)에 저장된 압축된 이미지 데이터(CDT)를 예시적으로 나타낸다.
도 10은 본 개시의 예시적 실시예에 따른 시스템 온 칩(100)의 소프트웨어 계층을 보여준다.
도 11a는 본 개시의 비교예에 따른 가상 주소 공간과 유효 물리 주소 공간의 매칭을 나타내며, 도 11b는 본 개시의 비교예에 따른 메모리를 엑세스 방식 및 결과를 나타낸다.
도 12a는 본 개시의 예시적 실시예에 따른 가상 주소 공간과 유효 물리 주소 공간의 매칭을 나타내며, 도 12b는 본 개시의 예시적 실시예에 따른 API(Application Programing Interface)를 기반으로한 가상 주소 공간과 유효 물리 주소 공간의 매칭을 보여준다.
도 13은 본 개시의 예시적 실시예에 따른 애플리케이션 프로세서(200)의 구현예를 나타낸다.
도 14a 및 도 14b는 본 개시의 예시적 실시예에 따른 애플리케이션 프로세서(200)의 독출 동작 및 기입 동작을 나타낸다.
도 15는 본 개시의 예시적 실시예에 따른 주소 매칭 테이블의 일 예를 나타낸다.
도 16은 본 개시의 예시적 실시예에 따른 시스템 온 칩을 나타내는 블록도이다.
도 17은 본 개시의 예시적 실시예에 따른 애플리케이션 프로세서가 탑재되는 전자 장치를 나타내는 블록도이다.
1 is a block diagram schematically showing a system on a chip according to an exemplary embodiment of the present disclosure.
FIG. 2A shows a page table according to an exemplary embodiment of the present disclosure, and FIG. 2B shows address areas according to an exemplary embodiment of the present disclosure.
Figure 3 is a block diagram schematically showing a system-on-chip according to an exemplary embodiment of the present disclosure.
4A and 4B show a path through which a processor accesses memory in a system-on-chip according to an exemplary embodiment of the present disclosure.
FIG. 5 is a flowchart illustrating a method for a processor to access memory in a system-on-chip according to an exemplary embodiment of the present disclosure.
Figure 6 shows operation of a system-on-chip according to an example embodiment of the present disclosure.
Figure 7 shows the operation of the system-on-chip 100d according to an exemplary embodiment of the present disclosure.
FIGS. 8A and 8B illustrate a read operation of the system-on-chip 100e according to an exemplary embodiment of the present disclosure.
Figure 9 exemplarily shows compressed image data (CDT) stored in a compression buffer (CBUF).
Figure 10 shows the software layer of system-on-chip 100 according to an example embodiment of the present disclosure.
FIG. 11A shows matching of a virtual address space and an effective physical address space according to a comparative example of the present disclosure, and FIG. 11B shows a memory access method and results according to a comparative example of the present disclosure.
FIG. 12A shows matching of a virtual address space and an effective physical address space according to an exemplary embodiment of the present disclosure, and FIG. 12B illustrates a virtual address space based on an API (Application Programming Interface) according to an exemplary embodiment of the present disclosure. It shows the matching of the and effective physical address space.
Figure 13 shows an example implementation of an application processor 200 according to an example embodiment of the present disclosure.
14A and 14B illustrate read operations and write operations of the application processor 200 according to an exemplary embodiment of the present disclosure.
Figure 15 shows an example of an address matching table according to an exemplary embodiment of the present disclosure.
Figure 16 is a block diagram showing a system-on-chip according to an exemplary embodiment of the present disclosure.
Figure 17 is a block diagram showing an electronic device equipped with an application processor according to an exemplary embodiment of the present disclosure.

이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 상세한 설명에서 사용되는 부 또는 유닛(unit), 모듈(module), 블록(block) 등의 용어들을 참조하여 설명되는 구성 요소들 및 도면에 도시된 기능 블록들은 소프트웨어, 또는 하드웨어, 또는 그것들의 조합의 형태로 구현될 수 있다. 예시적으로, 소프트웨어는 기계 코드, 펌웨어, 임베디드 코드, 및 애플리케이션 소프트웨어일 수 있다. 예를 들어, 하드웨어는 전기 회로, 전자 회로, 프로세서, 컴퓨터, 집적 회로, 집적 회로 코어들, 압력 센서, 관성 센서, 멤즈(MEMS; microelectromechanical system), 수동 소자, 또는 그것들의 조합을 포함할 수 있다.Hereinafter, embodiments of the present invention will be described in detail with reference to the attached drawings. Components described with reference to terms such as unit, module, block, etc. used in the detailed description and functional blocks shown in the drawings are software, hardware, or a combination thereof. It can be implemented in the form By way of example, software may be machine code, firmware, embedded code, and application software. For example, the hardware may include an electrical circuit, an electronic circuit, a processor, a computer, an integrated circuit, integrated circuit cores, a pressure sensor, an inertial sensor, a microelectromechanical system (MEMS), a passive component, or a combination thereof. .

도 1은 본 개시의 예시적 실시예에 따른 시스템 온 칩을 개략적으로 나타내는 블록도이다. 1 is a block diagram schematically showing a system on a chip according to an exemplary embodiment of the present disclosure.

시스템 온 칩(100)은 전자 장치에 탑재될 수 있으며, 예를 들어 전자 장치는 스마트 폰, 태블릿(tablet) PC(Personal Computer), PDA(Personal Digital Assistant), PMP(portable Multimedia Player), 랩톱 컴퓨터, 웨어러블(wearable) 장치, GPS(Global Positional system) 장치, 전자책 단말기, 디지털방송용 단말기, MP3 플레이어, 디지털 카메라, 웨어러블 컴퓨터, 네비게이션(navigation), 드론(drone) 등과 같은 모바일 장치일 수 있다. 예를 들어, 전자 장치는 사물 인터넷(internet of things(IoT)) 장치, 가전 기기, 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 일 수도 있다. 시스템 온 칩(100)은 전자 장치의 동작을 제어하는 컨트롤러 또는 프로세서일 수 있다. 시스템 온 칩(100)은 애플리케이션 프로세서(application processor(AP)), 모바일 AP, 또는 컨트롤 칩을 의미할 수 있다. The system-on-chip 100 may be mounted on an electronic device, for example, a smart phone, a tablet personal computer (PC), a personal digital assistant (PDA), a portable multimedia player (PMP), or a laptop computer. , wearable devices, GPS (Global Positional system) devices, e-readers, digital broadcasting terminals, MP3 players, digital cameras, wearable computers, navigation, drones, etc. may be mobile devices. For example, the electronic device may be an internet of things (IoT) device, a home appliance, or an Advanced Drivers Assistance System (ADAS). The system-on-chip 100 may be a controller or processor that controls the operation of an electronic device. The system-on-chip 100 may refer to an application processor (AP), a mobile AP, or a control chip.

카메라, 스마트폰, 웨어러블 기기, 사물 인터넷(Internet of Things(IoT)) 기기, 가전 기기, 태블릿 PC(Personal Computer), PDA(Personal Digital Assistant), PMP(portable Multimedia Player), 네비게이션(navigation), 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 전자 기기에 탑재될 수 있다. 또한 이미지 센서(100)는 차량, 가구, 제조 설비, 도어, 각종 계측 기기 등에 부품으로서 구비되는 전자 기기에 탑재될 수 있다.Cameras, smartphones, wearable devices, Internet of Things (IoT) devices, home appliances, tablet PCs (Personal Computers), PDA (Personal Digital Assistants), PMPs (portable multimedia players), navigation, drones It can be installed in electronic devices such as drones and advanced driver assistance systems (ADAS). Additionally, the image sensor 100 can be mounted on electronic devices that are included as components in vehicles, furniture, manufacturing facilities, doors, and various measuring devices.

도 1을 참조하면, 시스템 온 칩(100)은 프로세서(110), 서브-프로세싱 회로(120), 메모리(130), 복수의 IP(140, 150) 및 시스템 버스(160)을 포함할 수 있다. 시스템 온 칩(100)은 이 외에도 통신 기능 모듈, 이미지 센서 모듈 등을 더 포함할 수 있다. 시스템 온 칩(100)의 구성들, 예컨대 서브-프로세싱 회로(120), 메모리(130), 및 복수의 IP(140, 150)는 시스템 버스(160)를 통해 데이터를 송수신할 수 있다. Referring to FIG. 1, the system-on-chip 100 may include a processor 110, a sub-processing circuit 120, a memory 130, a plurality of IPs 140 and 150, and a system bus 160. . In addition to this, the system-on-chip 100 may further include a communication function module, an image sensor module, etc. Components of the system on chip 100, such as the sub-processing circuit 120, memory 130, and a plurality of IPs 140 and 150, may transmit and receive data through the system bus 160.

프로세서(110)는 시스템 온 칩(100)의 메인 프로세서일 수 있으며, 시스템 온 칩(100)의 전반적인 동작을 제어할 수 있다. 프로세서(110)는 시스템 온 칩(100)이 탑재되는 전자 장치의 운영체제(OS) 및 다양한 애플리케이션들 (애플리케이션 소프트웨어들)을 실행할 수 있다. 프로세서(110)는 다양한 종류의 산술 연산들 및/또는 논리 연산들을 처리할 수 있다. 이를 위해, 프로세서(110)는 하나의 프로세서 코어(single core) 또는 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 프로세서(110)는 하나 또는 그 이상의 프로세서 코어들 각각이 다양한 연산들을 수행하는데 필요한 캐시 메모리들을 포함할 수 있다. 캐시 메모리들은 프로세서(110)가 애플리케이션을 실행하는데 필요한 명령들 및/또는 파라미터 값들을 임시로 저장할 수 있다.The processor 110 may be the main processor of the system-on-chip 100 and may control the overall operation of the system-on-chip 100. The processor 110 can run an operating system (OS) and various applications (application software) of an electronic device on which the system-on-chip 100 is mounted. Processor 110 may process various types of arithmetic operations and/or logical operations. To this end, the processor 110 may include one processor core (single core) or a plurality of processor cores (Multi-Core). The processor 110 may include cache memories necessary for each of one or more processor cores to perform various operations. Cache memories may temporarily store instructions and/or parameter values required for the processor 110 to execute an application.

프로세서(110)는 운영체제 및 애플리케이션들을 실행하는 과정에서 메모리(130)에 데이터를 저장하거나 또는 메모리(130)로부터 데이터를 독출(read) 할 수 있다. 예를 들어, 애플리케이션은 메모리(130)로부터 데이터를 읽어오고, 읽어온 데이터를 처리하고, 처리된 데이터를 다시 메모리(130)에 저장할 수 있다. 프로세서(110)는 데이터를 메모리(130)로부터 독출하고, 처리된 데이터를 메모리(130)로 기입하기 위하여 메모리(130)에 기입 또는 독출을 위한 엑세스 요청을 전송할 수 있으며, 엑세스 요청은 메모리(130)의 저장 영역들 중 데이터가 저장된 또는 기입될 영역을 나타내는 물리 주소를 포함할 수 있다. The processor 110 may store data in the memory 130 or read data from the memory 130 while executing the operating system and applications. For example, an application may read data from the memory 130, process the read data, and store the processed data back in the memory 130. The processor 110 may read data from the memory 130 and transmit an access request for writing or reading to the memory 130 to write the processed data into the memory 130. The access request may be sent to the memory 130. ) may include a physical address indicating the area where data is stored or to be written among the storage areas.

이때, 애플리케이션은 가상적으로 주어지는 가상 주소 공간으로부터 데이터를 독출하거나 가상 주소 공간에 데이터를 기입할 수 있으며, 프로세서(110)는 페이지 테이블(page table)(예를 들어, 도 2의 PGTB)을 이용하여, 가상 주소 공간을 나타내는 가상 주소(또는 논리 주소라고 함)를 실제 데이터가 저장되거나 또는 저장된 메모리(130)의 유효 물리 주소 공간의 복수의 주소 영역들 중 하나를 나타내는 물리 주소(physical address)로 변환할 수 있다. At this time, the application can read data from a virtually given virtual address space or write data into the virtual address space, and the processor 110 uses a page table (e.g., PGTB in FIG. 2). , Converting a virtual address (or referred to as a logical address) representing a virtual address space into a physical address representing one of a plurality of address areas of the effective physical address space of the memory 130 in which actual data is stored or stored. can do.

본 실시예에서, 페이지 테이블은 가상 주소를 메모리(130)의 유효 물리 주소 공간, 다시 말해서 실제 물리 주소 공간에 포함되는 주소 영역들 중 하나를 나타내는 물리 주소 및 유효 물리 주소 공간을 벗어나는 주소 영역들(예컨대 쉐도우 물리 주소 공간) 중 하나를 나타내는 물리 주소 중 하나에 맵핑할 수 있다. 이하, 본 개시에서, 메모리(130)의 유효 물리 주소 공간에 대응하는 물리 주소는 '유효 물리 주소(Effective Physical Address)'로, 지칭하고, 쉐도우 물리 주소 공간에 대응하는 물리 주소는 '쉐도우 물리 주소(shadow Physical Address)'로 지칭하기로 한다. In this embodiment, the page table stores a virtual address in the effective physical address space of the memory 130, that is, a physical address representing one of the address areas included in the actual physical address space, and an address area outside the effective physical address space ( For example, it can be mapped to one of the physical addresses representing one of the shadow physical address spaces. Hereinafter, in the present disclosure, the physical address corresponding to the effective physical address space of the memory 130 is referred to as an 'effective physical address', and the physical address corresponding to the shadow physical address space is referred to as a 'shadow physical address'. It will be referred to as ‘(shadow Physical Address)’.

도 2a는 본 개시의 예시적 실시예에 따른 페이지 테이블을 나타내고, 도 2b는 본 개시의 예시적 실시예에 따른 주소 영역들을 나타낸다.FIG. 2A shows a page table according to an exemplary embodiment of the present disclosure, and FIG. 2B shows address areas according to an exemplary embodiment of the present disclosure.

도 2a를 참조하면, 페이지 테이블(PGTB)은 가상 주소(VA) 및 물리 주소(PA)를 포함한다. 가상 주소(VA)는 가상 주소 공간(Virtual Address Space)(VAS)의 주소 영역들을 나타내고, 물리 주소(PA)는 유효 물리 주소 공간(Effective Physical Address Space)의 복수의 주소 영역들 및 쉐도우 물리 주소 공간(Shadow Physical Address Space)의 복수의 주소 영역들 중 하나의 주소 영역을 나타낸다. 가상 주소 공간(VAS)은 가상 메모리 기법으로 제공되는 주소 공간으로서, 프로세서(도 1의 110)에서 운영체제 및 애플리케이션들이 인식할 수 있는 주소 공간이다. 유효 물리 주소 공간(EPAS)은 시스템의 메모리, 예를 들어 메모리(130)와 동일한 크기를 가질 수 있다. 쉐도우 물리 주소 공간(SPAS)는 시스템의 메모리의 크기를 벗어나는 영역이다. Referring to FIG. 2A, the page table (PGTB) includes a virtual address (VA) and a physical address (PA). The virtual address (VA) represents address areas of the virtual address space (VAS), and the physical address (PA) represents a plurality of address areas of the effective physical address space and the shadow physical address space. Indicates one address area among multiple address areas of (Shadow Physical Address Space). The virtual address space (VAS) is an address space provided by a virtual memory technique, and is an address space that can be recognized by the operating system and applications in the processor (110 in FIG. 1). The effective physical address space (EPAS) may have the same size as the system's memory, for example, memory 130. Shadow physical address space (SPAS) is an area that exceeds the size of the system's memory.

도 2b를 참조하면, 메모리(130)가 2GB(gigabyte)의 용량을 가지고, 시스템 온 칩(100)이 32bit 시스템일 경우, 주소 영역은 0x0000_0000 내지 0x7fff_ffff의 주소를 갖는 2GB의 제1 주소 영역(AR1), 0x8000_0000 내지 0xbfff_ffff의 주소를 갖는 1GB의 제2 주소 영역(AR2) 및 0xc000_0000 내지 0xffff_ffff의 주소를 갖는 1GB의 제3 주소 영역(AR3)을 포함할 수 있다. 제1 주소 영역(AR1)이 유효 물리 주소 공간(EPAS)으로 설정되고, 제1 주소 영역(AR1)을 벗어난 주소 영역들 중 하나, 예를 들어, 제3 주소 영역(AR3)이 쉐도우 물리 주소 공간(SPAS)으로 설정될 수 있다. Referring to FIG. 2B, when the memory 130 has a capacity of 2GB (gigabyte) and the system-on-chip 100 is a 32-bit system, the address area is a 2GB first address area (AR1) with addresses from 0x0000_0000 to 0x7fff_ffff. ), a second address area (AR2) of 1 GB with addresses from 0x8000_0000 to 0xbfff_ffff, and a third address area (AR3) of 1 GB with addresses from 0xc000_0000 to 0xffff_ffff. The first address area (AR1) is set to the effective physical address space (EPAS), and one of the address areas outside the first address area (AR1), for example, the third address area (AR3), is a shadow physical address space. It can be set to (SPAS).

실시예에 있어서, 가상 주소 공간(VAS)은 복수의 페이지들(PN0 내지 PNn, n은 3 이상의 정수)로 나뉠 수 있으며, 복수의 페이지들(PN0 내지 PNn) 각각은 가상 주소(VA)가 나타내는 주소 영역이다. 복수의 페이지들(PN0 내지 PNn) 각각의 사이즈는 4KB(kilobyte)일 수 있으나, 이에 제한되는 것은 아니다. In an embodiment, the virtual address space (VAS) may be divided into a plurality of pages (PN0 to PNn, n is an integer of 3 or more), and each of the plurality of pages (PN0 to PNn) is represented by a virtual address (VA). This is the address area. The size of each of the plurality of pages (PN0 to PNn) may be 4 kilobytes (KB), but is not limited thereto.

유효 물리 주소 공간(EPAS) 및 쉐도우 물리 주소 공간(SPAS)은 복수의 프레임들(FN0 내지 FNn)로 나뉠 수 있으며, 가상 주소(VA)에 대응하는 물리 주소(PA)는 복수의 프레임들(FN0 내지 FNn)을 나타낼 수 있다. 복수의 프레임들(FN0 내지 FNn) 중 일부는 유효 물리 주소 공간(EPAS)의 주소 영역들(이하 유효 물리 주소 영역이라고 함)이고, 다른 일부는 쉐도우 물리 주소 공간(SPAS)의 주소 영역들(이하 쉐도우 물리 주소 영역이라고 함)일 수 있다. 예를 들어, 도 2a에 도시된 프레임들 FN1, FN7 및 FN8은 유효 물리 주소 영역들이고, 프레임들 FNn-1 및 FNn은 쉐도우 물리 주소 영역들일 수 있다. 물리 주소(PA) 중 유효 물리 주소는 유효 물리 주소 영역들, 예컨대 프레임들 FN1, FN7 및 FN8 중 하나를 나타내고, 쉐도우 물리 주소는 쉐도우 물리 주소 영역들, 예컨대 프레임들 FNn-1 및 FNn 중 하나를 나타낼 수 있다. The effective physical address space (EPAS) and shadow physical address space (SPAS) can be divided into a plurality of frames (FN0 to FNn), and the physical address (PA) corresponding to the virtual address (VA) is divided into a plurality of frames (FN0). to FNn). Some of the plurality of frames (FN0 to FNn) are address areas of the effective physical address space (EPAS) (hereinafter referred to as effective physical address areas), and other parts are address areas of the shadow physical address space (SPAS) (hereinafter referred to as effective physical address areas). (referred to as a shadow physical address area). For example, frames FN1, FN7, and FN8 shown in Figure 2A may be valid physical address areas, and frames FNn-1 and FNn may be shadow physical address areas. Among the physical addresses (PA), a valid physical address represents one of the valid physical address areas, such as frames FN1, FN7 and FN8, and a shadow physical address represents one of the shadow physical address areas, such as frames FNn-1 and FNn. It can be expressed.

페이지 테이블(PGTB)의 가상 주소(VA)들은 복수의 페이지들(PN0 내지 PNn)에 순차적으로 대응하고, 가상 주소(VA)들에 맵핑되는 물리 주소(PA)들은 복수의 프레임들(FN0 내지 FNn)에 순차적 또는 비순차적으로 대응할 수 있다. 가상 주소(VA)들과 물리 주소(PA)들 간의 연결은 항구적인 것은 아니며, 다양한 이벤트에 따라 연결이 끊기거나 또는 조정될 수 있다. Virtual addresses (VA) of the page table (PGTB) sequentially correspond to a plurality of pages (PN0 to PNn), and physical addresses (PA) mapped to the virtual addresses (VA) correspond to a plurality of frames (FN0 to FNn). ) can be responded to sequentially or non-sequentially. The connection between virtual addresses (VA) and physical addresses (PA) is not permanent and may be disconnected or adjusted depending on various events.

계속하여 도 1을 참조하면, 프로세서(110)는 메모리(130)를 엑세스하고자 할 때, 페이지 테이블(도 2a의 PGTB)를 기초로 가상 주소에 맵핑되는 유효 물리 주소 또는 쉐도우 물리 주소를 엑세스 주소로서 생성하고, 엑세스 주소를 포함하는 엑세스 요청을 시스템 버스(160)로 출력할 수 있다. 프로세서(110)는 유효 물리 주소를 기초로 메모리(130)를 직접 엑세스할 수 있다. 또한, 프로세서(110)는 쉐도우 물리 주소를 기초로 서브-프로세싱 회로(120)를 통해 우회적으로 메모리(130)에 엑세스할 수 있다. 이에 대해서는, 도 4a 내지 도 15를 참조하여 상세하게 후술하기로 한다.Continuing to refer to FIG. 1, when the processor 110 wants to access the memory 130, the processor 110 uses an effective physical address or a shadow physical address mapped to a virtual address based on the page table (PGTB in FIG. 2A) as an access address. An access request including an access address can be generated and output to the system bus 160. The processor 110 may directly access the memory 130 based on a valid physical address. Additionally, the processor 110 may indirectly access the memory 130 through the sub-processing circuit 120 based on the shadow physical address. This will be described in detail later with reference to FIGS. 4A to 15.

서브-프로세싱 회로(120)는 애플리케이션이 메모리(130)로부터 독출하고자 하는 데이터 또는 메모리(130)에 기입할 데이터에 대하여 프로세서(110)가 제공하지 않는 기능, 예컨대 데이터 처리를 지원할 수 있다. 서브-프로세싱 회로(120)는 쉐도우 물리 주소를 메모리(130)의 물리 주소 영역을 나타내는 유효 물리 주소로 변환하고, 유효 물리 주소를 기초로 메모리(130)로부터 데이터를 독출할 수 있다. 서브-프로세싱 회로(120)는 데이터를 처리할 수 있으며, 처리된 데이터를 프로세서(110)에 전달할 수 있다. 또한, 서브-프로세싱 회로(120)는 쉐도우 물리 주소와 함께 프로세서(110)로부터 기입 요청되는 데이터를 처리하고, 쉐도우 물리 주소를 유효 물리 주소로 변환하고, 유효 물리 주소를 기초로 메모리(130)에 처리된 데이터를 기입(저장)할 수 있다. The sub-processing circuit 120 may support functions that the processor 110 does not provide, such as data processing, for data that an application wants to read from the memory 130 or data to be written to the memory 130. The sub-processing circuit 120 may convert the shadow physical address into a valid physical address representing the physical address area of the memory 130 and read data from the memory 130 based on the valid physical address. The sub-processing circuit 120 may process data and transmit the processed data to the processor 110. In addition, the sub-processing circuit 120 processes data requested to be written from the processor 110 along with the shadow physical address, converts the shadow physical address into a valid physical address, and stores data in the memory 130 based on the valid physical address. Processed data can be entered (stored).

실시예에 있어서, 서브-프로세싱 회로(120)는 수신되는 데이터를 압축(compression) 또는 압축해제(decompression)할 수 있다. 애플리케이션이 독출하고자 하는 메모리(130)에 저장된 데이터가 압축된 데이터이고, 프로세서(110)가 압축해제 기능을 제공하지 않을 경우, 메모리(130)로부터 해당 데이터를 읽어와도, 애플리케이션이 데이터를 이용할 수 없다. 서브-프로세싱 회로(120)는 쉐도우 물리 주소를 기초로 메모리(130)로부터 데이터를 읽어와서 압축해제하고, 압축해제된 데이터를 프로세서(130)로 전송할 수 있다. 또는 서브-프로세싱 회로(120)는 쉐도우 물리 주소와 함께 프로세서(110)로부터 제공되는 데이터를 압축하고, 압축된 데이터를 메모리(130)에 기입(저장)할 수 있다. In embodiments, sub-processing circuitry 120 may compress or decompress received data. If the data stored in the memory 130 that the application wants to read is compressed data and the processor 110 does not provide a decompression function, the application cannot use the data even if the data is read from the memory 130. does not exist. The sub-processing circuit 120 may read data from the memory 130 based on the shadow physical address, decompress it, and transmit the decompressed data to the processor 130. Alternatively, the sub-processing circuit 120 may compress data provided from the processor 110 along with the shadow physical address, and write (store) the compressed data in the memory 130.

실시예에 있어서, 서브-프로세싱 회로(120)는 수신되는 데이터를 암호화 또는 복호화 할 수 있다. 예를 들어, 서브-프로세싱 회로(120)는 프로세서(110)로부터 제공되는 데이터, 다시 말해서 애플리케이션이 메모리(130)에 기입 요청하는 데이터를 메모리(130)에 저장하기 전에 암호화할 수 있다. 데이터를 메모리(130)에 저장 전 암호화할 경우, cold-boot attack과 같은 공격으로부터 데이터를 보호할 수 있다. 서브-프로세싱 회로(120)의 암호화 및 복호화 처리는 프로세서(110)의 작동과 분리된 과정이므로, 보안 기능으로 인해 발생할 수 있는 애플리케이션의 실행의 성능 하락이 발생하지 않으며, 전용 하드웨어를 사용함으로써, 프로세서(110)가 보안 기능을 제공하는 경우보다 전력 효율이 높을 수 있다.In embodiments, sub-processing circuit 120 may encrypt or decrypt received data. For example, the sub-processing circuit 120 may encrypt data provided from the processor 110, that is, data requested by an application to be written to the memory 130, before storing it in the memory 130. When data is encrypted before being stored in the memory 130, data can be protected from attacks such as cold-boot attacks. Since the encryption and decryption processing of the sub-processing circuit 120 is a process separate from the operation of the processor 110, there is no performance degradation in application execution that may occur due to security functions, and by using dedicated hardware, the processor Power efficiency may be higher than if 110 provides security functions.

실시예에 있어서, 서브-프로세싱 회로(120)는 시스템 버스(160)와의 사이에 캐시 코히어런시 프로토콜(cache coherence protocol)이 적용되는 별도의 채널을 통해 프로세서(110)가 엑세스 할 것을 예상되는 데이터를 프리-패치(pre-fetch)할 수 있다. In an embodiment, the sub-processing circuit 120 is expected to be accessed by the processor 110 through a separate channel to which the cache coherence protocol is applied between the system bus 160 and the sub-processing circuit 120. Data can be pre-fetched.

메모리(130)는 프로세서(110), 서브-프로세싱 회로(120), 복수의 IP(140, 150)에 의해 처리된 또는 처리될 데이터를 일시적으로 저장할 수 있다. 메모리(130)는 DRAM(Dynamic Random Access Memory), SRAM(Static RAM), SDRAM(Synchronous RAM) 등과 같은 휘발성 메모리, 및/또는 PRAM(Phase-change RAM), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferroelectric RAM) 등과 같은 비휘발성 메모리를 포함할 수 있다. 다만, 설명의 용이함을 위해, 이하 메모리(130)는 DRAM이라 가정한다. 도 1에서 메모리(130)는 시스템 온 칩(100) 내에 탑재되는 것으로 도시되었으나, 이에 제한되는 것은 아니며, 메모리(130)는 시스템 온 칩(100)과는 별도의 칩으로 구현되고, 시스템 온 칩(100) 내에 구비되는 메모리 컨트롤러를 통해 시스템 온 칩(100)의 다른 구성들과 데이터를 송수신할 수 있다. The memory 130 may temporarily store data processed or to be processed by the processor 110, the sub-processing circuit 120, and the plurality of IPs 140 and 150. The memory 130 may include volatile memory such as Dynamic Random Access Memory (DRAM), Static RAM (SRAM), Synchronous RAM (SDRAM), and/or Phase-change RAM (PRAM), Magneto-resistive RAM (MRAM), and ReRAM ( It may include non-volatile memory such as Resistive RAM (RAM), Ferroelectric RAM (FRAM), etc. However, for ease of explanation, it is assumed hereinafter that the memory 130 is DRAM. In FIG. 1, the memory 130 is shown as being mounted within the system-on-chip 100, but is not limited thereto. The memory 130 is implemented as a separate chip from the system-on-chip 100, and is not limited to this. Data can be transmitted and received with other components of the system-on-chip 100 through a memory controller provided in 100.

메모리(130)는 시스템 메모리 일 수 있다. 메모리(130)에는 부팅 시에 운영체제(OS), 애플리케이션들 및/또는 펌웨어들이 로딩된다. 예를 들어, 시스템 온 칩(100)이 탑재된 전자 기기의 부팅 시에 스토리지에 저장된 OS 이미지가 부팅 시퀀스에 따라 메모리(130)에 로딩될 수 있다. 운영 체제(OS)에 의해 시스템 온 칩(100)의 전반적인 입출력 동작들이 지원될 수 있다. 나아가, 사용자에 의해 선택되거나 기본적인 서비스 제공을 위해, (예컨대, 그래픽 처리와 관련된) 애플리케이션들 및/또는 펌웨어들이 메모리(130)에 로딩될 수 있다. Memory 130 may be system memory. An operating system (OS), applications, and/or firmware are loaded into the memory 130 during booting. For example, when an electronic device equipped with the system-on-chip 100 is booted, the OS image stored in the storage may be loaded into the memory 130 according to the boot sequence. Overall input/output operations of the system-on-chip 100 may be supported by an operating system (OS). Furthermore, applications and/or firmware (eg, related to graphics processing) may be loaded into the memory 130 to select by the user or to provide basic services.

복수의 IP(140, 150) 각각은 시스템 온 칩(100) 내에서 특정 기능을 수행하도록 설계된 단위 모듈 또는 단위 모듈의 결합일 수 있다. IP는 기능 모듈 또는 프로세싱 회로로 지칭될 수 있다. 복수의 IP(140, 150), 예컨대 제1 IP (140) 및 제2 IP(150)는 GPU(graphics processing unit), ISP(image signal processor), DSP(digital signal processor), PMU(power management unit), CMU(clock management unit), USB (universal serial bus), PCI(peripheral component interconnect), 무선 인터페이스(wireless interface), 컨트롤러(controller), 임베디드 소프트웨어(embedded software), 코덱(codec), 비디오 모듈(예컨대, 카메라 인터페이스(camera interface), JPEG(Joint Photographic Experts Group) 프로세서, 비디오 프로세서(video processor), 또는 믹서(mixer), 등), 3D 그래픽스 코어(3-dimentional graphics core), 오디오 시스템(audio system), 또는 드라이버 (driver) 등을 의미할 수 있다. 복수의 IP(140, 150)는 하드웨어, 소프트웨어(또는 펌웨어) 또는 하드웨어와 소프트웨어의 조합으로 구현될 수 있다. 도 1에서, 프로세서(110), 및 서브-프로세싱 회로(120)는 복수의 IP(140, 150)와는 별개의 구성으로 도시되었으나, 프로세서(110), 및 서브-프로세싱 회로(120) 또한 IP로 지칭될 수 있다. Each of the plurality of IPs 140 and 150 may be a unit module or a combination of unit modules designed to perform a specific function within the system on chip 100. IP may be referred to as a functional module or processing circuit. A plurality of IPs 140 and 150, for example, the first IP 140 and the second IP 150, include a graphics processing unit (GPU), an image signal processor (ISP), a digital signal processor (DSP), and a power management unit (PMU). ), CMU (clock management unit), USB (universal serial bus), PCI (peripheral component interconnect), wireless interface, controller, embedded software, codec, video module ( For example, camera interface, JPEG (Joint Photographic Experts Group) processor, video processor, or mixer, etc.), 3-dimentional graphics core, audio system ), or driver, etc. The plurality of IPs 140 and 150 may be implemented as hardware, software (or firmware), or a combination of hardware and software. In FIG. 1, the processor 110 and the sub-processing circuit 120 are shown as separate configurations from the plurality of IPs 140 and 150, but the processor 110 and the sub-processing circuit 120 are also configured as IPs. can be referred to.

시스템 버스(160)는 시스템 온 칩(100) 내의 구성들 간, 예컨대 프로세서(110), 서브 프로세싱 회로(20), 메모리(130), 복수의 IP(140, 150) 간을 연결하며, 구성들 간에 데이터 또는 신호의 전송 경로를 제공할 수 있다. The system bus 160 connects components within the system-on-chip 100, such as the processor 110, the sub-processing circuit 20, the memory 130, and a plurality of IPs 140 and 150. It can provide a transmission path for data or signals between devices.

실시예에 있어서, 시스템 버스(160)는 NoC(Network-on-Chip) 방식으로 구현될 수 있다. NoC 방식은 일반적인 컴퓨터 또는 통신 기기 사이의 패킷(packet) 또는 서킷(circuit) 네트워크 기술을 반도체 칩 내에 응용하여 반도체 칩 내의 프로세싱 회로들을 연결하는 방식이다. 시스템 버스(160)는 시스템 온 칩(SoC) 내의 프로세싱 회로들, 다시 말해서 프로세서(110), 서브-프로세싱 회로(120), 메모리(130), 복수의 IP(140, 150) 간에 데이터 및 신호의 전송 경로를 제공하기 위하여 라우터 및 스위칭 회로를 포함할 수 있다. In an embodiment, the system bus 160 may be implemented in a Network-on-Chip (NoC) manner. The NoC method is a method of connecting processing circuits within a semiconductor chip by applying packet or circuit network technology between general computers or communication devices to the semiconductor chip. The system bus 160 transfers data and signals between processing circuits in a system-on-chip (SoC), that is, the processor 110, the sub-processing circuit 120, the memory 130, and a plurality of IPs 140 and 150. It may include routers and switching circuits to provide a transmission path.

실시예에 있어서, 시스템 버스(160)는 소정의 표준 버스 규격을 갖는 프로토콜이 적용된 네트워크 온 칩 형태로 구현될 수 있다. 예를 들어, 표준 버스 규격으로서, ARM(Advanced RISC Machine) 사의 AMBA(Advanced Microcontroller Bus Architecture) 프로토콜이 적용될 수 있다. AMBA 프로토콜의 버스 타입에는 AHB(Advanced High-Performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface), AXI4, ACE(AXI Coherency Extensions) 등이 포함될 수 있다. 전술한 버스 타입들 중 AXI는 기능 블록들 사이의 인터페이스 프로토콜로서, 다중 아웃스탠딩 어드레스(multiple outstanding address) 기능과 데이터 인터리빙(data interleaving) 기능 등을 제공한다. 이외에도, 소닉사(SONICs Inc.)의 uNetwork 나 IBM의 CoreConnect, OCP-IP의 오픈 코어 프로토콜(Open Core Protocol) 등 다른 타입의 프로토콜이 시스템 버스(160)에 적용되어도 무방하다.In an embodiment, the system bus 160 may be implemented in the form of a network-on-chip to which a protocol having a predetermined standard bus standard is applied. For example, as a standard bus standard, the Advanced Microcontroller Bus Architecture (AMBA) protocol of Advanced RISC Machine (ARM) may be applied. Bus types of the AMBA protocol may include Advanced High-Performance Bus (AHB), Advanced Peripheral Bus (APB), Advanced eXtensible Interface (AXI), AXI4, and AXI Coherency Extensions (ACE). Among the aforementioned bus types, AXI is an interface protocol between functional blocks and provides multiple outstanding address functions and data interleaving functions. In addition, other types of protocols, such as SONICs Inc.'s uNetwork, IBM's CoreConnect, or OCP-IP's Open Core Protocol, may be applied to the system bus 160.

시스템 버스(160)는 시스템 온 칩(100)의 일 구성, 예를 들어, 프로세서(110), 서브-프로세싱 회로(120), 제1 IP(140) 및 제2 IP(150)으로부터 엑세스 요청을 수신하고, 엑세스 요청에 포함된 물리 주소, 다시 말해서 엑세스 주소를 기초로 엑세스 요청을 해당 물리 주소를 갖는 구성, 예컨대 메모리(130)로 전송할 수 있다. 또한, 시스템 버스(160)는 엑세스 요청에 대한 응답을 엑세스 요청을 제공한 구성으로 전송할 수 있다. The system bus 160 receives access requests from one component of the system on chip 100, for example, the processor 110, the sub-processing circuit 120, the first IP 140, and the second IP 150. The access request may be received and transmitted based on the physical address included in the access request, that is, the access address, to a component having the corresponding physical address, for example, the memory 130. Additionally, the system bus 160 may transmit a response to the access request to the configuration that provided the access request.

본 개시에 따른 시스템 온 칩(100)에서, 시스템 버스(160)는 프로세서(110)로부터 수신되는 엑세스 요청에 포함되는 물리 주소, 다시 말해서 엑세스 주소가 유효 물리 주소이면, 엑세스 요청을 메모리(130)로 전송할 수 있다. 이에 따라, 프로세서(110)는 유효 물리 주소를 기초로 메모리(130)를 직접 엑세스할 수 있다. 본 개시에서, 메모리(130)를 '직접 엑세스한다'는 것은 다른 프로세싱 회로를 거치지 않는 다는 것을 의미하며, 시스템 버스(160)를 통한 엑세스를 포함한다. In the system-on-chip 100 according to the present disclosure, the system bus 160 sends the access request to the memory 130 if the physical address included in the access request received from the processor 110, that is, the access address is a valid physical address. It can be sent to . Accordingly, the processor 110 can directly access the memory 130 based on the valid physical address. In the present disclosure, 'directly accessing' the memory 130 means not going through another processing circuit, and includes access through the system bus 160.

시스템 버스(160)는 물리 주소가 쉐도우 물리 주소이면, 엑세스 요청을 서브-프로세싱 회로(120)로 전송할 수 있다. 전술한 바와 같이, 서브-프로세싱 회로(120)는 쉐도우 물리 주소를 유효 물리 주소로 변환할 수 있다. 시스템 버스(160)는 서브-프로세싱 회로(120)로부터 유효 물리 주소를 포함하는 엑세스 요청을 수신하고, 엑세스 요청을 메모리(130)로 전송할 수 있다. 이에 따라, 프로세서(110)는 쉐도우 물리 주소를 기초로 서브-프로세싱 회로(120)를 통해 메모리(130)를 우회적으로 엑세스할 수 있다. 본 개시에서, 메모리(130)를 '우회적으로 엑세스한다'는 것은 서브-프로세싱 회로(120)와 같은 프로세싱 회로를 거친다는 것을 의미한다. If the physical address is a shadow physical address, the system bus 160 may transmit an access request to the sub-processing circuit 120. As described above, the sub-processing circuit 120 may convert the shadow physical address to a valid physical address. The system bus 160 may receive an access request including a valid physical address from the sub-processing circuit 120 and transmit the access request to the memory 130 . Accordingly, the processor 110 can indirectly access the memory 130 through the sub-processing circuit 120 based on the shadow physical address. In the present disclosure, 'accessing' the memory 130 indirectly means going through a processing circuit, such as the sub-processing circuit 120.

이와 같이, 본 개시의 예시적 실시예에 따른 시스템 온 칩(100)에서, 페이지 테이블(도 2a의 PGTB)은 물리 주소 영역에 대응하는 유효 물리 주소, 및 물리 주소 영역 이외의 주소 공간인 쉐도우 물리 주소 영역에 대응하는 쉐도우 물리 주소를 포함하고, 프로세서(110)는 시스템 버스(160)를 통해 직접 메모리(130)를 엑세스하거나 또는 시스템 버스(160) 및 서브-프로세싱 회로(120)를 통해 우회적으로 메모리(130)를 엑세스할 수 있다. 서브-프로세싱 회로(120)는 애플리케이션을 실행함에 있어서, 프로세서(110)가 제공하지 않는 기능, 예를 들어 압축/압축해제 기능, 및/또는 암호화/복호화 기능을 제공할 수 있다. 따라서, 프로세서(110)의 수정이나 부담(load) 증가 없이, 다양한 애플리케이션을 지원할 수 있다. 또한, 압축/압축해제 기능이 제공됨으로써, 메모리(130) 사용의 대역폭(bandwidth)이 감소할 수 있으며, 따라서, 시스템 온 칩(100)의 성능이 증가하고 소비 전력이 감소할 수 있다. As such, in the system-on-chip 100 according to an exemplary embodiment of the present disclosure, the page table (PGTB in FIG. 2A) includes an effective physical address corresponding to the physical address area, and a shadow physical address space that is an address space other than the physical address area. Contains a shadow physical address corresponding to the address area, and the processor 110 accesses the memory 130 directly through the system bus 160 or indirectly through the system bus 160 and the sub-processing circuit 120. The memory 130 can be accessed. When executing an application, the sub-processing circuit 120 may provide functions that the processor 110 does not provide, such as compression/decompression functions and/or encryption/decryption functions. Accordingly, various applications can be supported without modification or increase in load on the processor 110. Additionally, by providing a compression/decompression function, the bandwidth of memory 130 usage can be reduced, and thus the performance of the system-on-chip 100 can be increased and power consumption can be reduced.

도 3은 본 개시의 예시적 실시예에 따른 시스템 온 칩을 개략적으로 나타내는 블록도이다.Figure 3 is a block diagram schematically showing a system-on-chip according to an exemplary embodiment of the present disclosure.

도 3을 참조하면, 시스템 온 칩(100a)는 프로세서(110), 서브-프로세싱 회로(120), 복수의 IP(140, 150), 시스템 버스(160) 및 메모리 컨트롤러(170)를 포함할 수 있다. 도 3은 도 1의 시스템 온 칩의 변형예이다. 따라서, 중복되는 설명은 생략하기로 한다. Referring to FIG. 3, the system-on-chip 100a may include a processor 110, a sub-processing circuit 120, a plurality of IPs 140 and 150, a system bus 160, and a memory controller 170. there is. FIG. 3 is a modified example of the system-on-chip of FIG. 1. Therefore, overlapping descriptions will be omitted.

본 실시예에서, 메모리(200)는 시스템 온 칩(100a)의 외부에 별도의 칩으로 구현될 수 있다. 메모리(200)는 시스템 메모리일 수 있으며, 도 1의 메모리(130)에 적용될 수 있는 다양한 종류의 메모리들이 메모리(200)에 적용될 수 있다. In this embodiment, the memory 200 may be implemented as a separate chip outside the system-on-chip 100a. The memory 200 may be a system memory, and various types of memories that can be applied to the memory 130 of FIG. 1 can be applied to the memory 200.

메모리 컨트롤러(170)는 시스템 버스(160)로부터 엑세스 주소를 포함하는 엑세스 요청을 수신하고, 엑세스 요청을 메모리(200)로 전송할 수 있다. 또한 메모리 컨트롤러(170)는 엑세스 요청에 따른 처리 결과 또는 응답을 시스템 버스(160)로 전송할 수 있다. The memory controller 170 may receive an access request including an access address from the system bus 160 and transmit the access request to the memory 200 . Additionally, the memory controller 170 may transmit a processing result or response according to an access request to the system bus 160.

도 4a 및 도 4b는 본 개시의 예시적 실시예에 따른 시스템 온 칩(100b)에서 프로세서가 메모리에 엑세스하는 경로를 나타내며, 도 5는 본 개시의 예시적 실시예에 따른 시스템 온 칩(100b)에서 프로세서가 메모리에 엑세스하는 방법을 나타내는 흐름도이다. FIGS. 4A and 4B show a path through which a processor accesses memory in the system-on-chip 100b according to an exemplary embodiment of the present disclosure, and FIG. 5 illustrates a path for the system-on-chip 100b according to an exemplary embodiment of the present disclosure. This is a flowchart showing how the processor accesses memory.

도 4a 및 도 4b를 참조하면, 시스템 온 칩(100b)은 프로세서(110), 서브-프로세싱 회로(120), 메모리(130), 및 라우터(161)을 포함할 수 있다. 라우터(161)는 도 1의 시스템 버스(160)에 포함될 수 있다. 시스템 온 칩(100b)은 도 1을 참조하여 설명한 다른 구성들을 더 포함할 수 있다. 본 실시예에서 메모리(130)가 시스템 온 칩(100b) 내에 구비되는 것으로 도시되었으나, 이에 제한되는 것은 아니며, 도 3을 참조하여 설명한 바와 같이, 메모리(130)은 시스템 온 칩(100b)의 외부에 별도의 칩으로 구현될 수 있다. 이때, 시스템 온 칩(100b)은 메모리(130)와의 통신 경로를 제공하는 메모리 컨트롤러(도 3의 170)를 더 구비할 수 있다. Referring to FIGS. 4A and 4B , the system-on-chip 100b may include a processor 110, a sub-processing circuit 120, a memory 130, and a router 161. Router 161 may be included in system bus 160 of FIG. 1 . The system-on-chip 100b may further include other components described with reference to FIG. 1 . In this embodiment, the memory 130 is shown as being provided within the system-on-chip 100b, but is not limited thereto. As explained with reference to FIG. 3, the memory 130 is external to the system-on-chip 100b. It can be implemented as a separate chip. At this time, the system-on-chip 100b may further include a memory controller (170 in FIG. 3) that provides a communication path with the memory 130.

도 5를 참조하면, 프로세서(110)는 제1 엑세스 주소를 포함하는 제1 엑세스요청 신호를 생성할 수 있다(S110). 프로세서(110)는 애플리케이션을 실행할 수 있으며, 애플리케이션에 대응하는 본 개시의 예시적 실시예에 따른 페이지 테이블(예컨대 도2a의PGTB)을 운영한다. 프로세서(110)는 애플리케이션이 메모리(130)를 엑세스하기 위하여 발행한 가상 주소(도 2a의 VA)를 페이지 테이블(도 2a의 PGTB)을 이용하여 물리 주소(도 2a의 PA)로 변환할 수 있다. 이때, 물리 주소(PA)는 유효 물리 주소 또는 쉐도우 물리 주소 일 수 있다. 프로세서(110)는 유효 물리 주소 또는 쉐도우 물리 주소를 제1 엑세스 주소(AA1)로서 포함하는 제1 엑세스 요청 신호를 생성할 수 있다. Referring to FIG. 5, the processor 110 may generate a first access request signal including a first access address (S110). Processor 110 may execute an application and operate a page table (e.g., PGTB in FIG. 2A) according to an exemplary embodiment of the present disclosure corresponding to the application. The processor 110 may convert the virtual address (VA in FIG. 2A) issued by the application to access the memory 130 into a physical address (PA in FIG. 2A) using the page table (PGTB in FIG. 2A). . At this time, the physical address (PA) may be a valid physical address or a shadow physical address. The processor 110 may generate a first access request signal including a valid physical address or a shadow physical address as the first access address (AA1).

프로세서(110)는 제1 엑세스 주소(AA1)를 포함하는 메모리(130)에 대한 제1엑세스 요청 신호(예를 들어 기입 요청 커맨드 또는 독출 요청 커맨드)를 시스템 버스(도 1의 160)로 전송할 수 있다(S120). 제1엑세스 요청 신호는 시스템 버스(160) 내의 라우터(161)로 전송될 수 있다. The processor 110 may transmit a first access request signal (for example, a write request command or a read request command) for the memory 130 including the first access address (AA1) to the system bus (160 in FIG. 1). There is (S120). The first access request signal may be transmitted to the router 161 within the system bus 160.

라우터(161)는 제1 엑세스 주소(AA1)가 쉐도우 물리 주소 영역에 대응하는지를 판단할 수 있다(S130). 라우터(161)는 쉐도우 물리 주소 영역에 대응하는 쉐도우 물리 주소에 대한 정보를 포함할 수 있으며, 라우터(161)는 쉐도우 물리 주소에 대한 정보를 기초로 제1 엑세스 주소가 쉐도우 물리 주소인지 여부를 판단할 수 있다. The router 161 may determine whether the first access address (AA1) corresponds to the shadow physical address area (S130). The router 161 may include information about the shadow physical address corresponding to the shadow physical address area, and the router 161 determines whether the first access address is a shadow physical address based on the information about the shadow physical address. can do.

제1 엑세스 주소(AA1)가 쉐도우 물리 주소 영역에 대응하지 않는다고 판단되면, 라우터(161)는 제1 엑세스 요청 신호를 메모리로 전송할 수 있다(S140). 라우터(161)는 수신되는 엑세스 주소를 메모리(130) 또는 서브-프로세싱 회로(120)로 전송할 수 있다. If it is determined that the first access address (AA1) does not correspond to the shadow physical address area, the router 161 may transmit a first access request signal to the memory (S140). The router 161 may transmit the received access address to the memory 130 or the sub-processing circuit 120.

라우터(161)는 제1 엑세스 주소(AA1)가 물리 주소 영역(도 2A의 PAS)에 대응한다고 판단되면, 도 4a에 도시된 바와 같이, 제1 엑세스 주소(AA1)를 메모리(130)로 전송할 수 있다. 다시 말해서, 라우터(161)는 제1 엑세스 주소(AA1)가 유효 물리 주소에 해당하면, 제1 엑세스 주소(AA1)를 메모리(130)로 전송할 수 있다. If the router 161 determines that the first access address (AA1) corresponds to the physical address area (PAS in FIG. 2A), the router 161 transmits the first access address (AA1) to the memory 130, as shown in FIG. 4A. You can. In other words, the router 161 may transmit the first access address (AA1) to the memory 130 if the first access address (AA1) corresponds to a valid physical address.

라우터(161)는 제1 엑세스 주소(AA1)가 쉐도우 물리 주소 영역(도 2A의 SPAS)에 대응한다고 판단되면, 제1 엑세스 요청 신호를 서브-프로세싱 회로(120)로 전송할 수 있다(S150). 라우터(161)는 제1 엑세스 주소(AA1)가 쉐도우 물리 주소 영역에 대응한다고 판단되면, 다시 말해서 제1 엑세스 주소(AA1)가 쉐도우 주소 영역에 대응한다고 판단되면, 도 4b에 도시된 바와 같이 제1 엑세스 주소(AA1)를 메모리(130)가 아닌 서브-프로세싱 회로(120)로 전송할 수 있다. 예를 들어, 라우터(161)는 제1 엑세스 주소(AA1)가 쉐도우 물리 주소에 해당하면, 제1 엑세스 주소(AA1)를 서브-프로세싱 회로(120)로 전송할 수 있다. 이하의 단계들은 도 4b를 함께 참조하여 설명된다. If the router 161 determines that the first access address (AA1) corresponds to the shadow physical address area (SPAS in FIG. 2A), the router 161 may transmit the first access request signal to the sub-processing circuit 120 (S150). If the router 161 determines that the first access address (AA1) corresponds to the shadow physical address area, in other words, if it determines that the first access address (AA1) corresponds to the shadow address area, the first access address (AA1) is determined as shown in FIG. 4B. 1 The access address (AA1) may be transmitted to the sub-processing circuit 120 rather than the memory 130. For example, if the first access address (AA1) corresponds to a shadow physical address, the router 161 may transmit the first access address (AA1) to the sub-processing circuit 120. The following steps are explained with reference to FIG. 4B.

서브-프로세싱 회로(120)는 제1 엑세스 주소(AA1)를 물리 주소 영역에 대응하는 제2 엑세스 주소(AA2)로 변환할 수 있다(S160). 다시 말해서, 서브-프로세싱 회로(120)는 쉐도우 물리 주소인 제1 엑세스 주소(AA1)를 유효 물리 주소인 제2 엑세스 주소(AA2)로 변환할 수 있다. The sub-processing circuit 120 may convert the first access address (AA1) into the second access address (AA2) corresponding to the physical address area (S160). In other words, the sub-processing circuit 120 can convert the first access address (AA1), which is a shadow physical address, into the second access address (AA2), which is a valid physical address.

서브-프로세싱 회로(120)는 제2 엑세스 주소(AA2)를 포함하는 제2 엑세스 요청 신호를 시스템 버스(160)로 전송할 수 있다(S170). 다시 말해서, 서브-프로세싱 회로(120)는 제2 엑세스 주소를 라우터(161)로 출력할 수 있다. The sub-processing circuit 120 may transmit a second access request signal including the second access address (AA2) to the system bus 160 (S170). In other words, the sub-processing circuit 120 may output the second access address to the router 161.

시스템 버스(160)는 제2 엑세스 요청 신호를 메모리(130)로 전송할 수 있다(S180). S130 단계에 대하여 전술한 바와 같이, 전술한 바와 같이, 라우터(161)는 수신되는 엑세스 주소가 쉐도우 물리 주소 영역에 대응하는지 여부를 판단하며, 제2 엑세스 주소(AA2)는 유효 물리 주소이므로, 쉐도우 물리 주소 영역에 대응하지 않는다. 따라서, 라우터(161)는 제2 엑세스 주소(AA2)를 메모리(130)로 전송할 수 있다. The system bus 160 may transmit a second access request signal to the memory 130 (S180). As described above with respect to step S130, the router 161 determines whether the received access address corresponds to the shadow physical address area, and since the second access address (AA2) is a valid physical address, the shadow physical address It does not correspond to the physical address area. Accordingly, the router 161 may transmit the second access address (AA2) to the memory 130.

이와 같이, 본 개시의 예시적 실시예에 따른 시스템 온 칩(100b)에서, 프르세서(110)는 유효 물리 주소를 기초로 직접 메모리(130)를 엑세스하고, 또한 쉐도우 물리 주소를 기초로 서브-프로세싱 회로(120)을 통해 메모리(130)를 우회적으로 엑세스할 수 있다. As such, in the system-on-chip 100b according to an exemplary embodiment of the present disclosure, the processor 110 directly accesses the memory 130 based on the effective physical address and also accesses the sub-memory 130 based on the shadow physical address. The memory 130 may be indirectly accessed through the processing circuit 120.

도 6은 본 개시의 예시적 실시예에 따른 시스템 온 칩(100c)의 동작을 나타낸다.Figure 6 shows the operation of the system-on-chip 100c according to an exemplary embodiment of the present disclosure.

도 6을 참조하면, 시스템 온 칩(100c)은 프로세서(110), 서브-프로세싱 회로(120), 메모리(130), 라우터(161) 및 MMU(Memory Management Unit)(180)를 포함할 수 있다. 도 6은 도 4a 및 도 4b의 시스템 온 칩(100b)의 변형예이며, 따라서 중복되는 설명은 생략하고, 차이점을 중심으로 설명하기로 한다. Referring to FIG. 6, the system-on-chip 100c may include a processor 110, a sub-processing circuit 120, a memory 130, a router 161, and a memory management unit (MMU) 180. . FIG. 6 is a modified example of the system-on-chip 100b of FIGS. 4A and 4B, so redundant description will be omitted and the description will focus on the differences.

전술한 바와 같이, 프로세서(110)에서 생성된 제1 엑세스 요청 신호에 포함되는 제1 엑세스 주소가 쉐도우 물리 주소 영역에 포함될 경우, 다시 말해서 제1 엑세스 주소가 쉐도우 물리 주소일 경우, 라우터(161)는 제1 엑세스 요청 신호를 서브-프로세싱 회로(120)에 전송할 수 있다. As described above, when the first access address included in the first access request signal generated by the processor 110 is included in the shadow physical address area, that is, when the first access address is a shadow physical address, the router 161 Can transmit a first access request signal to the sub-processing circuit 120.

서브-프로세싱 회로(120)는 제1 엑세스 주소를 가상 주소로 변환할 수 있다. 실시예에 있어서, 서브-프로세싱 회로(120)는 쉐도우 물리 주소(SPA)에 대응하는 가상 주소(VA)에 대한 맵핑 정보를 포함하는 주소 매칭 테이블을 포함할 수 있으며, 서브-프로세싱 회로(120)는 주소 매칭 테이블을 이용하여 쉐도우 물리 주소(SPA)를 가상 주소(VA)로 변환할 수 있다. 이에 따라, 서브-프로세싱 회로(120)는 쉐도우 물리 주소(SPA)인 제1 엑세스 주소를 가상 주소(VA)로 변환할 수 있다.The sub-processing circuit 120 may convert the first access address into a virtual address. In an embodiment, the sub-processing circuit 120 may include an address matching table containing mapping information for a virtual address (VA) corresponding to a shadow physical address (SPA), and the sub-processing circuit 120 Can convert a shadow physical address (SPA) to a virtual address (VA) using an address matching table. Accordingly, the sub-processing circuit 120 may convert the first access address, which is a shadow physical address (SPA), into a virtual address (VA).

MMU(180)는 서브-프로세싱 회로(120)로부터 수신되는 가상 주소(VA)를 유효 물리 주소(EPA)로 변환할 수 있다. 실시예에 있어서, MMU(180)는 가상 주소(VA)에 대응하는 유효 물리 주소(EPA)에 대한 맵핑 정보를 포함하는 페이지 테이블을 포함할 수 있다. MMU(180)가 이용하는 페이지 테이블은 프로세서(110)가 이용하는 페이지 테이블과 상이하다. 예를 들어, MMU(180)는 시스템 온 칩(100c)의 하나 이상의 프로세싱 회로를 지원하는 시스템 MMU이고, 페이지 테이블은 시스템 온 칩(100c)의 적어도 하나의 다른 프로세싱 회로(예컨대, GPU(Graphic Processing Unit), ISP(Image Signal Processor) 등)가 이용하는 페이지 테이블과 동일할 수 있다. The MMU 180 may convert the virtual address (VA) received from the sub-processing circuit 120 into an effective physical address (EPA). In an embodiment, the MMU 180 may include a page table containing mapping information for an effective physical address (EPA) corresponding to a virtual address (VA). The page table used by the MMU 180 is different from the page table used by the processor 110. For example, the MMU 180 is a system MMU that supports one or more processing circuits of the system-on-chip 100c, and the page table supports at least one other processing circuit (e.g., Graphics Processing Circuit (GPU)) of the system-on-chip 100c. Unit), ISP (Image Signal Processor), etc.) may be the same as the page table used.

MMU(180)는 유효 물리 주소(EPA)를 제2 엑세스 주소(AA2)로서 포함하는 제2 엑세스 요청을 생성하고, 제2 엑세스 요청을 라우터(161)로 전송할 수 있다. 라우터(161)는 제2 엑세스 요청을 메모리(130)로 전송할 수 있다. The MMU 180 may generate a second access request including an effective physical address (EPA) as a second access address (AA2) and transmit the second access request to the router 161. The router 161 may transmit a second access request to the memory 130.

도 7은 본 개시의 예시적 실시예에 따른 시스템 온 칩(100d)의 동작을 나타낸다.Figure 7 shows the operation of the system-on-chip 100d according to an exemplary embodiment of the present disclosure.

도 7을 참조하면, 시스템 온 칩(100d)은 프로세서(110), 서브-프로세싱 회로(120), 메모리(130), 및 라우터(161)를 포함할 수 있다. 도 7은 도 4b의 시스템 온 칩(100b)의 변형예이며, 따라서 중복되는 설명은 생략하고, 차이점을 중심으로 설명하기로 한다. Referring to FIG. 7 , the system-on-chip 100d may include a processor 110, a sub-processing circuit 120, a memory 130, and a router 161. FIG. 7 is a modified example of the system-on-chip 100b of FIG. 4B, so redundant description will be omitted and the description will focus on the differences.

본 실시예에서, 라우터(161)는 캐시(CC)를 포함할 수 있다. 서브-프로세싱 회로(120)와 라우터(161) 간에 캐시(CC)의 관리를 위한 별도의 채널을 포함할 수 있으며, 서브-프로세싱 회로(120)는 캐시 코히어런시 프로토콜(Cache Coherence Protocol)에 따라 라우터(161)에 캐시(CC)에 대한 캐시 관리 요청 신호(예를 들어, read 명령 또는 Stash 명령 등)(QRC)를 전송할 수 있다. In this embodiment, the router 161 may include a cache (CC). A separate channel may be included for management of the cache (CC) between the sub-processing circuit 120 and the router 161, and the sub-processing circuit 120 supports the Cache Coherence Protocol. Accordingly, a cache management request signal (eg, a read command or a stash command, etc.) (QRC) for the cache (CC) may be transmitted to the router 161.

라우터(161)는 코히어런시 컨트롤러로서 동작할 수 있다. 라우터(161)는 서브-프로세싱 회로(120)로부터의 캐시 관리 요청 신호(QRC)에 응답하여, 캐시(CC)에 데이터를 저장하거나 또는 캐시에 저장한 데이터를 출력할 수 있다. 라우터(161)는 또한 메모리(130)에 저장된 데이터를 캐시(CC)에 독출 또는 기입할 수 있는 패스(path)를 제공할 수 있다. 라우터(161)는 캐시(CC)와 프로세서(110)의 적어도 하나의 캐시(예컨대 프로세서(110)에 구비되는 로컬 캐시들 및/또는 공유 캐시들) 간에 또는 프로세서(110)의 적어도 하나의 캐시(예컨대 서브-프로세싱 회로(120)에 구비되는 로컬 캐시들 및/또는 공유 캐시들) 간에 일관성을 유지시키도록 구성될 수 있다. Router 161 may operate as a coherency controller. The router 161 may store data in the cache (CC) or output data stored in the cache in response to the cache management request signal (QRC) from the sub-processing circuit 120. The router 161 may also provide a path to read or write data stored in the memory 130 to the cache (CC). The router 161 is configured between the cache (CC) and at least one cache of the processor 110 (e.g., local caches and/or shared caches provided in the processor 110) or at least one cache of the processor 110 ( For example, it may be configured to maintain consistency among local caches and/or shared caches provided in the sub-processing circuit 120.

한편, 본 실시예에서 캐시(CC)는 라우터(161)의 내부에 구비되는 것으로 도시되었으나, 이에 제한되는 것은 아니며, 캐시(CC)는 시스템 버스(도 1의 160) 내에서 라우터(161)의 외부에 별도로 배치되거나, 또는 적어도 하나의 프로세서 간의 공유 캐시일 수 있다. Meanwhile, in this embodiment, the cache (CC) is shown as being provided inside the router 161, but it is not limited thereto, and the cache (CC) is located within the system bus (160 in FIG. 1) of the router 161. It may be placed separately externally, or may be a shared cache between at least one processor.

서브-프로세싱 회로(120)는 캐시 관리 요청 신호(QRC)를 기초로 프로세서(110)가 이용될 것으로 예상되는 데이터를 캐시(CC)에 프리-패치(pre-fetch)할 수 있다. 서브-프로세싱 회로(120)는 프로세서(110)가 지원하지 않는 형태의 데이터 프리-패치를 지원할 수 있다. 이에 따라, 프로세서(110)가 애플리케이션을 실행함에 있어서 성능이 향상될 수 있다. The sub-processing circuit 120 may pre-fetch data expected to be used by the processor 110 into the cache (CC) based on the cache management request signal (QRC). The sub-processing circuit 120 may support a type of data pre-fetch that the processor 110 does not support. Accordingly, performance of the processor 110 when executing an application may be improved.

실시예에 있어서, 도 6을 참조하여 설명한 바와 같이, 시스템 온 칩(100d)은 MMU(180)를 포함할 수 있다. 이 때, 서브-프로세싱 회로(120)는 캐시 관리 요청 신호(예를 들어, read 명령 또는 Stash 명령 등)(QRC)를 라우터(161)로 직접 전송할 수 있고, 캐시 관리 요청 신호(QRC)에 대응하는 응답(예를 들어, 독출 요청에 따른 데이터)을 라우터(161)가 서브-프로세싱 회로(120)로 전송할 수 있다.In an embodiment, as described with reference to FIG. 6, the system-on-chip 100d may include the MMU 180. At this time, the sub-processing circuit 120 may directly transmit a cache management request signal (e.g., read command or stash command, etc.) (QRC) to the router 161 and respond to the cache management request signal (QRC). The router 161 may transmit a response (eg, data according to a read request) to the sub-processing circuit 120.

도 8a 및 도 8b는 본 개시의 예시적 실시예에 따른 시스템 온 칩(100e)의 독출 동작을 나타낸다. 도 8a 및 도 8b의 메모리(130)에는 압축된 이미지 데이터가 저장되고, 프로세서(110)의 이미지 데이터 독출 요청에 응답하여 서브-프로세싱 회로(120)를 통해 우회적으로 메모리(130)에 엑세스하여 압축된 이미지 데이터를 독출하는 실시예에 대하여 설명하기로 한다. FIGS. 8A and 8B illustrate a read operation of the system-on-chip 100e according to an exemplary embodiment of the present disclosure. Compressed image data is stored in the memory 130 of FIGS. 8A and 8B, and in response to the image data read request from the processor 110, the memory 130 is indirectly accessed through the sub-processing circuit 120 to compress the image data. An embodiment of reading image data will be described.

도 8a를 참조하면, 프로세서(110)는 이미지 처리(예를 들어, 페이스 인식 및 보정, 화질 개선 등)를 수행하는 애플리케이션을 실행할 수 있다. 애플리케이션은 메모리(130)로부터 이미지 데이터를 독출할 것을 요청하며, 이미지 데이터가 저장된 영역을 나타내는 제1 가상 주소를 생성할 수 있다. Referring to FIG. 8A, the processor 110 may execute an application that performs image processing (eg, face recognition and correction, image quality improvement, etc.). The application may request to read image data from the memory 130 and create a first virtual address indicating the area where the image data is stored.

프로세서(110)는 애플리케이션에 대하여 설정된 제1 페이지 테이블(PGTB1)을 기초로 제1 가상 주소를 제1 물리 주소로 변환할 수 있다. 여기서 제1 페이지 테이블은 도 2a 및 2b를 참조하여 설명한 바와 같이, 가상 주소를 유효 물리 주소 또는 쉐도우 물리 주소로 맵핑할 수 있다. 제1 물리 주소(PA1)는 쉐도우 물리 주소일 수 있다. The processor 110 may convert the first virtual address into a first physical address based on the first page table (PGTB1) set for the application. Here, the first page table may map a virtual address to a valid physical address or a shadow physical address, as described with reference to FIGS. 2A and 2B. The first physical address (PA1) may be a shadow physical address.

메모리(130)는 압축 버퍼(CBUF)를 포함하고, 압축 버퍼(CBUF)에는 압축된 이미지 데이터(도 7b의 CDT)가 저장될 수 있다. The memory 130 includes a compression buffer (CBUF), and compressed image data (CDT in FIG. 7B) may be stored in the compression buffer (CBUF).

도 9는 압축 버퍼(CBUF)에 저장된 압축된 이미지 데이터(CDT)를 예시적으로 나타낸다. Figure 9 exemplarily shows compressed image data (CDT) stored in a compression buffer (CBUF).

이미지 처리 회로(예를 들어, ISP)는 서브 블록(SBL) 단위로 이미지 데이터를 압축할 수 있다. 예를 들어, 서브 블록(SBL)은 4×4 행렬로 배치된 픽셀들을 포함할 수 있다. 압축된 이미지 데이터(CDT)의 하나의 패킷은 헤더(HD) 및 페이로드(PL)를 포함할 수 있다. 페이로드(PL)는 복수의 압축된 서브 블록들(SBL)을 포함할 수 있다. 헤더(HD)는 페이로드(PL) 내에서 압축된 서브 블록들(SBL) 각각의 저장 순서에 관한 정보와 압축된 서브 블록들(SBL) 각각의 사이즈에 대한 정보를 헤더로서 가질 수 있다. 헤더 정보는 페이로드(PL)의 시작 주소(예를 들어, 첫번째 서브 블록의 시작 주소)를 더 포함할 수 있다. An image processing circuit (eg, ISP) may compress image data in subblock (SBL) units. For example, the sub-block SBL may include pixels arranged in a 4×4 matrix. One packet of compressed image data (CDT) may include a header (HD) and payload (PL). The payload (PL) may include a plurality of compressed sub-blocks (SBL). The header HD may have information on the storage order of each compressed sub-block (SBL) within the payload (PL) and information on the size of each compressed sub-block (SBL) as a header. Header information may further include the starting address of the payload (PL) (eg, the starting address of the first subblock).

압축 버퍼(CBUF)는 페이로드 영역(PLA) 및 헤더 영역(HAD)을 포함할 수 있으며, 페이로드 영역(PLA)에는 n개의 페이로드(PL)들(n은 2 이상의 양의 정수)이 저장되고, 헤더 영역(HAD)에는 n개의 헤더(HD)들이 저장될 수 있다. 각 페이로드(PL)에 대하여 동일한 사이즈의 풋프린트(PF)가 설정될 수 있다. 따라서, 페이로드(PL)의 순서에 따라 페이로드(PL)의 시작 주소(또는 끝 주소)를 알 수 있다. The compression buffer (CBUF) may include a payload area (PLA) and a header area (HAD), and n payloads (PL) (n is a positive integer of 2 or more) are stored in the payload area (PLA). And, n headers (HD) can be stored in the header area (HAD). A footprint (PF) of the same size may be set for each payload (PL). Therefore, the start address (or end address) of the payload (PL) can be known according to the order of the payload (PL).

예를 들어, ISP가 이미지 센서로부터 수신되는 원본 이미지 데이터를 서브 블록 단위로 압축하고, 압축된 이미지 데이터(CDT)를 압축 버퍼(CBUF)에 저장할 수 있다. ISP는 ISP에 대하여 설정된 제2 페이지 테이블(PGTB2)을 기초로 생성된 유효 물리 주소에 압축된 이미지 데이터(CDT)를 저장할 수 있으며, 여기서 유효 물리 주소는 압축된 이미지 데이터(CDT)가 저장될 압축 버퍼(CBUF)의 일 영역에 대응한다. For example, an ISP may compress original image data received from an image sensor in sub-block units and store the compressed image data (CDT) in a compression buffer (CBUF). The ISP may store the compressed image data (CDT) in a valid physical address generated based on a second page table (PGTB2) established for the ISP, where the effective physical address is the compressed image data (CDT) where the compressed image data (CDT) will be stored. Corresponds to one area of the buffer (CBUF).

계속하여 도 8a를 참조하면, 프로세서(110)는 애플리케이션을 위한 압축 및 압축 해제 기능을 제공하지 않을 수 있다. 따라서, 프로세서(110)가 메모리(130)로부터 직접 압축된 이미지 데이터(CDT)를 독출할 경우, 애플리케이션이 압축된 이미지 데이터(CDT)를 이용할 수 없다. 프로세서(110)는 서브-프로세싱 회로(120)을 이용하여 압축된 이미지 데이터(CDT)를 압축해제하고, 압축해제된 이미지 데이터를 수신할 수 있다. Continuing to refer to Figure 8A, processor 110 may not provide compression and decompression functionality for the application. Accordingly, when the processor 110 reads the compressed image data (CDT) directly from the memory 130, the application cannot use the compressed image data (CDT). The processor 110 may decompress compressed image data (CDT) using the sub-processing circuit 120 and receive the decompressed image data.

따라서, 프로세서(110)는 제1 페이지 테이블(PGTB1)을 이용하여, 제1 가상 주소를 유효 물리 주소가 아닌 쉐도우 물리 주소로 변환하고, 쉐도우 물리 주소에 해당하는 제1 물리 주소(PA1)를 엑세스 주소로서 포함하는 제1 독출 요청 신호(RD1)를 생성할 수 있다. Therefore, the processor 110 uses the first page table (PGTB1) to convert the first virtual address into a shadow physical address rather than a valid physical address, and accesses the first physical address (PA1) corresponding to the shadow physical address. A first read request signal RD1 including an address may be generated.

라우터(161)는 프로세서(110)로부터 수신된 제1 물리 주소(PA1)가 메모리(130)의 물리 주소 영역이 아닌 쉐도우 물리 주소 영역에 해당하는 바, 제1 독출 요청 신호(RD1)를 메모리(130)가 아닌 서브-프로세싱 회로(120)으로 전송할 수 있다. Since the first physical address PA1 received from the processor 110 corresponds to the shadow physical address area rather than the physical address area of the memory 130, the router 161 sends the first read request signal RD1 to the memory ( It can be transmitted to the sub-processing circuit 120 rather than 130).

서브-프로세싱 회로(120)는 물리 주소를 가상 주소로 변환하는 주소 변환 회로(ACC)를 포함할 수 있다. 실시예에 있어서 주소 변환 회로(ACC)는 주소 매칭 테이블을 이용하여, 물리 주소를 가상 주소로 변환할 수 있다. 주소 매칭 테이블은, 물리 주소에 대한 페이로드의 가상 주소를 포함할 수 있으며, 또한, 주소 변환 회로(ACC)는 이미지 데이터에 대한 정보(예를 들어, 높이, 넓이, 이미지 데이터의 포맷 등)을 포함할 수 있다. 서브-프로세싱 회로(120)는 라우터(161)로부터 수신되는 제1 독출 요청 신호(RD1)에 포함되는 제1 물리 주소(PA1)를 제2 가상 주소(VA2)로 변환할 수 있다. 실시예에 있어서, 주소 변환 회로(ACC)는 주소 매칭 테이블을 이용하여 제1 물리 주소(PA1)에 대응하는 압축된 이미지 데이터(CDT)의 헤더(HD) 및 페이로드(PL) 각각에 대한 가상 주소를 산출할 수 있다. The sub-processing circuit 120 may include an address conversion circuit (ACC) that converts a physical address to a virtual address. In an embodiment, the address conversion circuit (ACC) may convert a physical address into a virtual address using an address matching table. The address matching table may include the virtual address of the payload to the physical address, and the address conversion circuit (ACC) may also provide information about the image data (e.g., height, width, format of the image data, etc.). It can be included. The sub-processing circuit 120 may convert the first physical address PA1 included in the first read request signal RD1 received from the router 161 into the second virtual address VA2. In an embodiment, the address conversion circuit (ACC) uses an address matching table to create a virtual address for each of the header (HD) and payload (PL) of the compressed image data (CDT) corresponding to the first physical address (PA1). The address can be calculated.

서브-프로세싱 회로(120)는 또한, 컴프레서(COMP)를 포함할 수 있다. 컴프레서(COMP)는 도 8b를 참조하여 후술되는 바와 같이, 수신되는 데이터에 대하여 압축 또는 압축해제를 할 수 있다. Sub-processing circuit 120 may also include a compressor (COMP). The compressor (COMP) can compress or decompress the received data, as will be described later with reference to FIG. 8B.

MMU(180)는 제2 페이지 테이블(PGTB2)을 이용하여 서브-프로세싱 회로(120)로부터 수신되는 제2 가상 주소(VA2)를 제2 물리 주소(PA2)로 변환할 수 있다. MMU(180)는 제2 물리 주소(PA2)를 포함하는 제2 독출 요청 신호(RD2)를 라우터(161)에 전송할 수 있다. 실시예에 있어서, 제2 페이지 테이블(PGTB2)은 이미지 데이터를 압축하고, 압축된 이미지 데이터(CDT)를 메모리(130)에 저장하는 다른 프로세싱 회로(예컨대 ISP)에 대하여 설정된 페이지 테이블일 수 있으며, 제2 페이지 테이블(PGTB2)은 가상 주소에 대하여 유효 물리 주소를 맵핑할 수 있다. 제2 물리 주소(PA2)는 유효 물리 주소이다. The MMU 180 may convert the second virtual address VA2 received from the sub-processing circuit 120 into the second physical address PA2 using the second page table PGTB2. The MMU 180 may transmit a second read request signal RD2 including a second physical address PA2 to the router 161. In an embodiment, the second page table (PGTB2) may be a page table set for another processing circuit (e.g., ISP) that compresses image data and stores the compressed image data (CDT) in the memory 130, The second page table (PGTB2) can map effective physical addresses to virtual addresses. The second physical address (PA2) is a valid physical address.

라우터(161)는 제2 물리 주소(PA2)가 메모리(130)의 물리 주소 영역에 대응하므로, 제2 독출 요청 신호(RD2)를 메모리(130)로 전송할 수 있다. Since the second physical address PA2 corresponds to the physical address area of the memory 130, the router 161 may transmit the second read request signal RD2 to the memory 130.

도 8b를 참조하면, 메모리(130)의 압축 버퍼(CBUF)의 제2 물리 주소(PA2)로부터 압축된 이미지 데이터(CDT)가 독출될 수 있다. 라우터(161)는 압축된 이미지 데이터(CDT)를 서브 프로세싱 회로(120)로 전송할 수 있다. 서브-프로세싱 회로(120)의 컴프레서(COMP)는 압축된 이미지 데이터(CDT)를 압축해제할 수 있다. 서브-프로세싱 회로(120)는 압축 해제된 이미지 데이터(uncompressed image data)(CDT)를 라우터(161)를 통해 프로세서(110)로 전송할 수 있다. Referring to FIG. 8B , compressed image data CDT may be read from the second physical address PA2 of the compression buffer CBUF of the memory 130. The router 161 may transmit compressed image data (CDT) to the sub-processing circuit 120. The compressor (COMP) of the sub-processing circuit 120 may decompress the compressed image data (CDT). The sub-processing circuit 120 may transmit uncompressed image data (CDT) to the processor 110 through the router 161.

압축해제된 이미지 데이터(CDT)는 프로세서(110)가 독출을 요청한 이미지 데이터 (예컨대 한 프레임의 이미지 데이터에 포함된 일부 픽셀들에 대한 픽셀 값들)보다 더 많을 수 있다. 서브-프로세싱 회로(120)는 압축해제된 이미지 데이터(DCDT) 중 프로세서(110)로부터 수신된 제1 물리 주소(PA2)에 대응하는 이미지 데이터를 프로세서(110)로 전송할 수 있다. The decompressed image data (CDT) may be more than the image data that the processor 110 has requested to read (eg, pixel values for some pixels included in the image data of one frame). The sub-processing circuit 120 may transmit image data corresponding to the first physical address PA2 received from the processor 110 among the decompressed image data DCDT to the processor 110 .

실시예에 있어서, 도 7을 참조하여 설명한 바와 같이, 서브-프로세싱 회로(120)는 캐시(도 7의 CC)를 포함할 수 있다. 서브-프로세싱 회로(120)는 서브-프로세싱 회로(120)로부터 수신되는 캐시 관리 요청 신호(QRC)에 응답하여, 압축해제된 이미지 데이터(DCDT) 중 프로세서(110)로 전송한 일부를 제외한 나머지 이미지 데이터를 캐시에 저장할 수 있다. 프로세서(110)는 한 프레임 상에서 연속한 이미지 데이터에 대하여 독출을 요청할 가능성이 높다. 따라서, 프로세서(110)가 추후 독출을 요청하는 이미지 데이터가 캐시에 저장되어 있을 경우, 서브-프로세싱 회로(120)는 메모리(130)를 엑세스 하지 않고, 캐시(CC)에 저장된 이미지 데이터를 프로세서(110)로 전송할 수 있다. In an embodiment, as described with reference to FIG. 7, the sub-processing circuit 120 may include a cache (CC in FIG. 7). The sub-processing circuit 120 responds to the cache management request signal (QRC) received from the sub-processing circuit 120, and selects the remaining image data except for the part transmitted to the processor 110 among the decompressed image data (DCDT). Data can be stored in cache. The processor 110 is likely to request reading of consecutive image data in one frame. Accordingly, when image data that the processor 110 requests to be read later is stored in the cache, the sub-processing circuit 120 does not access the memory 130, but transfers the image data stored in the cache (CC) to the processor ( 110).

도 10은 본 개시의 예시적 실시예에 따른 시스템 온 칩(100)의 소프트웨어 계층을 보여준다. 설명의 편의를 위하여 시스템 온 칩(100)과 연결되는 하드웨어들을 함께 도시한다. Figure 10 shows the software layer of system-on-chip 100 according to an example embodiment of the present disclosure. For convenience of explanation, hardware connected to the system-on-chip 100 is shown together.

애플리케이션(1020) 및 OS(1010)는 프로세서(도 1의 110)에서 수행될 수 있다. 애플리케이션(1020)은 특정 기능(function)을 구현하는 소프트웨어(s/w) 및 서비스(service)를 의미한다. 사용자(1030)는 애플리케이션(1020)을 이용하는 객체를 의미한다. 사용자(1030)는 사용자 인터페이스(UI)를 통하여 애플리케이션(1020)과 소통할 수 있다. 애플리케이션(1020)은 각 서비스목적에 기초하여 제작되어 각 목적에 맞는 사용자 인터페이스를 통하여 사용자(1030)와 소통할 수 있다. 애플리케이션(1020)은 사용자(1030)가 요청하는 동작을 수행하되 필요할 경우 API(Application Protocol Interface, 1016)와 라이브러리(Library, 1017)의 내용을 호출할 수 있다.The application 1020 and OS 1010 may be executed on a processor (110 in FIG. 1). Application 1020 refers to software (s/w) and services that implement specific functions. User 1030 refers to an object that uses the application 1020. The user 1030 may communicate with the application 1020 through a user interface (UI). The application 1020 is produced based on each service purpose and can communicate with the user 1030 through a user interface suitable for each purpose. The application 1020 performs the operation requested by the user 1030 and, if necessary, can call the contents of the API (Application Protocol Interface, 1016) and the library (Library, 1017).

API(1016) 및/또는 라이브러리(1017)는 특정 기능을 담당하는 매크로(macro) 동작을 수행하거나, 하위 계층과 통신이 필요할 경우 인터페이스를 제공해줄 수 있다. 애플리케이션(1020)이 API(1016) 및/또는 라이브러리(1017)를 통하여 하위 계층에 동작을 요청할 경우, API(1016) 및/또는 라이브러리(1017)는 들어온 요청을 보안(Security, 1013), 네트워크(Network, 1014) 및 관리(Manage, 1015) 분야로 나누어 분류할 수 있다. API(1016) 및/또는 라이브러리(1017)는 요청된 분야에 따라 필요한 계층을 동작시킨다. 예를 들면, API(1016)가 네트워크(1014) 관련 기능을 요청한 경우, API(1016)는 네트워크(1014) 계층에 필요한 파라미터(parameter)를 전송하고 관련기능을 호출할 수 있다. 이때, 네트워크(1014)는 요청된 작업을 수행하기 위하여 하위 계층과 통신할 수 있다. 만약, 해당 하위 계층이 없다면 API(1016) 및/또는 라이브러리(1017)는 해당 작업을 직접 수행할 수도 있다.The API 1016 and/or library 1017 may perform macro operations responsible for a specific function or provide an interface when communication with a lower layer is required. When the application 1020 requests an operation from the lower layer through the API 1016 and/or the library 1017, the API 1016 and/or the library 1017 sends the incoming request to security (Security, 1013), network ( It can be divided into Network, 1014) and Management (1015) fields. The API 1016 and/or library 1017 operates the necessary layers according to the requested field. For example, when the API 1016 requests a function related to the network 1014, the API 1016 can transmit necessary parameters to the network 1014 layer and call the related function. At this time, the network 1014 may communicate with lower layers to perform the requested task. If there is no corresponding lower layer, the API 1016 and/or the library 1017 may perform the corresponding task directly.

드라이버(Driver, 1011)는 하드웨어(1000)를 관리하고 상태를 체크하다가 상위 계층들에서 분류된 요청을 받아서 하드웨어(1000) 계층에 전달해주는 역할을 수행할 수 있다.Driver 1011 can manage the hardware 1000, check its status, and receive classified requests from upper layers and deliver them to the hardware 1000 layer.

펌웨어(Firmware, 1012)는, 드라이버(1011)가 하드웨어(1000) 계층에 작업을 요청할 경우 하드웨어(1000) 계층이 받아들일 수 있도록 해당 요청을 변환할 수 있다. 상기 요청을 변환하여 하드웨어(1000)에 전달하는 펌웨어(1012)는 드라이버(1011)에 포함되거나 하드웨어(1000)에 포함되도록 구현될 수 있다. When the driver 1011 requests a task from the hardware 1000 layer, firmware 1012 can convert the request so that the hardware 1000 layer can accept it. The firmware 1012 that converts the request and transmits it to the hardware 1000 may be included in the driver 1011 or may be implemented to be included in the hardware 1000.

시스템 온 칩(도 1의 100)은 API(1016), 드라이버(1011) 및 펌웨어(1012)를 포함하여 이들 전체를 관리하는 OS(Operating System, 1010)를 내장할 수 있다. OS(1010)는 메모리(memory, 330)에 제어 명령어코드 및 데이터의 형태로 저장될 수 있다. The system-on-chip (100 in FIG. 1) may include an API 1016, a driver 1011, and a firmware 1012, and an OS (Operating System, 1010) that manages them all. The OS 1010 may be stored in memory 330 in the form of control command codes and data.

하드웨어(1000)는 프로세서(1001), 서브-프로세싱 회로(1002), 메모리(1003), 시스템 MMU(1004), ISP(1005), GPU(1006), 입출력 디스플레이(1007) 등을 포함할 수 있다. 하드웨어(1000)는 드라이버(1011)및 펌웨어(1012)가 전달해준 요청(또는 명령)을 순서대로(in-order) 또는 순서를 바꾸어(out-of-order) 수행하고 수행된 결과를 하드웨어(1000) 내부의 레지스터나 하드웨어(1000)에 연결된 메모리(300)에 저장할 수 있다. 상기 저장된 결과는 드라이버(1011) 및 펌웨어(1012)로 리턴(return)될 수 있다.Hardware 1000 may include a processor 1001, sub-processing circuit 1002, memory 1003, system MMU 1004, ISP 1005, GPU 1006, input/output display 1007, etc. . The hardware (1000) performs the requests (or commands) delivered by the driver (1011) and firmware (1012) in order (in-order) or out of order (out-of-order) and returns the performed results to the hardware (1000). ) It can be stored in an internal register or in the memory 300 connected to the hardware 1000. The stored results may be returned to the driver 1011 and firmware 1012.

하드웨어(1000)는 인터럽트를 발생하여 상위 계층에 필요한 동작을 요청할 수 있다. 인터럽트가 발생할 경우, 하드웨어(1000)는 OS(1010)의 관리(1015) 부분에서 해당 인터럽트를 확인한 이후, 하드웨어(1000)의 Core 부분과 통신하여 해당 인터럽트를 처리한다. The hardware 1000 may generate an interrupt and request a necessary operation from a higher layer. When an interrupt occurs, the hardware 1000 checks the interrupt in the management 1015 part of the OS 1010 and then communicates with the core part of the hardware 1000 to process the interrupt.

본 실시예에서, API(1016)는 프로세서(110)가 서브-프로세싱 회로(도 1의 120)을 통해 우회적으로 메모리(도 1의 130)에 접근할 수 있는 환경을 설정할 수 있다. API(1016)는 서브-프로세싱 회로(120)의 기능을 이용하는 애플리케이션(1020)에 대응하는 페이지 테이블(예컨대 도 2a의 PGTB, 도 8a의 PGTB1)을 생성하고 서브-프로세싱 회로(120)의 동작을 위한 정보, 예를 들어 주소 매칭 테이블, 제2 페이지 테이블(도 8a의 PGTB2) 등을 설정할 수 있다. In this embodiment, the API 1016 may set an environment in which the processor 110 can indirectly access the memory (130 in FIG. 1) through a sub-processing circuit (120 in FIG. 1). The API 1016 creates a page table (e.g., PGTB in FIG. 2A and PGTB1 in FIG. 8A) corresponding to the application 1020 that uses the functionality of the sub-processing circuit 120 and controls the operation of the sub-processing circuit 120. Information such as address matching table, second page table (PGTB2 in FIG. 8A), etc. can be set.

이에 따라, 프로세서(110)에서 애플리케이션(1020)이 실행될 때, 애플리케이션(1020)에 대응하는 페이지 테이블 및 서브-프로세싱 회로(120)을 위한 주소 매칭 테이블, 페이지 테이블이 준비될 수 있으며, 도 1 내지 도 8b를 참조하여 설명한 바와 같이, 프로세서(110)가 쉐도우 물리 주소를 기초로 서브-프로세싱 회로(120)를 통해 메모리(130)에 엑세스할 수 있다. Accordingly, when the application 1020 is executed in the processor 110, a page table corresponding to the application 1020, an address matching table for the sub-processing circuit 120, and a page table may be prepared, as shown in FIGS. 1 to 10. As described with reference to FIG. 8B, the processor 110 may access the memory 130 through the sub-processing circuit 120 based on the shadow physical address.

한편, 본 실시예에서 API(1016)은 OS(1010)에 포함되는 것으로 도시되었으나, 이에 제한되는 것은 아니며, 실시예에 있어서, API(1016)는 애플리케이션(1020)이 제공할 수 있다. Meanwhile, in this embodiment, the API 1016 is shown as being included in the OS 1010, but it is not limited thereto. In the embodiment, the API 1016 may be provided by the application 1020.

도 11a는 본 개시의 비교예에 따른 가상 주소 공간과 유효 물리 주소 공간의 매칭을 나타내며, 도 11b는 본 개시의 비교예에 따른 메모리를 엑세스 방식 및 결과를 나타낸다. FIG. 11A shows matching of a virtual address space and an effective physical address space according to a comparative example of the present disclosure, and FIG. 11B shows a memory access method and results according to a comparative example of the present disclosure.

도 11a를 참조하면, 가상 주소 공간(VAS)은 애플리케이션을 위한 영역들로서 압축된 버퍼들(comp_buf_o0, comp_buf_o1)을 포함한다. 압축된 버퍼들(comp_buf_o0, comp_buf_o1)은 유효 물리 주소 공간(EPAS)의 유효 물리 주소 영역들(valid_p0, valid_p1)에 매칭될 수 있다. 유효 물리 주소 영역들(valid_p0, valid_p1)은 메모리(도 1의 130)의 압축 버퍼(도 8a의 CBUF)의 영역들일 수 있다. Referring to FIG. 11A, the virtual address space (VAS) includes compressed buffers (comp_buf_o0, comp_buf_o1) as areas for applications. Compressed buffers (comp_buf_o0, comp_buf_o1) may be matched to valid physical address areas (valid_p0, valid_p1) of the effective physical address space (EPAS). The valid physical address areas (valid_p0, valid_p1) may be areas of the compression buffer (CBUF in FIG. 8A) of the memory (130 in FIG. 1).

도 11b를 참조하면, 코드 1(CD1)은 가상 주소 공간(VAS)에 압축된 버퍼들(comp_buf_o0, comp_buf_o1)을 할당하는 것을 보여준다. 예를 들어, 압축된 버퍼들(comp_buf_o0, comp_buf_o1)은 카메라 프로세스를 위한 가상 주소 공간(VAS)일 수 있다. 압축된 버퍼들(comp_buf_o0, comp_buf_o1)에 대응하는 가상 주소의 제1 헤더는 이미지 사이즈를 나타내고, 제1 페이로드는 0이며, 제2 페이로드는 페이로드의 사이즈를 나타낼 수 있다. Referring to FIG. 11B, code 1 (CD1) shows allocating compressed buffers (comp_buf_o0, comp_buf_o1) to the virtual address space (VAS). For example, the compressed buffers (comp_buf_o0, comp_buf_o1) may be a virtual address space (VAS) for the camera process. The first header of the virtual address corresponding to the compressed buffers (comp_buf_o0, comp_buf_o1) may indicate the image size, the first payload may be 0, and the second payload may indicate the size of the payload.

코드 2(CD2)에 따라 애플리케이션이 솔루션 함수 foo_sol를 기초로 압축된 버퍼들(comp_buf_o0, comp_buf_o1)로부터 데이터를 요청하면, 프로세서(도 1의 110)는 도 4a를 참조하여 설명한 바와 같이 메모리(130)의 유효 물리 주소 영역들(valid_p0, valid_p1)에 엑세스하여, 유효 물리 주소 영역들(valid_p0, valid_p1)에 저장된 압축된 데이터를 독출할 수 있다. 이미지 데이터의 압축으로 생긴 빈 영역의 데이터가 독출되거나 또는 압축된 데이터가 독출되더라도 프로세서(110)가 압축 해제 기능을 제공하지 않으므로, 애플리케이션이 압축된 데이터를 해석할 수 없다. 따라서, 에러가 발생하게 된다. According to code 2 (CD2), when the application requests data from the compressed buffers (comp_buf_o0, comp_buf_o1) based on the solution function foo_sol, the processor (110 in FIG. 1) processes the memory 130 as described with reference to FIG. 4A. By accessing the valid physical address areas (valid_p0, valid_p1), compressed data stored in the valid physical address areas (valid_p0, valid_p1) can be read. Even if data in an empty area created by compression of image data is read or compressed data is read, the processor 110 does not provide a decompression function, so the application cannot interpret the compressed data. Therefore, an error occurs.

도 12a는 본 개시의 예시적 실시예에 따른 가상 주소 공간과 물리 주소 공간의 매칭을 나타내며, 도 12b는 본 개시의 예시적 실시예에 따른 API(Application Programing Interface)를 기반으로한 가상 주소 공간과 물리 주소 공간의 매칭을 보여준다. FIG. 12A shows matching of a virtual address space and a physical address space according to an exemplary embodiment of the present disclosure, and FIG. 12B illustrates a virtual address space based on an API (Application Programming Interface) according to an exemplary embodiment of the present disclosure. Shows matching of physical address space.

도 12a를 참조하면, 가상 주소 공간(VAS)은 압축된 버퍼들(comp_buf_o0, comp_buf_o1) 및 이에 대응하는 압축되지(uncompressed) 않은 버퍼들(uncomp_buf_v0, uncomp_buf_v1)을 포함할 수 있다. 압축된 버퍼들(comp_buf_o0, comp_buf_o1)은 유효 물리 주소 공간(EPAS)의 유효 물리 주소 영역들(valid_p0, valid_p1)에 매칭되고, 압축되지(uncompressed) 않은 버퍼들(uncomp_buf_v0, uncomp_buf_v1)은 쉐도우 물리 주소 공간(SPAS)의 쉐도우 물리 주소 영역들(shadow_p0, shadow_p1)에 매칭될 수 있다. 가상 주소 공간(VAS)과 유효 물리 주소 공간(EPAS) 및 쉐도우 물리 주소 공간(SPAS) 간의 매칭은 API(도 10의 1016)가 설정할 수 있으며, 매칭 정보가 페이지 테이블(예를 들어, 도 2a의 PGTB, 도 8a의 PGTB1)로 생성될 수 있다. Referring to FIG. 12A, the virtual address space (VAS) may include compressed buffers (comp_buf_o0, comp_buf_o1) and corresponding uncompressed buffers (uncomp_buf_v0, uncomp_buf_v1). Compressed buffers (comp_buf_o0, comp_buf_o1) are matched to valid physical address areas (valid_p0, valid_p1) of the effective physical address space (EPAS), and uncompressed buffers (uncomp_buf_v0, uncomp_buf_v1) are matched to the shadow physical address space. It can be matched to the shadow physical address areas (shadow_p0, shadow_p1) of (SPAS). The matching between the virtual address space (VAS) and the effective physical address space (EPAS) and shadow physical address space (SPAS) can be set by the API (1016 in Figure 10), and the matching information is stored in the page table (e.g., in Figure 2A). It can be created as PGTB (PGTB1 in Figure 8a).

도 12b를 참조하면, 코드 1(CD1)에 따라 가상 주소 공간(VAS)에 압축된 버퍼들(comp_buf_o0, comp_buf_o1)이 할당될 수 있다. Referring to FIG. 12b, compressed buffers (comp_buf_o0, comp_buf_o1) may be allocated to the virtual address space (VAS) according to code 1 (CD1).

코드 3(CD3)은 압축 API를 적용하여, 가상 주소 공간(VAS)에 압축되지 않은 버퍼들(uncomp_buf_v0, uncomp_buf_v1)을 할당하는 것을 보여준다. 다시 말해서, 압축 API가 프로세서(도 1의 110)에 압축되지 않은 뷰(uncompressed view)를 제공할 수 있다. 압축 API의 함수 c_api는 압축된 버퍼들(comp_buf_o0, comp_buf_o1), 이미지 정보 등을 기초로 압축되지 않은 버퍼들(uncomp_buf_v0, uncomp_buf_v1)을 생성한다. 예를 들어, 압축되지 않은 버퍼들(uncomp_buf_v0, uncomp_buf_v1)은 운영체제(OS)의 가상 주소 공간이나, 프로세서(110)가 압축되지 않은 버퍼들(uncomp_buf_v0, uncomp_buf_v1)에 엑세스하기 위하여, 일시적으로 애플리케이션의 가상 주소 공간으로 설정될 수 있다. Code 3 (CD3) shows applying the compression API to allocate uncompressed buffers (uncomp_buf_v0, uncomp_buf_v1) in the virtual address space (VAS). In other words, the compression API may provide an uncompressed view to the processor (110 in FIG. 1). The function c_api of the compression API creates uncompressed buffers (uncomp_buf_v0, uncomp_buf_v1) based on compressed buffers (comp_buf_o0, comp_buf_o1) and image information. For example, the uncompressed buffers (uncomp_buf_v0, uncomp_buf_v1) are the virtual address space of the operating system (OS), or the processor 110 temporarily uses the virtual address space of the application to access the uncompressed buffers (uncomp_buf_v0, uncomp_buf_v1). Can be set to address space.

코드 4(CD4)에 따라 솔루션 함수 foo_sol를 기초로 압축되지 않은 버퍼들(uncomp_buf_v0, uncomp_buf_v1)에 대한 데이터를 요청하면, 코드 5(CD5)에 도시된 바와 같이, 메모리에 대한 압축 API의 함수, 예컨대 *memory c_api는 압축되지 않은 버퍼들(uncomp_buf_v0, uncomp_buf_v1)을 쉐도우 물리 주소 영역들(shadow_p0, shadow_p1)에 맵핑하고, 페이지 테이블을 생성할 수 있다. 또한, 메모리에 대한 압축 API의 함수는 서브-프로세싱 회로(도 1의 120)에서 이용될 매칭 테이블을 생성할 수 있다. 여기서, 압축되지 않은 버퍼들(uncomp_buf_v0, uncomp_buf_v1)에 대해 쉐도우 물리 주소 영역들(shadow_p0, shadow_p1)은 연속적으로 할당되어야 한다. 다시 말해서, 쉐도우 물리 주소 영역들 중 시작되는 영역 shadow_p0을 나타내는 시작 주소에 버퍼 사이즈(각 쉐도우 물리 주소 영역의 사이즈)를 더한 값이, 쉐도우 물리 주소 영역들 중 마지막 영역(예를 들어, shadow_p1)을 나타내는 끝 주소로 산출될 수 있다.According to code 4 (CD4), requesting data for uncompressed buffers (uncomp_buf_v0, uncomp_buf_v1) based on the solution function foo_sol, as shown in code 5 (CD5), a function of the compression API for memory, e.g. *memory c_api can map uncompressed buffers (uncomp_buf_v0, uncomp_buf_v1) to shadow physical address areas (shadow_p0, shadow_p1) and create a page table. Additionally, a function of the compression API for memory can generate a matching table to be used in the sub-processing circuit (120 in FIG. 1). Here, shadow physical address areas (shadow_p0, shadow_p1) must be allocated consecutively for uncompressed buffers (uncomp_buf_v0, uncomp_buf_v1). In other words, the buffer size (size of each shadow physical address area) added to the starting address representing the starting area shadow_p0 among the shadow physical address areas is the last area (for example, shadow_p1) among the shadow physical address areas. It can be calculated with the ending address indicated.

이와 같이, 프로세서(110)는 서브-프로세싱 회로(도 1의 120)를 통해 우회적으로 압축된 버퍼들(comp_buf_o0, comp_buf_o1)에 대응하는 메모리(도 1의 130)의 압축 버퍼(CBUF)로부터 압축해제된 데이터를 읽어올 수 있다. 애플리케이션이 압축해제된 데이터를 처리할 수 있다. In this way, the processor 110 decompresses the compressed buffers (comp_buf_o0, comp_buf_o1) from the compression buffer (CBUF) of the memory (130 in FIG. 1) corresponding to the indirectly compressed buffers (comp_buf_o0, comp_buf_o1) through the sub-processing circuit (120 in FIG. 1). The data can be read. Applications can process uncompressed data.

압축되지 않은 버퍼들(uncomp_buf_v0, uncomp_buf_v1)의 사용이 완료되면, 코드 6(CD6)의 프리 함수 c_free에 따라 압축되지 않은 버퍼들(uncomp_buf_v0, uncomp_buf_v1)이 운영체제(OS)로 반환될 수 있다. When use of the uncompressed buffers (uncomp_buf_v0, uncomp_buf_v1) is completed, the uncompressed buffers (uncomp_buf_v0, uncomp_buf_v1) can be returned to the operating system (OS) according to the free function c_free of code 6 (CD6).

도 13은 본 개시의 예시적 실시예에 따른 애플리케이션 프로세서(200)의 구현예를 나타낸다. Figure 13 shows an example implementation of an application processor 200 according to an example embodiment of the present disclosure.

도 13을 참조하면, 애플리케이션 프로세서(AP)(200)는 CPU(210), 서브-프로세싱 회로(220), 시스템 인터커넥션 회로(SICC)(230), 네트워크 온 칩(NoC)(240), 및 MMU(250)를 포함할 수 있다. AP(200)는 다른 구성들, 예컨대 ISP, GPU, 통신 모듈, RAM 또는 ROM 등을 더 포함할 수 있다. AP(200)는 시스템 온 칩으로 구현될 수 있으며, 칩 내의 구성들, 예를 들어, CPU(210), 서브-프로세싱 회로(220), MMU(250) 및 이외의 다른 처리 기능 블록들 간의 데이터 및 신호는 SICC(230) 및 NoC(240)를 통해 송수신될 수 있다. SICC(230) 및 NoC(240)는 전술한 실시예들에서 라우터(161)에 대응할 수 있다. DRAM이 AP(200)의 메모리로서 AP(200)에 연결될 수 있다. 도시되지 않았으나, AP(200)는 DRAM 컨트롤러를 포함할 수 있으며, DRAM 컨트롤러를 통해 AP(20)는 DRAM과 데이터를 송수신할 수 있다. Referring to FIG. 13, the application processor (AP) 200 includes a CPU 210, a sub-processing circuit 220, a system interconnection circuit (SICC) 230, a network on chip (NoC) 240, and May include MMU (250). The AP 200 may further include other components, such as an ISP, GPU, communication module, RAM or ROM. The AP 200 may be implemented as a system-on-chip, and data between components within the chip, for example, the CPU 210, the sub-processing circuit 220, the MMU 250, and other processing function blocks, And signals may be transmitted and received through the SICC 230 and NoC 240. SICC 230 and NoC 240 may correspond to router 161 in the above-described embodiments. DRAM may be connected to the AP 200 as a memory of the AP 200. Although not shown, the AP 200 may include a DRAM controller, and the AP 20 may transmit and receive data with the DRAM through the DRAM controller.

CPU(210)는 AP(200)의 메인 프로세서로서, AP(200)의 전반적인 동작을 제어할 수 있으며, CPU(210)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. CPU(210)는 RAM 또는 ROM에 저장된 프로그램 및/또는 데이터를 처리 또는 실행할 수 있다. The CPU 210 is the main processor of the AP 200 and can control the overall operation of the AP 200. The CPU 210 includes one processor core (Single Core) or a plurality of processor cores ( Multi-Core). CPU 210 may process or execute programs and/or data stored in RAM or ROM.

CPU(210)는 도 1을 참조하여 설명한 프로세서(110)에 대응할 수 있다. CPU(210)는 운영체제 및 애플리케이션을 실행할 수 있으며, 애플리케이션이 생성한 가상 주소를 물리 주소로 변환할 수 있다. CPU(210)는 애플리케이션에 대하여 설정된 제1 페이지 테이블(PGTB)을 기초로, 가상 주소를 DRAM(300)의 물리 주소 영역에 대응하는 유효 물리 주소 또는 DRAM(300)의 물리 주소 영역을 벗어나는 쉐도우 물리 주소 영역에 대응하는 쉐도우 물리 주소로 변환할 수 있다. CPU(210)는 물리 주소, 다시 말해서 유효 물리 주소 또는 쉐도우 물리 주소를 포함하는 DRAM(300)에 대한 엑세스 요청 신호를 SICC(230)로 전송할 수 있다. CPU(210)는 애플리케이션이 DRAM(300)에 저장하고자 하는 데이터 또는 DRAM(300)으로부터 독출하고자 하는 데이터에 대하여 압축 또는 압축해제를 지원하지 못한다. 따라서, 애플리케이션이 DRAM(300)의 압축 버퍼(CBUF)에 엑세스하고자 할 경우, CPU(210)는 압축 또는 압축해제를 지원하는 서브-프로세싱 회로(220)를 통해 DRAM(300)의 압축 버퍼(CBUF)에 우회적으로 엑세스할 수 있도록 제1 페이지 테이블(PGTB)을 기초로 가상 주소를 유효 물리 주소로 변환할 수 있다. 여기서 압축 버퍼(CBUF)는 압축된 데이터(예를 들어, 압축된 이미지 데이터)를 저장할 수 있다. The CPU 210 may correspond to the processor 110 described with reference to FIG. 1 . The CPU 210 can run an operating system and an application, and can convert a virtual address generated by the application into a physical address. Based on the first page table (PGTB) set for the application, the CPU 210 converts the virtual address into a valid physical address corresponding to the physical address area of the DRAM 300 or a shadow physical address outside the physical address area of the DRAM 300. It can be converted to a shadow physical address corresponding to the address area. The CPU 210 may transmit an access request signal to the SICC 230 for the DRAM 300 including a physical address, that is, a valid physical address or a shadow physical address. The CPU 210 cannot support compression or decompression of data that the application wants to store in the DRAM 300 or data that the application wants to read from the DRAM 300. Accordingly, when an application wants to access the compression buffer (CBUF) of the DRAM 300, the CPU 210 accesses the compression buffer (CBUF) of the DRAM 300 through the sub-processing circuit 220 that supports compression or decompression. ) can be converted to a valid physical address based on the first page table (PGTB) to enable indirect access to the address. Here, the compression buffer (CBUF) can store compressed data (eg, compressed image data).

SICC(230)는 수신되는 엑세스 요청 신호에 포함되는 물리 주소가 유효 물리 주소이면, 엑세스 요청을 DRAM(300)으로 전송하고, 물리 주소가 쉐도우 물리 주소이면, 엑세스 요청 신호를 서브-프로세싱 회로(220)로 전송할 수 있다. SICC(230)는 CPU(210)로부터 수신되는 엑세스 요청 신호에 포함되는 물리 주소가 유효 물리 주소이면, CPU(210)가 DRAM(300)을 직접 엑세스하도록 엑세스 요청 신호를 DRAM(300)으로 전송하고, 엑세스 요청 신호에 포함되는 물리 주소가 쉐도우 물리 주소이면, CPU(210)가 서브-프로세싱 회로(220)을 거쳐 DRAM(300)을 우회적으로 엑세스하도록 엑세스 요청 신호를 서브-프로세싱 회로(220)으로 전송할 수 있다. If the physical address included in the received access request signal is a valid physical address, the SICC 230 transmits the access request to the DRAM 300, and if the physical address is a shadow physical address, the SICC 230 transmits the access request signal to the sub-processing circuit 220. ) can be transmitted. If the physical address included in the access request signal received from the CPU 210 is a valid physical address, the SICC 230 transmits an access request signal to the DRAM 300 so that the CPU 210 can directly access the DRAM 300. If the physical address included in the access request signal is a shadow physical address, the CPU 210 sends the access request signal to the sub-processing circuit 220 to indirectly access the DRAM 300 through the sub-processing circuit 220. Can be transmitted.

SICC(230)는 엑세스 요청 신호에 응답하여 DRAM(300)으로부터 독출되는 데이터를 엑세스를 요청한 해당 프로세싱 회로(예컨대, CPU(210), 서브-프로세싱 회로(220))로 전송할 수 있다. SICC(230)는 캐시(CC)(예컨대 시스템 캐시)를 포함할 수 있으며, 캐시 관리 요청 신호에 응답하여 메모리(300)로부터 독출되는 데이터를 캐시(CC)에 저장하거나 또는 캐시(CC)로부터 데이터를 독출할 수 있다. 또한, SICC(230)는 프로세싱 회로들, 예컨대 CPU(210), 서브-프로세싱 회로(220), 및 이외의 다른 프로세싱 회로들의 로컬 캐시들 및/또는 공유 캐시들 간에 데이터의 일관성을 유지하도록 하는 캐시 코히어런시 컨트롤러로서 동작할 수 있다. In response to the access request signal, the SICC 230 may transmit data read from the DRAM 300 to the corresponding processing circuit (eg, CPU 210, sub-processing circuit 220) that requested access. SICC 230 may include a cache (CC) (e.g., system cache), and may store data read from the memory 300 in the cache (CC) or data from the cache (CC) in response to a cache management request signal. can be read. Additionally, SICC 230 is a cache that maintains data consistency between local caches and/or shared caches of processing circuits, such as CPU 210, sub-processing circuit 220, and other processing circuits. It can operate as a coherency controller.

서브-프로세싱 회로(220)는 수신되는 데이터를 압축 또는 압축해제할 수 있으며, 또한 데이터를 버퍼링할 수 있다. 서브-프로세싱 회로(220)는 주소 매칭 테이블(AMT)을 이용하여, 수신되는 엑세스 요청에 포함되는 쉐도우 물리 주소를 유효 물리 주소에 매칭되는 가상 주소로 변환할 수 있다. 도 12b를 참조하여 설명한 바와 같이, 주소 매칭 테이블(AMT)은 압축 API에 의하여 생성될 수 있다. 서브-프로세싱 회로(220)는 또한, SICC(230)로 제공되는 캐시 관리 요청 신호를 SICC(230)로 출력할 수 있다. Sub-processing circuitry 220 may compress or decompress the received data and may also buffer the data. The sub-processing circuit 220 may use an address matching table (AMT) to convert a shadow physical address included in a received access request into a virtual address matching a valid physical address. As described with reference to FIG. 12b, the address matching table (AMT) can be created by the compression API. The sub-processing circuit 220 may also output a cache management request signal provided to the SICC 230 to the SICC 230.

MMU(250)는 SICC(230)로부터 수신되는 가상 주소를 유효 물리 주소로 변환할 수 있다. MMU(250)는 제2 페이지 테이블(PGTB2)을 참조하여 가상 주소를 유효 물리 주소로 변환할 수 있다. 실시예에 있어서, 제2 페이지 테이블(PGTB2)은 DRAM(300)의 압축 버퍼(CBUF)에 엑세스 하는 다른 프로세싱 회로(예컨대 ISP, GSP 등)가 이용하는 페이지 테이블과 동일할 수 있다. The MMU 250 may convert the virtual address received from the SICC 230 into a valid physical address. The MMU 250 may convert a virtual address into a valid physical address by referring to the second page table (PGTB2). In an embodiment, the second page table PGTB2 may be the same as the page table used by other processing circuits (eg, ISP, GSP, etc.) that access the compression buffer (CBUF) of the DRAM 300.

NoC(240)는 서브-프로세싱 회로(220) 및 MMU(250)로부터 출력되는 요청 신호, 예컨대 엑세스 요청 신호 또는 캐시 관리 요청 신호를 SICC(230)로 전송할 수 있으며, 또한 NoC(240)는 서브 프로세싱 회로(220)와 SICC(230) 간에 데이터 송수신 경로로서 동작할 수 있다. NoC(240)는 MMU(250)로부터 유효 물리 주소를 포함하는 엑세스 요청을 수신하고, 엑세스 요청을 SICC(230)로 전송할 수 있다. NoC(240)는 SICC(230)가 MMU(250)로부터 수신하는 엑세스 요청을 기초로 DRAM(300)의 압축 버퍼(CBUF)로부터 독출되는 압축 데이터를 서브-프로세싱 회로(220)로 전송할 수 있다. 또한, NoC(240)는 서브-프로세싱 회로(220)가 압축해제한 압축해제된 데이터를 SICC(230)로 전송하고, SICC(230)는 압축해제된 데이터를 CPU(210)로 전송할 수 있다. The NoC 240 may transmit a request signal output from the sub-processing circuit 220 and the MMU 250, for example, an access request signal or a cache management request signal, to the SICC 230, and the NoC 240 may perform sub-processing. It can operate as a data transmission/reception path between the circuit 220 and the SICC 230. NoC 240 may receive an access request including a valid physical address from MMU 250 and transmit the access request to SICC 230. The NoC 240 may transmit compressed data read from the compression buffer (CBUF) of the DRAM 300 to the sub-processing circuit 220 based on an access request that the SICC 230 receives from the MMU 250. Additionally, the NoC 240 may transmit the decompressed data decompressed by the sub-processing circuit 220 to the SICC 230, and the SICC 230 may transmit the decompressed data to the CPU 210.

도 14a 및 도 14b는 본 개시의 예시적 실시예에 따른 애플리케이션 프로세서(200)의 독출 동작 및 기입 동작을 나타낸다. 도 14a는 AP(200)의 CPU(210)가 DRAM(300)의 압축 버퍼(CBUF)로부터 우회적으로 압축된 이미지 데이터를 독출하는 과정을 나타내고, 도 14b는 CPU(210)가 DRAM(300)의 압축 버퍼(CBUF)로 우회적으로 이미지 데이터를 기입하는 과정을 나타낸다. 14A and 14B illustrate read operations and write operations of the application processor 200 according to an exemplary embodiment of the present disclosure. FIG. 14A shows a process in which the CPU 210 of the AP 200 indirectly reads compressed image data from the compression buffer (CBUF) of the DRAM 300, and FIG. 14B shows the process in which the CPU 210 reads the compressed image data from the DRAM 300. It represents the process of indirectly writing image data into the compression buffer (CBUF).

도 14a를 참조하면, CPU(210)는 쉐도우 물리 주소 A를 포함하는 독출(read)요청 신호를 SICC(230)으로 출력할 수 있다(동작 ①). 독출 요청 신호는 DRAM(300)으로부터 이미지 데이터의 일부, 예컨대 한 프레임의 이미지 데이터의 적어도 한 영역에 해당하는 픽셀 값들을 독출하기를 요청할 수 있다. Referring to FIG. 14A, the CPU 210 may output a read request signal including the shadow physical address A to the SICC 230 (operation ①). The read request signal may request to read a portion of image data from the DRAM 300, for example, pixel values corresponding to at least one area of image data of one frame.

SICC(230)는 수신되는 엑세스 요청 신호에 포함되는 물리 주소가 쉐도우 물리 주소인지 또는 유효 물리 주소인지 판단할 수 있으며, 쉐도우 물리 주소 A를 포함하는 독출 요청 신호를 서브 프로세싱 회로(220)로 전송할 수 있다(동작 ②). The SICC 230 can determine whether the physical address included in the received access request signal is a shadow physical address or a valid physical address, and can transmit a read request signal including the shadow physical address A to the sub-processing circuit 220. There is (action ②).

서브-프로세싱 회로(220)는 쉐도우 물리 주소 A를 가상 주소(VA)로 변환할 수 있다(동작 ③). 서브-프로세싱 회로(220)는 쉐도우 물리 주소 A를 압축된 이미지 데이터의 패킷들 중 독출이 요청된 픽셀들을 포함하는 패킷의 헤더의 가상 주소 B 및 페이로드의 가상 주소 C로 변환할 수 있다. 서브-프로세싱 회로(220)는 주소 매칭 테이블(예를 들어, 도 15의 AMT)을 참조하여, 쉐도우 물리 주소 A를 헤더의 가상 주소 B 및 페이로드의 가상 주소 C로 변환할 수 있다. The sub-processing circuit 220 may convert the shadow physical address A to a virtual address (VA) (operation ③). The sub-processing circuit 220 may convert the shadow physical address A into the virtual address B of the header and the virtual address C of the payload of the packet including the pixels requested to be read among the packets of compressed image data. The sub-processing circuit 220 may refer to an address matching table (e.g., AMT in FIG. 15) to translate the shadow physical address A into the virtual address B of the header and the virtual address C of the payload.

도 15는 본 개시의 예시적 실시예에 따른 주소 매칭 테이블의 일 예를 나타낸다. 도 15의 주소 매칭 테이블(AMT)은 도 11a 및 도 11b의 가상 주소 공간(VAS)과 쉐도우 물리 주소 공간(SPAS)의 맵핑 관계를 기초로 생성된 것을 가정하기로 한다. Figure 15 shows an example of an address matching table according to an exemplary embodiment of the present disclosure. It is assumed that the address matching table (AMT) of FIG. 15 is created based on the mapping relationship between the virtual address space (VAS) and the shadow physical address space (SPAS) of FIGS. 11A and 11B.

도 15를 참조하면, 주소 매칭 테이블(AMT)은 압축해제된 뷰를 위한 물리 주소, 다시 말해서, 쉐도우 물리 주소(SPAS), 쉐도우 물리 주소(SPAS)에 대응하는 가상 주소(VACB)(압축된 버퍼의 가상 주소), 헤더의 가상 주소(VAHD) 및 이미지 데이터에 대한 정보(IF_IMG), 예를 들어 이미지 데이터의 너비, 높이, 포맷 등을 포함할 수 있다. 여기서, 쉐도우 물리 주소(SPAS)는 쉐도우 물리 주소 영역의 시작 주소를 나타내며 이하, 시작 주소(SPAS)로 지칭하기로 한다. 예를 들어, 제1 쉐도우 물리 주소 shadow_p0에 가상 주소(VACB)로서, comp_buf_o0, 및 헤더의 가상 주소(VAHD)로서 comp_buf_o0+img0_size가 맵핑되고, 제2 쉐도우 물리 주소 shadow_p1에 가상 주소(VACB)로서, comp_buf_o1, 및 헤더의 가상 주소(VAHD)로서 comp_buf_o1+img1_size가 맵핑될 수 있다. 여기서, img0_size 및 img1_size는 가상 주소(VACB)인 comp_buf_o0 및 comp_buf_o1에 저장된 압축된 이미지 데이터의 사이즈이다. 제1 쉐도우 물리 주소 shadow_p0 및 제2 쉐도우 물리 주소 shadow_p1에 저장된 제1 이미지 데이터 및 제2 이미지 데이터(압축되지 않은 또는 압축해제된 이미지 데이터)의 높이, 넒이 및 포맷은, 각각 3840, 2160 및 NV12일 수 있다. Referring to FIG. 15, the address matching table (AMT) contains the physical address for the decompressed view, that is, the shadow physical address (SPA S ), the virtual address (VA CB ) corresponding to the shadow physical address (SPA S ) ( It may include the virtual address of the compressed buffer), the virtual address of the header (VA HD ), and information about the image data (IF_IMG), such as the width, height, and format of the image data. Here, the shadow physical address (SPA S ) represents the starting address of the shadow physical address area and will hereinafter be referred to as the starting address (SPA S ). For example, comp_buf_o0 as a virtual address (VA CB ) to the first shadow physical address shadow_p0, and comp_buf_o0+img0_size as the virtual address (VA HD ) of the header are mapped, and the virtual address (VA CB ), comp_buf_o1, and comp_buf_o1+img1_size can be mapped as the virtual address (VA HD ) of the header. Here, img0_size and img1_size are the sizes of compressed image data stored in comp_buf_o0 and comp_buf_o1, which are virtual addresses (VA CB ). The height, width and format of the first image data and the second image data (uncompressed or decompressed image data) stored at the first shadow physical address shadow_p0 and the second shadow physical address shadow_p1 are 3840, 2160 and NV12, respectively. You can.

계속하여 도 14a를 참조하면, 서브-프로세싱 회로(220)는 쉐도우 물리 주소 A로부터 시작 주소(SPAS) 및 오프셋 α를 판단하고, 어드레스 매칭 테이블(AMT)에서, 쉐도우 물리 주소 A의 시작 주소(SPAS)에 대응하는 가상 주소(VACB), 이미지 데이터의 사이즈 및 이미지 데이터의 정보를 찾을 수 있다. 예를 들어, 쉐도우 물리 주소 A가 제1 쉐도우 물리 주소 영역의 한 영역(예를 들어, 이미지 데이터의 한 서브 블록)을 나타낼 경우, 쉐도우 물리 주소 A는 제1 쉐도우 물리 주소 shadow_p0에 오프셋 α가 더해진 값을 가질 수 있다. 이때, 오프셋 α는 이미지 데이터의 사이즈보다 작을 수 있다. 서브-프로세싱 회로(220)는 어드레스 매칭 테이블(AMT)에서 제1 쉐도우 물리 주소 shadow_p0에 대응하는 가상 주소(VACB)로서 comp_buf_o0, 이미지 데이터의 사이즈로서 img0_size, 그리고 이미지 데이터에 대한 정보로서, 너비 3840, 높이 2160 및 포맷 NV12를 찾을 수 있다. 서브-프로세싱 회로(220)는 오프셋 α, 이미지 데이터의 포맷, 너비를 기초로 CPU(210)의 독출 요청에 따른 이미지 데이터의 좌표(x, y)를 계산할 수 있다. 서브-프로세싱 회로(220)는 가상 주소(VACB)인 comp_buf_o0와 이미지 데이터의 좌표 (x, y)를 기초로 이미지 데이터의 좌표 (x, y)에 해당하는 픽셀들을 포함하는 서브 블록의 페이로드의 가상 주소 B와 헤더의 가상 주소 C를 산출할 수 있다. Continuing to refer to FIG. 14A, the sub-processing circuit 220 determines the starting address (SPA S ) and offset α from the shadow physical address A, and in the address matching table (AMT), the starting address of the shadow physical address A ( You can find the virtual address (VA CB ), size of image data, and information about image data corresponding to SPA S ). For example, if shadow physical address A represents one area of the first shadow physical address area (e.g., one subblock of image data), shadow physical address A is the first shadow physical address shadow_p0 plus offset α. It can have a value. At this time, offset α may be smaller than the size of the image data. The sub-processing circuit 220 has comp_buf_o0 as a virtual address (VA CB ) corresponding to the first shadow physical address shadow_p0 in the address matching table (AMT), img0_size as the size of the image data, and a width of 3840 as information about the image data. , height 2160 and format NV12. The sub-processing circuit 220 may calculate the coordinates (x, y) of the image data according to the read request from the CPU 210 based on the offset α, the format, and the width of the image data. The sub-processing circuit 220 is a payload of a sub-block including pixels corresponding to the coordinates (x, y) of the image data based on comp_buf_o0, which is a virtual address (VA CB ), and the coordinates (x, y) of the image data. The virtual address B of and the virtual address C of the header can be calculated.

서브-프로세싱 회로(220)는 페이로드의 가상 주소(VA) B와 헤더의 가상 주소 C를 MMU(250)에 전송할 수 있다(동작 ④). The sub-processing circuit 220 may transmit the virtual address (VA) B of the payload and the virtual address C of the header to the MMU 250 (operation ④).

MMU(250)는 제2 페이지 테이블(PGTB2)를 참조하여 페이로드의 가상 주소 B와 헤더의 가상 주소 C를 페이로드의 물리 주소(PA) D 및 헤더의 물리 주소 E로 변환할 수 있다. 페이로드의 물리 주소 D 및 헤더의 물리 주소 E는 유효 물리 주소이다. 실시예에 있어서, 제2 페이지 테이블(PGTB2)은 AP(200) 내에서 이미지 데이터를 처리하는 다른 프로세싱 회로(예컨대 ISP, GPU 등)이 참조하는 페이지 테이블일 수 있다. MMU(250)는 페이로드의 물리 주소 D 및 헤더의 물리 주소 E를 포함하는 독출 요청 신호들을 NoC(240)로 전송하고, NoC(240)는 독출 요청 신호들을 SICC(230)로 전송할 수 있다(동작 ⑤). SICC(230)는 NoC(240)로부터의 독출 요청 신호들이 유효 물리 주소를 포함하고 있는 바, 독출 요청 신호들을 DRAM(300)으로 전달할 수 있다. The MMU 250 may refer to the second page table (PGTB2) to convert the virtual address B of the payload and the virtual address C of the header into the physical address (PA) D of the payload and the physical address E of the header. The physical address D of the payload and the physical address E of the header are valid physical addresses. In an embodiment, the second page table PGTB2 may be a page table referenced by another processing circuit (eg, ISP, GPU, etc.) that processes image data within the AP 200. The MMU 250 may transmit read request signals including the physical address D of the payload and the physical address E of the header to the NoC 240, and the NoC 240 may transmit the read request signals to the SICC 230 ( Action ⑤). Since the read request signals from the NoC 240 include valid physical addresses, the SICC 230 can transmit the read request signals to the DRAM 300.

DRAM(300)의 압축 버퍼(CBUF)에서, CPU(210)가 독출 요청하는 이미지 데이터의 적어도 한 영역의 픽셀 값들을 포함하는 압축된 이미지 데이터의 헤더(HD) 및 페이로드(PL)가 DRAM(300)으로부터 독출되고, SICC(230) 및 NoC(240)를 통해 서브-프로세싱 회로(220)로 제공될 수 있다(동작 ⑥).In the compression buffer (CBUF) of the DRAM 300, the header (HD) and payload (PL) of the compressed image data including pixel values of at least one region of the image data requested by the CPU 210 to be read are stored in the DRAM ( 300) and may be provided to the sub-processing circuit 220 through the SICC 230 and NoC 240 (operation ⑥).

서브-프로세싱 회로(220)는 압축된 이미지 데이터를 압축해제할 수 있다(동작 ⑦). 서브 프로세싱 회로(220)는 헤더(HD)에 포함된 압축 정보를 기초로 페이로드(PL)를 디코딩함으로써, 압축된 이미지 데이터를 압축해제할 수 있다. 서브-프로세싱 회로(220)는 압축 해제된 이미지 데이터(DCDT)를 NoC(240) 및 SICC(230)를 통해 CPU(210)로 전송할 수 있다(동작 ⑧). 압축 해제된 이미지 데이터(DCDT)는 The sub-processing circuit 220 may decompress the compressed image data (operation ⑦). The sub-processing circuit 220 may decompress the compressed image data by decoding the payload (PL) based on the compression information included in the header (HD). The sub-processing circuit 220 may transmit the decompressed image data (DCDT) to the CPU 210 through the NoC 240 and SICC 230 (operation ⑧). Decompressed image data (DCDT) is

실시예에 있어서, 서브-프로세싱 회로(220)는 압축 해제된 이미지 데이터와 관련하여 SICC(230)에 캐시 관리 요청 신호(QRC)를 전송할 수 있다(동작 ⑨). 예를 들어, 압축 해제된 이미지 데이터(DCDT)는 CPU(210)가 요청한 적어도 한 영역의 픽셀 값들을 포함한 한 서브 블록의 픽셀 값들을 포함할 수 있으며, 서브-프로세싱 회로(220)는 CPU(210)에 제공한 픽셀 값들을 제외한 나머지 픽셀 값들에 대하여 캐시(CC)에 저장할 것을 요청하는 캐시 관리 요청 신호(QRC)를 SICC(230)로 전송할 수 있다. CPU(210)가 한 서브 블록 내의 픽셀 값들을 연속하여 독출 요청할 경우, 캐시 힛(hit)이 발생할 수 있으며, DRAM(300)에 엑세스 할 필요 없이 캐시(CC)에 이미 저장된 픽셀 값들을 CPU(210)에 전송할 수 있다. 이에 따라 캐시의 히트 율(hit ratio)를 높일 수 있다. In an embodiment, the sub-processing circuit 220 may transmit a cache management request signal (QRC) to the SICC 230 in relation to the decompressed image data (operation ⑨). For example, the decompressed image data (DCDT) may include pixel values of one sub-block including pixel values of at least one region requested by the CPU 210, and the sub-processing circuit 220 may ) A cache management request signal (QRC) requesting to store in the cache (CC) the remaining pixel values, excluding the pixel values provided in ), may be transmitted to the SICC 230. If the CPU 210 continuously requests to read pixel values within one sub-block, a cache hit may occur, and the pixel values already stored in the cache (CC) may be read by the CPU 210 without the need to access the DRAM 300. ) can be transmitted to. Accordingly, the hit ratio of the cache can be increased.

실시예에 있어서, 서브-프로세싱 회로(220)는 CPU(210)로부터의 독출 요청 신호들을 분석하고, 독출 요청 신호들 요청하는 이미지 데이터의 특정 패턴(예컨대 이미지 데이터 내에서 스트라이프 패턴 등)을 판단하고, CPU(210)가 독출을 요청할 것으로 예상되는 이미지 데이터를 DRAM(300)으로부터 프리 패치(pre-fetch)하도록 하는 캐시 관리 요청 신호(QRC)를 SICC(230)로 전송할 수 있다.In an embodiment, the sub-processing circuit 220 analyzes read request signals from the CPU 210, determines a specific pattern of image data (e.g., a stripe pattern, etc. within the image data) requesting the read request signals, and , the CPU 210 may transmit a cache management request signal (QRC) to the SICC 230 to pre-fetch image data expected to be read from the DRAM 300.

도 14b를 참조하면, CPU(210)는 쉐도우 물리 주소 A를 포함하는 기입(write)요청 신호를 SICC(230)로 출력할 수 있다(동작 ①). 기입 요청 신호는 DRAM(300)에 이미지 데이터의 일부, 예컨대 한 프레임의 이미지 데이터의 적어도 한 영역에 해당하는 픽셀 값들을 기입(또는 저장)하기를 요청할 수 있다. Referring to FIG. 14b, the CPU 210 may output a write request signal including the shadow physical address A to the SICC 230 (operation ①). The write request signal may request to write (or store) a portion of image data, for example, pixel values corresponding to at least one area of image data of one frame, in the DRAM 300.

SICC(230)는 쉐도우 물리 주소 A를 포함하는 기입 요청 신호를 서브 프로세싱 회로(220)로 전송할 수 있다(동작 ②). 서브-프로세싱 회로(220)는 쉐도우 물리 주소 A를 가상 주소(VA)로 변환할 수 있다(동작 ③). 서브-프로세싱 회로(220)는 주소 매칭 테이블(예를 들어, 도 15의 AMT)을 참조하여, 쉐도우 물리 주소 A를 헤더의 가상 주소 B 및 페이로드의 가상 주소 C로 변환할 수 있다. 서브-프로세싱 회로(220)는 기입 요청받은 픽셀 값들을 포함한 서브 블록에 관련하여 SICC(230)에 캐시 관리 요청 신호(QRC)를 전송할 수 있다(동작 ④). 실시예에 있어서, 서브-프로세싱 회로(220)는 기입 요청받은 픽셀 값들을 포함한 서브 블록에 대하여 SICC(230)에 'clean invalid' 요청 신호를 전송할 수 있다. SICC(230)는 CPU(210)를 위한 캐시들, 예컨대 L1 캐시, L2 캐시, L3 캐시 및 LLC (last level cache)에 대하여 더티 라인(dirty line)들을 플러시(flush) 하고, 서브-프로세싱 회로(220)를 위한 캐시, 예컨대 캐시(CC)에만 플러시된 라인(flushed line)이 있도록 할 수 있다. SICC 230 may transmit a write request signal including the shadow physical address A to the sub-processing circuit 220 (operation ②). The sub-processing circuit 220 may convert the shadow physical address A to a virtual address (VA) (operation ③). The sub-processing circuit 220 may refer to an address matching table (e.g., AMT in FIG. 15) to translate the shadow physical address A into the virtual address B of the header and the virtual address C of the payload. The sub-processing circuit 220 may transmit a cache management request signal (QRC) to the SICC 230 in relation to the sub-block containing the pixel values requested to be written (operation ④). In an embodiment, the sub-processing circuit 220 may transmit a 'clean invalid' request signal to the SICC 230 for a sub-block containing pixel values requested to be written. SICC 230 flushes dirty lines for caches for CPU 210, such as L1 cache, L2 cache, L3 cache, and LLC (last level cache), and sub-processing circuitry ( 220), for example, only the cache (CC) may have a flushed line.

실시예에 있어서, 기입 요청된 픽셀 값들을 포함하는 서브 블록의 모든 픽셀 값들이 캐시(CC)에 있는 상황이 아니라면, 서브-프로세싱 회로(220)는 도 14a의 동작 ④ 내지 동작 ⑦ 단계에 따라 서브 블록에 해당하는 헤더(HD) 및 페이로드(PL)를 DRAM(300)의 압축 버퍼(CBUF)에서 독출하고(동작 ⑥), 헤더(HD)의 압축 정보를 기초로 페이로드(PL)를 압축해제 할 수 있다(동작 ⑦). 서브-프로세싱 회로(220)는 CPU(210)에 의해 기입 요청된 픽셀 값들을 기초로 서브 블록을 업데이트하고, 업데이트된 서브 블록을 압축하고(동작 ⑧), 압축된 이미지 데이터(CDT), 다시 말해서 서브 블록의 헤더 및 페이로드를 DRAM(300)의 압축 버퍼(CBUF)에 다시 기입할 수 있다(동작 ⑨).In an embodiment, unless all pixel values of a sub-block containing write-requested pixel values are in the cache (CC), the sub-processing circuit 220 performs sub-processing according to steps ④ to ⑦ of FIG. 14A. The header (HD) and payload (PL) corresponding to the block are read from the compression buffer (CBUF) of the DRAM 300 (operation ⑥), and the payload (PL) is compressed based on the compression information of the header (HD). It can be canceled (action ⑦). The sub-processing circuit 220 updates the sub-block based on the pixel values requested to be written by the CPU 210, compresses the updated sub-block (operation ⑧), and produces compressed image data (CDT), that is, The header and payload of the subblock can be written back to the compression buffer (CBUF) of the DRAM 300 (operation ⑨).

도 16은 본 개시의 예시적 실시예에 따른 시스템 온 칩을 나타내는 블록도이다.Figure 16 is a block diagram showing a system-on-chip according to an exemplary embodiment of the present disclosure.

도 16을 참조하면, 시스템 온 칩(400, SoC)은 CPU(410), RAM(random access memory)(420), 멀티미디어 IP(430), 메모리 컨트롤러(440), 서브-프로세싱 회로(450), 센서 인터페이스(460), 및 디스플레이 컨트롤러(470)를 포함할 수 있다. 시스템 온 칩(400)은 통신 모듈, ROM(read only memory) 등과 같이 범용적으로 사용되는 다른 구성들을 더 포함할 수 있다. 시스템 온 칩(400)의 구성들, 예컨대, CPU(410), RAM(random access memory)(420), 멀티미디어 IP(430), 메모리 컨트롤러(440), 서브-프로세싱 회로(450), 센서 인터페이스(460), 및 디스플레이 컨트롤러(470)는 버스(480)를 통하여 데이터를 송수신할 수 있다. 버스(480)의 표준 규격으로서, AMBA 프로토콜이 적용될 수 있으며, 이 외에도, uNetwork이나 CoreConnect, OCP-IP의 오픈 코어 프로토콜(Open Core Protocol) 등의 프로토콜이 적용될 수 있다. 실시예에 있어서, 버스(480)는 네트워크 온 칩 형태로 구현될 수 있다.Referring to FIG. 16, the system-on-chip 400 (SoC) includes a CPU 410, random access memory (RAM) 420, multimedia IP 430, memory controller 440, sub-processing circuit 450, It may include a sensor interface 460 and a display controller 470. The system-on-chip 400 may further include other commonly used components such as a communication module, read only memory (ROM), etc. Components of the system-on-chip 400, such as CPU 410, random access memory (RAM) 420, multimedia IP 430, memory controller 440, sub-processing circuit 450, sensor interface ( 460) and the display controller 470 can transmit and receive data through the bus 480. As a standard for the bus 480, the AMBA protocol can be applied, and in addition, protocols such as uNetwork, CoreConnect, and OCP-IP's Open Core Protocol can be applied. In an embodiment, the bus 480 may be implemented in a network-on-chip format.

CPU(410)는 시스템 온 칩(400)의 전반적인 동작을 제어할 수 있으며, 전술한 실시예들에 따른 프로세서(도 1의 110) 및/또는 CPU(도 13의 210)에 대응할 수 있다. CPU(410)는 운영체제 및 애플리케이션을 실행할 수 있으며, 애플리케이션이 생성한 가상 주소를 물리 주소로 변환할 수 있다. 이때, CPU(410)는 애플리케이션에 대하여 설정된 제1 페이지 테이블을 기초로 가상 주소를 메모리(445)의 물리 주소 영역에 대응하는 유효 물리 주소, 및 메모리(445)의 물리 주소 영역을 벗어난 쉐도우 주소 영역에 대응하는 쉐도우 물리 주소 중 하나로 변환할 수 있다. CPU(410)는 유효 물리 주소 또는 쉐도우 물리 주소를 포함하는 메모리(440)에 대한 엑세스 요청 신호(예컨대 독출 요청 신호 또는 기입 요청 신호)를 출력할 수 있다. 엑세스 요청 신호는 버스(480)를 통해 메모리 컨트롤러(440)로 전송되거나 또는 서브-프로세싱 회로(450)로 전송될 수 있다. The CPU 410 may control the overall operation of the system-on-chip 400 and may correspond to the processor (110 in FIG. 1) and/or CPU (210 in FIG. 13) according to the above-described embodiments. The CPU 410 can run an operating system and applications, and can convert virtual addresses generated by applications into physical addresses. At this time, the CPU 410 determines the virtual address based on the first page table set for the application into an effective physical address corresponding to the physical address area of the memory 445 and a shadow address area outside the physical address area of the memory 445. It can be converted to one of the corresponding shadow physical addresses. The CPU 410 may output an access request signal (eg, a read request signal or a write request signal) to the memory 440 including a valid physical address or a shadow physical address. The access request signal may be transmitted to the memory controller 440 through the bus 480 or to the sub-processing circuit 450.

RAM(420)은 DRAM 또는 SRAM 등의 휘발성 메모리로 구현될 수 있으며, 또한 RAM(420)은 PRAM, MRAM, ReRAM, FRAM 등과 같은 저항성 메모리로 구현될 수 있다. RAM(420)은 프로그램들, 데이터, 및/또는 명령들(instructions)을 일시적으로 저장할 수 있다. The RAM 420 may be implemented as a volatile memory such as DRAM or SRAM, and the RAM 420 may be implemented as a resistive memory such as PRAM, MRAM, ReRAM, or FRAM. RAM 420 may temporarily store programs, data, and/or instructions.

멀티미디어 IP(430)는 이미지 데이터, 예컨대 정지 영상 또는 동영상에 대한 이미지 처리를 수행할 수 있다. 예를 들어, 멀티미디어 IP(430)는 ISP, GPU, VPU(video processing unit), DPU(display processing unit) 및 NPU(neural network processing unit) 중 적어도 하나를 포함할 수 있다.The multimedia IP 430 may perform image processing on image data, such as still images or moving images. For example, the multimedia IP 430 may include at least one of an ISP, GPU, video processing unit (VPU), display processing unit (DPU), and neural network processing unit (NPU).

ISP는 수신되는 이미지 데이터의 포맷을 변경하거나 이미지 데이터의 화질을 보정할 수 있다. 예를 들어, ISP는 RGB 방식의 이미지 데이터를 입력 데이터로서 수신하고, 이를 YUV 방식의 이미지 데이터로 변환할 수 있다. 예를 들어, ISP는 수신되는 이미지 데이터의 감마값을 조정하거나, 휘도를 조정하거나 또는 DR(Dynamic Range)를 넓히거나 또는 노이즈를 제거하는 등의 이미지 처리를 수행함으로써, 이미지 데이터의 화질을 보정할 수 있다. The ISP can change the format of the received image data or correct the quality of the image data. For example, an ISP can receive RGB image data as input data and convert it into YUV image data. For example, the ISP can correct the image quality of the image data by performing image processing such as adjusting the gamma value of the received image data, adjusting the luminance, widening the DR (Dynamic Range), or removing noise. there is.

GPU는 이차원 혹은 3차원 그래픽의 연산 및 생성을 할 수 있다. GPU는 그래픽 데이터의 처리에 특화되어 병렬적으로 그래픽 데이터를 처리할 수 있다. 나아가, GPU는 기하 구조 계산, 스칼라 및 벡터 부동 소수점을 계산 등과 같은 복잡한 연산을 수행하는데 이용될 수 있다. GPU는 OpenCL, OpenGL, WebGL 등과 같은 API(Application Programming Interface)를 사용하여 인코딩되는, 다양한 명령들을 실행할 수 있다.GPUs can compute and generate two-dimensional or three-dimensional graphics. GPU is specialized in processing graphics data and can process graphics data in parallel. Furthermore, GPUs can be used to perform complex operations such as geometric calculations, scalar and vector floating point calculations, etc. GPUs can execute various instructions that are encoded using APIs (Application Programming Interfaces) such as OpenCL, OpenGL, WebGL, etc.

VPU는 수신되는 비디오 영상의 화질을 보정하거나, 비디오 영상의 캠코딩(camcoding), 플레이백(play back) 등 영상의 녹화와 재생을 수행할 수 있다.The VPU can correct the quality of received video images or perform video recording and playback, such as camcoding and playback of video images.

DPU는 수신되는 이미지 데이터를 디스플레이 장치(475)에 표시하기위한 이미지 처리를 수행할 수 있다. 예를 들어, DPU는 수신된 이미지 데이터의 포맷을 디스플레이에 표시하기에 적합한 포맷으로 변경하거나, 디스플레이에 대응하는 감마 값을 기초로 이미지 데이터를 보정할 수 있다. The DPU may perform image processing to display received image data on the display device 475. For example, the DPU may change the format of the received image data to a format suitable for displaying on the display, or may correct the image data based on a gamma value corresponding to the display.

NPU는 학습된 뉴럴 네트워크를 기초로 수신되는 이미지 데이터에 대한 이미지 처리를 수행하거나, 이미지 데이터로부터 복수의 특징(feature)을 도출하고, 복수의 특징을 기초로 이미지 데이터에 포함되는 객체, 배경 등을 인식할 수 있다. NPU는 뉴럴 네트워크의 연산에 특화되어 병렬적으로 이미지 데이터를 처리할 수 있다. The NPU performs image processing on received image data based on a learned neural network, derives multiple features from image data, and identifies objects, backgrounds, etc. included in the image data based on the multiple features. It can be recognized. NPU is specialized in neural network operations and can process image data in parallel.

메모리 컨트롤러(440)는 시스템 온 칩(400)과 메모리(445) 간에 데이터 또는 커맨드를 인터페이싱할 수 있다. 메모리 컨트롤러(440)는 버스(480)로부터 수신되는 엑세스 요청 신호를 메모리(445)로 전송할 수 있다. 도 1을 참조하여 전술한 바와 같이, 메모리(455)는 DRAM, SRAM 또는 SDRAM 등의 휘발성 메모리 또는 PRAM, MRAM, ReRAM, FeRAM 또는 NAND flash 등의 비휘발성 메모리로 구현될 수 있다. 메모리(455)는 메모리 카드(예컨대, MMC, eMMC, SD, micro SD) 등으로 구현될 수도 있다. 메모리(455)는 압축 버퍼를 포함할 수 있으며, 압축된 이미지 데이터를 저장할 수 있다. The memory controller 440 may interface data or commands between the system-on-chip 400 and the memory 445 . The memory controller 440 may transmit the access request signal received from the bus 480 to the memory 445. As described above with reference to FIG. 1, the memory 455 may be implemented as volatile memory such as DRAM, SRAM, or SDRAM, or non-volatile memory such as PRAM, MRAM, ReRAM, FeRAM, or NAND flash. The memory 455 may be implemented as a memory card (eg, MMC, eMMC, SD, micro SD). The memory 455 may include a compression buffer and may store compressed image data.

멀티미디어 IP(430)는 이미지 처리된 데이터를 압축하고, 압축된 데이터를 메모리(445)에 저장할 수 있다. 멀티미디어 IP(430)는 MMU를 포함할 수 있으며, MMU는 제2 페이지 테이블(CPU가 이용하는 제1 페이지 테이블과 상이함)을 기초로 압축된 데이터가 저장될 가상 주소를 메모리(445)의 물리 주소 영역에 대응하는 유효 물리 주소로 변환할 수 있다. 멀티미디어 IP(430)는 유효 물리 주소를 포함하는 메모리(440)에 대한 엑세스 요청 신호를 버스(480)를 통해 메모리 컨트롤러(440)로 전송할 수 있다. The multimedia IP 430 may compress image-processed data and store the compressed data in the memory 445. The multimedia IP 430 may include an MMU, and the MMU determines the virtual address where the compressed data will be stored based on the second page table (different from the first page table used by the CPU) to the physical address of the memory 445. It can be converted to a valid physical address corresponding to the area. The multimedia IP 430 may transmit an access request signal to the memory 440 including a valid physical address to the memory controller 440 through the bus 480.

서브-프로세싱 회로(450)는 애플리케이션이 메모리(445)로부터 독출하는 데이터 또는 메모리(445)에 기입할 데이터에 대하여 CPU(410)가 제공하지 않는 기능, 예컨대 데이터 처리를 지원할 수 있다. 서브-프로세싱 회로(450)는 CPU(410)로부터 전송된 엑세스 요청을 포함하는 쉐도우 물리 주소를 메모리(455)의 물리 주소 영역을 나타내는 유효 물리 주소로 변환하고, 유효 물리 주소를 기초로 메모리(445)로부터 데이터를 독출할 수 있다. 이에 따라, CPU(410)는 서브-프로세싱 회로(450)를 통해 메모리(445)를 우회적으로 엑세스할 수 있다. The sub-processing circuit 450 may support functions that the CPU 410 does not provide, such as data processing, for data read from the memory 445 by an application or data to be written to the memory 445. The sub-processing circuit 450 converts the shadow physical address containing the access request transmitted from the CPU 410 into a valid physical address representing the physical address area of the memory 455, and stores the memory 445 based on the effective physical address. ), data can be read from. Accordingly, the CPU 410 can indirectly access the memory 445 through the sub-processing circuit 450.

실시예에 있어서, 서브-프로세싱 회로(450)는 제1 페이지 테이블 생성 시 함께 생성되는 주소 매칭 테이블을 이용하여 쉐도우 물리 주소를 가상 주소로 변환하고, 멀티미디어 IP(430)에 대하여 설정되는 제2 페이지 테이블을 이용하여 가상 주소를 유효 물리 주소로 변환할 수 있다. 실시예에 있어서, 제2 페이지 테이블을 이용하여 가상 주소를 유효 물리 주소로 변환하는 시스템 MMU는 서브-프로세싱 회로(450)와는 별개의 회로로 구현될 수 있다. 실시예에 있어서, 멀티미디어 IP(430)의 MMU가 시스템 MMU로서 이용될 수 있다. In an embodiment, the sub-processing circuit 450 converts a shadow physical address into a virtual address using an address matching table created together when creating the first page table, and converts the shadow physical address to a virtual address and the second page set for the multimedia IP 430. You can convert a virtual address into a valid physical address using a table. In an embodiment, the system MMU, which converts a virtual address to a valid physical address using the second page table, may be implemented as a separate circuit from the sub-processing circuit 450. In an embodiment, the MMU of Multimedia IP 430 may be used as the system MMU.

서브-프로세싱 회로(450)는 전술한 실시예들에 따른 서브-프로세싱 회로(도 1의 120, 도 13의 220)에 대응할 수 있다. 따라서, 서브-프로세싱 회로(450)에 대한 상세한 설명은 생략하기로 한다. The sub-processing circuit 450 may correspond to the sub-processing circuit (120 in FIG. 1 and 220 in FIG. 13) according to the above-described embodiments. Therefore, detailed description of the sub-processing circuit 450 will be omitted.

센서 인터페이스(460)는 시스템 온 칩(400)과 이미지 센서(465) 간에 데이터 또는 커맨드를 인터페이싱할 수 있으며, 이미지 센서(465)로부터 이미지 데이터를 수신할 수 있다. 이미지 센서(465)로부터 수신된 이미지 데이터는 멀티미디어 IP(430)의 적어도 하나의 프로세싱 회로에서 이미지 처리될 수 있으며, 또한, CPU(410)에서 실행되는 애플리케이션에 의하여 이미지 처리될 수 있다. 이미지 센서(465)로부터 수신된 이미지 데이터, 또는 이미지 처리된 이미지 데이터는 메모리(445)에 저장될 수 있다. The sensor interface 460 may interface data or commands between the system-on-chip 400 and the image sensor 465, and may receive image data from the image sensor 465. Image data received from the image sensor 465 may be image-processed in at least one processing circuit of the multimedia IP 430, and may also be image-processed by an application running on the CPU 410. Image data received from the image sensor 465 or image-processed image data may be stored in the memory 445.

디스플레이 컨트롤러(470)는 디스플레이 장치(475)로 출력되는 데이터(예컨대, 이미지 데이터)를 인터페이싱할 수 있다. 디스플레이 장치(475)는 이미지 또는 동영상에 대한 데이터를 LCD(Liquid-crystal display), AMOLED(active matrix organic light emitting diodes) 등의 디스플레이를 통해 출력할 수 있다.The display controller 470 may interface data (eg, image data) output to the display device 475. The display device 475 may output image or video data through a display such as liquid-crystal display (LCD) or active matrix organic light emitting diodes (AMOLED).

도 17은 본 개시의 예시적 실시예에 따른 애플리케이션 프로세서가 탑재되는 전자 장치를 나타내는 블록도이다.Figure 17 is a block diagram showing an electronic device equipped with an application processor according to an exemplary embodiment of the present disclosure.

전자 장치(2000)는 스마트 폰, 태블릿 PC, 랩탑 컴퓨터, 웨어러블 장치, GPS 장치, 전자책 단말기, MP3 플레이어, 디지털 카메라, 네비게이션, 드론 등과 같은 모바일 장치일 수 있으며, IoT 장치, 가전 기기, ADAS일 수도 있다. 또한 전자 장치(200)는 차량, 가구, 제조 설비, 도어, 각종 계측 기기 등에 부품으로서 구비될 수 있다. Electronic devices (2000) may be mobile devices such as smart phones, tablet PCs, laptop computers, wearable devices, GPS devices, e-readers, MP3 players, digital cameras, navigation, drones, etc., and may be IoT devices, home appliances, ADAS, etc. It may be possible. Additionally, the electronic device 200 may be provided as a component in vehicles, furniture, manufacturing facilities, doors, various measuring devices, etc.

도 17을 참조하면, 전자 장치(2000)는 애플리케이션 프로세서(AP)(2100), 카메라 모듈(2200), 워킹 메모리(2300), 스토리지(2400), 디스플레이 장치(2500), 통신 모듈(2600), 및 유저 인터페이스(2700)를 포함할 수 있다. 전자 장치(2000)는 다른 범용 구성들을 더 포함할 수 있다. Referring to FIG. 17, the electronic device 2000 includes an application processor (AP) 2100, a camera module 2200, a working memory 2300, a storage 2400, a display device 2500, a communication module 2600, and a user interface 2700. The electronic device 2000 may further include other general-purpose components.

AP(2100)는 전자 장치(2000)의 전반적인 동작을 제어하며 응용 프로그램, 운영 체제 등을 구동하는 시스템 온 칩(SoC)으로 구현될 수 있다. AP(2100)는 카메라 모듈(2200)로부터 제공되는 이미지 데이터를 이미지 처리할 수 있으며, 이미지 데이터를 디스플레이 장치(2500)에 제공하거나 또는 스토리지(2400)에 저장할 수 있다. 전술한 실시예들에 따른 SoC(도 1의 100, 도 3의 100a) 및 AP(도 13의 200, 도 16의 300)가 AP(2100)로서 적용될 수 있다. The AP 2100 controls the overall operation of the electronic device 2000 and may be implemented as a system-on-chip (SoC) that runs an application program, operating system, etc. The AP 2100 can image process image data provided from the camera module 2200, provide the image data to the display device 2500, or store the image data in the storage 2400. SoC (100 in FIG. 1, 100a in FIG. 3) and AP (200 in FIG. 13, 300 in FIG. 16) according to the above-described embodiments can be applied as the AP (2100).

실시예에 있어서 AP(2100)는 CPU(2101), 시스템 버스(2102), 및 서브-프로세싱 회로(2103)을 구비할 수 있다. 시스템 버스(2102)는 CPU (2101)로부터 수신되는 워킹 메모리(2300)에 대한 제1 엑세스 요청 신호에 포함되는 물리 주소가 유효 물리 주소인지 쉐도우 물리 주소인지 판단하고, 유효 물리 주소일 경우 제1 엑세스 요청 신호를 워킹 메모리(2300)로 전송하고, 쉐도우 물리 주소일 경우, 제1 엑세스 요청 신호를 서브-프로세싱 회로(2103)으로 전송할 수 있다. 서브-프로세싱 회로(2103)는 제1 엑세스 요청 신호에 포함되는 물리 주소를 유효 물리 주소로 변환하고, 유효 물리 주소를 포함하는 제2 엑세스 요청 신호를 시스템 버스(2102)로 전송할 수 있다. 시스템 버스(2102)는 서브-프로세싱 회로(2013)로부터의 제2 엑세스 요청 신호를 워킹 메모리(2300)로 전송할 수 있다. 실시예에 있어서, 서브-프로세싱 회로(2103)는 CPU(2101)의 제1 엑세스 요청 신호와 함께 수신되는 데이터, 또는 시스템 버스(2102)로 전송한 제2 엑세스 요청 신호에 응답하여 워킹 메모리(2300)로부터 수신되는 데이터에 대하여 압축 또는 압축해제, 또는 암호화 또는 복호화할 수 있으며, 또한, CPU(2101)가 엑세스할 것으로 예상되는 데이터를 워킹 메모리(2300)로부터 프리-패치할 수 있다. CPU(2101)는 서브-프로세싱 회로(2103)를 통해 워킹 메모리(2300)에 우회적으로 엑세스 할 수 있으며, 서브-프로세싱 회로(2103)는 CPU(2101)가 지원하지 않는 기능을 수행함으로써, CPU(2101)에서 실행되는 애플리케이션을 지원할 수 있다. In an embodiment, the AP 2100 may include a CPU 2101, a system bus 2102, and a sub-processing circuit 2103. The system bus 2102 determines whether the physical address included in the first access request signal for the working memory 2300 received from the CPU 2101 is a valid physical address or a shadow physical address, and if it is a valid physical address, the first access The request signal can be transmitted to the working memory 2300, and if it is a shadow physical address, the first access request signal can be transmitted to the sub-processing circuit 2103. The sub-processing circuit 2103 may convert the physical address included in the first access request signal into a valid physical address and transmit a second access request signal including the valid physical address to the system bus 2102. The system bus 2102 may transmit the second access request signal from the sub-processing circuit 2013 to the working memory 2300. In an embodiment, the sub-processing circuit 2103 operates the working memory 2300 in response to data received together with the first access request signal of the CPU 2101 or the second access request signal transmitted to the system bus 2102. ) can be compressed or decompressed, or encrypted or decrypted, and data expected to be accessed by the CPU 2101 can be pre-fetched from the working memory 2300. The CPU 2101 can indirectly access the working memory 2300 through the sub-processing circuit 2103, and the sub-processing circuit 2103 performs functions not supported by the CPU 2101, thereby supporting the CPU ( 2101) can support applications running on

카메라 모듈(2200)은 이미지 데이터를 생성하고, 이미지 데이터를 AP(2100)로 전송할 수 있다. 카메라 모듈(2200)은 적어도 하나의 카메라를 포함할 수 있으며, 카메라는 이미지 센서, 및 대물 렌즈를 포함할 수 있다. 이미지 센서는 대물 렌즈를 통해 수신되는 광 신호를 이미지 데이터로 변환할 수 있다. 실시예에 있어서, 카메라 모듈(2200)은 화각이 상이한 복수의 카메라를 포함할 수 있다. 실시예에 있어서, 카메라 모듈(2200)은 노출이 상이한 복수의 이미지 데이터를 생성하고, 복수의 이미지 데이터를 AP(2100)에 전송할 수 있다. AP(2100)는 복수의 이미지 데이터를 병합하여 HDR(High Dynamic Range) 이미지를 생성할 수 있다. The camera module 2200 may generate image data and transmit the image data to the AP (2100). The camera module 2200 may include at least one camera, and the camera may include an image sensor and an objective lens. An image sensor can convert optical signals received through an objective lens into image data. In an embodiment, the camera module 2200 may include a plurality of cameras with different angles of view. In an embodiment, the camera module 2200 may generate a plurality of image data with different exposures and transmit the plurality of image data to the AP 2100. The AP 2100 can generate a high dynamic range (HDR) image by merging a plurality of image data.

워킹 메모리(2300)는 DRAM, SRMA 등의 휘발성 메모리 또는 FeRAM, RRAM PRAM 등의 비휘발성의 저항성 메모리로 구현될 수 있다. 스토리지(2400)에 저장된 운용 프로그램, 또는 애플리케이션 프로그램 등이 워킹 메모리(2300)에 로딩되어 실행될 수 있다. 또한, 전자 장치(2000)의 동작 중 생성되는 데이터가 워킹 메모리(2300)에 임시 저장될 수 있다. 워킹 메모리(2300)는 애플리케이션 프로세서(2100)가 처리 또는 실행하는 프로그램들 및/또는 데이터를 저장할 수 있다. 예를 들어, 애플리케이션 프로세서(2100)가 카메라 모듈(2200)로부터 제공되는 이미지 데이터를 이미지 처리하며, 이미지 처리된 이미지 데이터를 압축하고, 압축된 이미지 데이터가 워킹 메모리(2300)에 임시 저장될 수 있다. The working memory 2300 may be implemented as volatile memory such as DRAM or SRMA, or non-volatile resistive memory such as FeRAM or RRAM PRAM. An operation program or application program stored in the storage 2400 may be loaded into the working memory 2300 and executed. Additionally, data generated during operation of the electronic device 2000 may be temporarily stored in the working memory 2300. The working memory 2300 may store programs and/or data that the application processor 2100 processes or executes. For example, the application processor 2100 may image-process image data provided from the camera module 2200, compress the image-processed image data, and temporarily store the compressed image data in the working memory 2300. .

스토리지(2400)는 NADN 플래시, 저항성 메모리 등의 비휘발성 메모리 장치로 구현될 수 있으며, 예컨대 스토리지(2400)는 메모리 카드(MMC, eMMC, SD, micro SD) 등으로 제공될 수 있다. 스토리지(2400)는 애플리케이션 프로세서(2100)로부터 제공되는 데이터를 저장할 수 있다. 예를 들어, 애플리케이션 프로세서(2100)에서 이미지 처리된 이미지 데이터를 저장할 수 있다. 또한 스토리지(2400)는 전자 장치(2000)의 운용 프로그램, 어플리케이션 프로그램 등을 저장할 수 있다.The storage 2400 may be implemented as a non-volatile memory device such as NADN flash or resistive memory. For example, the storage 2400 may be provided as a memory card (MMC, eMMC, SD, micro SD), etc. The storage 2400 may store data provided from the application processor 2100. For example, the application processor 2100 may store image-processed image data. Additionally, the storage 2400 may store operating programs and application programs of the electronic device 2000.

무선 송수신부(2600)는 트랜시버(2610), 모뎀(2620) 및 안테나(2630)를 포함할 수 있다. 무선 송수신부(2600)는 외부 장치와 무선 통신을 수행하며 외부 장치로부터 데이터를 수신하거나 또는 외부 장치로 데이터를 송신할 수 있다. The wireless transceiver 2600 may include a transceiver 2610, a modem 2620, and an antenna 2630. The wireless transceiver 2600 performs wireless communication with an external device and can receive data from or transmit data to the external device.

유저 인터페이스(2700)는 키보드, 커튼 키 패널, 터치 패널, 지문 센서, 마이크 등 사용자 입력을 수신할 수 있는 다양한 장치들로 구현될 수 있다. 유저 인터페이스(2700)는 사용자 입력을 수신하고, 수신된 사용자 입력에 대응하는 신호를 AP(2100)에 제공할 수 있다. The user interface 2700 may be implemented with various devices capable of receiving user input, such as a keyboard, curtain key panel, touch panel, fingerprint sensor, and microphone. The user interface 2700 may receive a user input and provide a signal corresponding to the received user input to the AP 2100.

이상에서와 같이 도면과 명세서에서 예시적인 실시예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시예들을 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.As above, exemplary embodiments have been disclosed in the drawings and specification. Although embodiments have been described in this specification using specific terms, this is only used for the purpose of explaining the technical idea of the present disclosure and is not used to limit the meaning or scope of the present disclosure as set forth in the claims. . Therefore, those skilled in the art will understand that various modifications and other equivalent embodiments are possible therefrom. Therefore, the true technical protection scope of the present disclosure should be determined by the technical spirit of the attached patent claims.

100, 100a, 100b, 100c, 100d, 100e, 400: 시스템 온 칩
110: 프로세서 120, 450: 서브-프로세싱 회로
130, 300: 메모리 200: 애플리케이션 프로세서
100, 100a, 100b, 100c, 100d, 100e, 400: System-on-Chip
110: processor 120, 450: sub-processing circuit
130, 300: memory 200: application processor

Claims (20)

제1 엑세스 주소를 출력하는 제1 프로세서;
상기 프로세서 또는 적어도 하나의 IP(Intellectual Property)로부터 수신되는 엑세스 주소가 메모리의 물리 주소 영역에 대응하면, 상기 엑세스 주소를 상기 메모리에 전송하고, 상기 엑세스 주소가 상기 메모리의 상기 물리 주소 영역 이외의 쉐도우 물리 주소 영역에 대응하면 상기 엑세스 주소를 상기 메모리가 아닌 다른 프로세싱 회로로 전송하는 시스템 버스; 및
상기 시스템 버스를 통해 상기 프로세서로부터의 상기 제1 엑세스 주소를 수신하고, 상기 제1 엑세스 주소를 상기 물리 주소 영역에 대응하는 제2 엑세스 어드레스로 변환하고, 상기 메모리를 엑세스 하도록 상기 제2 엑세스 주소를 상기 시스템 버스로 전송하는 서브-프로세싱 회로를 포함하는 시스템 온 칩.
a first processor outputting a first access address;
If the access address received from the processor or at least one IP (Intellectual Property) corresponds to a physical address area of the memory, the access address is transmitted to the memory, and the access address is a shadow other than the physical address area of the memory. a system bus that transmits the access address to a processing circuit other than the memory if it corresponds to a physical address area; and
Receive the first access address from the processor through the system bus, convert the first access address to a second access address corresponding to the physical address area, and use the second access address to access the memory. A system-on-chip including a sub-processing circuit that transmits to the system bus.
제1 항에 있어서, 상기 제1 프로세서는,
가상 주소와 제1 물리 주소 및 제2 물리 주소 간의 맵핑 정보를 포함하고 상기 제1 물리 주소는 상기 물리 주소 영역에 대응하고 상기 제2 물리 주소는 상기 쉐도우 물리 주소 영역에 대응하는 제1 페이지 테이블을 참조하여, 애플리케이션으로부터 요청되는 가상 주소를 기초로 상기 제1 물리 주소 또는 상기 제2 물리 주소를 상기 제1 엑세스 주소로서 생성하는 것을 특징으로 하는 시스템 온 칩.
The method of claim 1, wherein the first processor:
A first page table includes mapping information between a virtual address, a first physical address, and a second physical address, wherein the first physical address corresponds to the physical address area and the second physical address corresponds to the shadow physical address area. For reference, a system-on-chip characterized in that the first physical address or the second physical address is generated as the first access address based on a virtual address requested from an application.
제1 항에 있어서, 상기 제1 프로세서는 운영체제(OS) 상에서 애플리케이션을 실행하는 것을 특징으로 하는, 시스템 온 칩. The system-on-chip of claim 1, wherein the first processor executes an application on an operating system (OS). 제1 항에 있어서, 상기 메모리의 엑세스를 위한 제3 엑세스 주소를 출력하며, 상기 제3 엑세스 주소는 상기 제1 물리 주소 영역에 대응하는 상기 제1 물리 어드레스에 대응하는 제2 프로세서를 더 포함하는 것을 특징으로 하는, 시스템 온 칩. The method of claim 1, further comprising a second processor outputting a third access address for accessing the memory, wherein the third access address corresponds to the first physical address corresponding to the first physical address area. A system-on-chip, characterized in that. 제1 항에 있어서,
상기 시스템 버스는,
상기 메모리에 저장된 데이터를 캐싱하는 캐시를 포함하고,
상기 서브-프로세싱 회로는,
상기 제2 엑세스 주소에 대응하는 상기 메모리의 주소 영역에 저장된 데이터와 관련하여 상기 캐시에 대한 관리 요청 신호를 상기 시스템 버스에 전송하는 것을 특징으로 하는, 시스템 온 칩.
According to claim 1,
The system bus is,
Includes a cache for caching data stored in the memory,
The sub-processing circuit,
A system on chip, characterized in that transmitting a management request signal for the cache to the system bus in relation to data stored in the address area of the memory corresponding to the second access address.
제1 항에 있어서, 상기 서브-프로세싱 회로는,
상기 제1 엑세스 주소를 포함하는 엑세스 요청에 대응하여 수신되는 데이터를 처리하는 제1 기능 블록을 포함하는, 시스템 온 칩.
The method of claim 1, wherein the sub-processing circuit:
A system-on-chip comprising a first functional block that processes data received in response to an access request including the first access address.
제6 항에 있어서, 상기 제1 기능 블록은,
상기 데이터를 압축하거나 또는 압축 해제하는 컴프레서를 포함하는 것을 특징으로 하는, 시스템 온 칩.
The method of claim 6, wherein the first functional block is:
A system-on-chip, comprising a compressor that compresses or decompresses the data.
제6 항에 있어서, 상기 제1 기능 블록은,
상기 데이터를 암호화하거나 또는 복호화하는 암호화기를 포함하는 것을 특징으로 하는, 시스템 온 칩.
The method of claim 6, wherein the first functional block is:
A system-on-chip, comprising an encryptor that encrypts or decrypts the data.
제6 항에 있어서, 상기 서브-프로세싱 회로는,
상기 제1 엑세스 주소를 제1 가상 주소로 변환하며, 상기 제1 가상 주소는상기 물리 주소 영역에 대응하는 제1 물리 주소에 매칭되는, 제1 주소 변환 회로; 및
제2 페이지 테이블을 기초로 상기 제1 가상 주소를 상기 제1 물리 주소로 변환화는 제2 주소 변환 회로를 포함하는 것을 특징으로 하는, 시스템 온 칩.
The method of claim 6, wherein the sub-processing circuit:
a first address conversion circuit that converts the first access address into a first virtual address, wherein the first virtual address matches a first physical address corresponding to the physical address area; and
A system-on-chip, comprising a second address conversion circuit that converts the first virtual address into the first physical address based on a second page table.
제9 항에 있어서, 상기 제2 페이지 테이블은,
데이터 처리를 수행하고, 처리된 데이터를 상기 메모리에 저장하거나 또는 상기 메모리로부터 독출하는 다른 프로세서가 가상 주소를 상기 메모리의 물리 주소로 변환하기 위하여 이용하는 페이지 테이블과 동일한 것을 특징으로 하는, 시스템 온 칩.
The method of claim 9, wherein the second page table is:
A system-on-chip, characterized in that it is the same as the page table used by another processor that performs data processing, stores processed data in the memory, or reads from the memory, to convert a virtual address to a physical address of the memory. .
애플리케이션을 실행함에 따라 생성되는 제1 가상 주소를, 메모리의 물리 주소 영역 및 쉐도우 물리 주소 영역 중 하나를 나타내는 물리 주소와 상기 애플리케이션이 인지하는 가상 메모리의 주소 영역을 나타내는 가상 주소 간의 맵핑 정보를 포함하는 제1 페이지 테이블을 이용하여 제1 물리 주소로 변환하고 상기 제1 물리 주소를 포함하는 제1 엑세스 요청을 출력하는, 메인 프로세서;
상기 메인 프로세서로부터 상기 제1 엑세스 요청을 수신하고, 상기 제1 물리 주소가 상기 메모리의 상기 물리 주소 영역에 대응하는 것에 응답하여 상기 제1 엑세스 요청을 상기 메모리에 전송하고, 상기 제1 물리 주소가 상기 쉐도우 주소 영역에 대응하는 것에 응답하여 상기 제1 엑세스 요청을 상기 메모리가 아닌 다른 IP로 출력하는 라우터;
상기 라우터로부터 상기 제1 엑세스 요청을 수신하고, 상기 제1 엑세스 요청과 관계되는 데이터를 처리하고, 상기 제1 물리 주소를 제2 가상 주소로 변환하는 서브-프로세싱 회로; 및
상기 제2 가상 주소를 상기 메모리의 상기 물리 주소 영역에 대응하는 제2 물리 주소로 변환하는 제1 MMU(Memory Management Unit)를 포함하고,
상기 라우터는, 상기 제1 MMU로부터 상기 제2 물리 주소를 포함하는 제2 액세스 요청을 수신하고, 상기 제2 물리 주소가 상기 메모리의 상기 물리 주소 영역에 대응하는 것에 응답하여 상기 제2 엑세스 요청을 상기 메모리로 전송하는 것을 특징으로 하는, 애플리케이션 프로세서.
The first virtual address generated when executing the application includes mapping information between a physical address representing one of the physical address area and the shadow physical address area of the memory and a virtual address representing the address area of the virtual memory recognized by the application. a main processor that converts a first physical address using a first page table and outputs a first access request including the first physical address;
Receiving the first access request from the main processor, transmitting the first access request to the memory in response to the first physical address corresponding to the physical address area of the memory, and the first physical address being a router that outputs the first access request to an IP other than the memory in response to one corresponding to the shadow address area;
a sub-processing circuit that receives the first access request from the router, processes data related to the first access request, and converts the first physical address to a second virtual address; and
A first MMU (Memory Management Unit) that converts the second virtual address into a second physical address corresponding to the physical address area of the memory,
The router receives a second access request including the second physical address from the first MMU, and sends the second access request in response to the second physical address corresponding to the physical address area of the memory. An application processor, characterized in that transfer to the memory.
제11 항에 있어서,
상기 제1 서브-프로세싱 회로는 상기 데이터를 압축 또는 압축 해제하는 컴프레서를 포함하는 것을 특징으로 하는, 애플리케이션 프로세서.
According to claim 11,
The application processor, wherein the first sub-processing circuit includes a compressor that compresses or decompresses the data.
제11 항에 있어서,
이미지 데이터에 대하여 이미지 처리를 수행하고, 처리된 이미지 데이터를압축하고, 압축된 이미지 데이터가 저장될 가상 메모리의 제3 가상 주소를 생성하는 이미지 신호 프로세서(ISP);
상기 메모리의 상기 물리 주소 영역을 나타내는 물리 주소와 상기 ISP가 인지하는 가상 메모리의 주소 영역을 나타내는 가상 주소 간의 맵핑 정보를 포함하는 제2 페이지 테이블을 이용하여 상기 제3 가상 주소를 상기 메모리의 상기 물리 주소 영역 중 상기 압축된 이미지 데이터가 저장될 압축 버퍼에 대응하는 제3 물리 주소로 변환하는 제2 MMU를 더 포함하는 것을 특징으로 하는, 애플리케이션 프로세서.
According to claim 11,
an image signal processor (ISP) that performs image processing on image data, compresses the processed image data, and generates a third virtual address of a virtual memory where the compressed image data will be stored;
The third virtual address is converted to the physical address of the memory using a second page table containing mapping information between a physical address representing the physical address area of the memory and a virtual address representing the address area of the virtual memory recognized by the ISP. The application processor further comprising a second MMU that converts the compressed image data into a third physical address corresponding to a compression buffer in which the compressed image data is to be stored.
제13 항에 있어서,
상기 제1 MMU는 상기 제2 페이지 테이블을 참조하여, 상기 제2 가상 주소를 상기 제2 물리 주소로 변환하는 것을 특징으로 하는, 애플리케이션 프로세서.
According to claim 13,
The first MMU refers to the second page table and converts the second virtual address into the second physical address.
제13 항에 있어서,
상기 라우터는,
상기 메모리에 저장된 데이터를 캐싱하는 캐시를 포함하고,
상기 서브-프로세싱 회로는,
상기 압축 버퍼 중 상기 제2 물리 주소에 대응하는 영역에 저장된 데이터와 관련하여 상기 캐시에 대한 관리 요청 신호를 상기 라우터에 전송하는 것을 특징으로 하는, 애플리케이션 프로세서.
According to claim 13,
The router is,
Includes a cache for caching data stored in the memory,
The sub-processing circuit,
Characterized in that, transmitting a management request signal for the cache to the router in relation to data stored in an area corresponding to the second physical address of the compression buffer.
제15 항에 있어서,
상기 서브-프로세싱 회로는,
상기 프로세서가 엑세스를 요청하는 데이터의 패턴을 기초로 상기 프로세서가 엑세스를 요청할 것으로 예상되는 데이터를 상기 메모리로부터 상기 캐시에 프리패치(pre-fetch)하도록 하는 상기 관리 요청 신호를 상기 라우터에 전송하는 것을 특징으로 하는, 애플리케이션 프로세서.
According to claim 15,
The sub-processing circuit,
Transmitting the management request signal to the router to pre-fetch data expected to be requested by the processor from the memory to the cache based on the pattern of data for which the processor requests access. Characterized by an application processor.
프로세서가 제1 물리 주소를 포함하는 제1 엑세스 요청 신호를 라우터로 전송하는 단계;
상기 라우터가 상기 제1 물리 주소가 메모리의 물리 주소 영역에 대응하지 않는 것에 응답하여, 상기 제1 엑세스 요청 신호를 서브-프로세싱 회로로 전송하는 단계;
상기 서브-프로세싱 회로가 상기 제1 물리 주소를 상기 메모리의 상기 물리 주소 영역에 대응하는 제2 물리 주소로 변환하는 단계;
상기 서브-프로세싱 회로가 상기 제2 물리 주소를 포함하는 제2 엑세스 요청 신호를 상기 라우터로 전송하는 단계; 및
상기 라우터가 상기 제2 엑세스 요청 신호를 상기 메모리로 전송하는 단계를 포함하는 시스템 온 칩의 동작 방법.
A processor transmitting a first access request signal including a first physical address to a router;
transmitting, by the router, the first access request signal to a sub-processing circuit in response to the first physical address not corresponding to a physical address area of a memory;
converting, by the sub-processing circuit, the first physical address into a second physical address corresponding to the physical address area of the memory;
transmitting, by the sub-processing circuit, a second access request signal including the second physical address to the router; and
A method of operating a system-on-chip including the step of the router transmitting the second access request signal to the memory.
제17 항에 있어서,
상기 프로세서가 페이지 테이블을 기초로 제1 가상 주소를 상기 제1 물리 주소로 변환하는 단계를 더 포함하고,
상기 페이지 테이블은, 가상 주소와 유효 물리 주소 및 쉐도우 물리 주소 간의 맵핑 정보를 포함하며, 상기 유효 물리 주소는 상기 물리 주소 영역에 대응하고 상기 쉐도우 물리 주소는 상기 메모리의 상기 물리 주소 영역 이외의 쉐도우 물리 주소 영역에 대응하는 것을 특징으로 하는 시스템 온 칩의 동작 방법.
According to claim 17,
Further comprising the step of converting, by the processor, a first virtual address into the first physical address based on a page table,
The page table includes mapping information between a virtual address, a valid physical address, and a shadow physical address, wherein the effective physical address corresponds to the physical address area and the shadow physical address corresponds to a shadow physical address other than the physical address area of the memory. A method of operating a system-on-chip, characterized in that it corresponds to an address area.
제17 항에 있어서,
상기 서브-프로세싱 회로가, 상기 제2 엑세스 요청에 응답하여 상기 메모리로부터 출력되는 압축된 데이터를 압축 해제하는 단계; 및
상기 서브-프로세싱 회로가 압축 해제된 데이터 중 적어도 일부를 상기 라우터를 통해 상기 프로세서로 전송하는 단계를 더 포함하는 시스템 온 칩의 동작 방법.
According to claim 17,
Decompressing, by the sub-processing circuit, compressed data output from the memory in response to the second access request; and
A method of operating a system on a chip further comprising transmitting at least a portion of the decompressed data by the sub-processing circuit to the processor through the router.
제17 항에 있어서,
상기 서브-프로세싱 회로가, 상기 제2 엑세스 요청에 응답하여 상기 메모리로부터 출력되는 암호화된 데이터를 복호화 하는 단계; 및
상기 서브-프로세싱 회로가 복호화된 데이터 중 적어도 일부를 상기 라우터를 통해 상기 프로세서로 전송하는 단계를 더 포함하는 시스템 온 칩의 동작 방법.
According to claim 17,
Decrypting, by the sub-processing circuit, encrypted data output from the memory in response to the second access request; and
A method of operating a system on a chip further comprising transmitting at least a portion of the data decrypted by the sub-processing circuit to the processor through the router.
KR1020230048985A 2022-09-29 2023-04-13 Application processor, system on chip and method of operation thereof KR20240045069A (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US18/473,917 US20240111686A1 (en) 2022-09-29 2023-09-25 Application processor, system-on-a-chip and method of operation thereof
EP23199777.6A EP4345632A1 (en) 2022-09-29 2023-09-26 Application processor, system-on-a-chip and method of operation thereof
CN202311259788.3A CN117785726A (en) 2022-09-29 2023-09-26 Application processor, system on chip and operation method thereof

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20220124557 2022-09-29
KR1020220124557 2022-09-29

Publications (1)

Publication Number Publication Date
KR20240045069A true KR20240045069A (en) 2024-04-05

Family

ID=90714149

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230048985A KR20240045069A (en) 2022-09-29 2023-04-13 Application processor, system on chip and method of operation thereof

Country Status (1)

Country Link
KR (1) KR20240045069A (en)

Similar Documents

Publication Publication Date Title
US9451026B2 (en) Electronic devices
KR102100161B1 (en) Method for caching GPU data and data processing system therefore
TWI634425B (en) System on chip, electronic system and memory address translation method thereof
JP5681782B2 (en) On-die system fabric block control
US20220083367A1 (en) Graphics processing method and apparatus
US8245011B2 (en) Method and system for geometry-based virtual memory management in a tiled virtual memory
US9164804B2 (en) Virtual memory module
WO2007135602A1 (en) Electronic device and method for storing and retrieving data
EP4152167A1 (en) Scalable address decoding scheme for cxl type-2 devices with programmable interleave granularity
EP4345632A1 (en) Application processor, system-on-a-chip and method of operation thereof
KR20240045069A (en) Application processor, system on chip and method of operation thereof
KR102174337B1 (en) Memory System and Electronic device including memory system
CN117785726A (en) Application processor, system on chip and operation method thereof
US10133685B2 (en) Bus interface device that merges data request signals, semiconductor integrated circuit device including the same, and method of operating the same
US12019581B2 (en) Multi-core processor and storage device
US20240094907A1 (en) Lossless compression of large data sets for systems on a chip
KR20230138777A (en) A storage device for reorganizing data and operating method of the same