KR20230086548A - 이종의 멀티 cpu 간에 물리 자원을 공유하기 위한 제어권을 관리하는 시스템온칩 및 그 동작 방법 - Google Patents
이종의 멀티 cpu 간에 물리 자원을 공유하기 위한 제어권을 관리하는 시스템온칩 및 그 동작 방법 Download PDFInfo
- Publication number
- KR20230086548A KR20230086548A KR1020220049475A KR20220049475A KR20230086548A KR 20230086548 A KR20230086548 A KR 20230086548A KR 1020220049475 A KR1020220049475 A KR 1020220049475A KR 20220049475 A KR20220049475 A KR 20220049475A KR 20230086548 A KR20230086548 A KR 20230086548A
- Authority
- KR
- South Korea
- Prior art keywords
- control right
- control
- request
- client
- indirect
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 73
- 238000013475 authorization Methods 0.000 title abstract description 5
- 238000004891 communication Methods 0.000 claims abstract description 20
- 230000004044 response Effects 0.000 claims description 42
- 238000012545 processing Methods 0.000 claims description 26
- 230000008569 process Effects 0.000 claims description 24
- 238000007726 management method Methods 0.000 description 92
- 230000015654 memory Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000009365 direct transmission Effects 0.000 description 1
- 230000009349 indirect transmission Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011017 operating method Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
- G06F15/7864—Architectures of general purpose stored program computers comprising a single central processing unit with memory on more than one IC chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Storage Device Security (AREA)
Abstract
시스템온칩(System-On-Chip, SoC)은 독립적으로 소프트웨어를 실행하는 복수의 프로세서들, 상기 복수의 프로세서들에서 실행된 소프트웨어가 필요로 하는 작업을 수행하기 위해 상기 복수의 프로세서들 간에 서로 공유하여 사용하는 적어도 하나의 공유 하드웨어 디바이스, 그리고 상기 복수의 프로세서들이 버스 통신을 사용하여 상기 적어도 하나의 공유 하드웨어 디바이스에 접근할 수 있도록 상기 복수의 프로세서들 각각에 연결된 버스들을 연결시키는 버스 인터커넥터를 포함하고, 상기 복수의 프로세서들은, 상기 적어도 하나의 공유 하드웨어 디바이스에 접근할 수 있는 제어권을 관리하는 호스트 프로세서, 그리고 상기 호스트 프로세서에게 제어권 관리를 요청하고, 제어권이 승인된 공유 하드웨어 디바이스에 접근하여 제어를 수행하는 적어도 하나의 클라이언트 프로세서를 포함한다.
Description
본 개시는 다수의 이기종 CPU(Central Processing Unit)를 탑재한 시스템온칩(System on Chip, 이하, 'SoC'라 통칭함)에서 CPU들이 물리자원을 공유해서 사용하는 기술에 관한 것이다.
하나의 SoC 상에서 여러 다른 특정 작업을 수행하기 위해서는 독립적으로 동작하는 여러 개의 운영체제(Operating System, OS)를 운용할 수 있어야 한다. 독립적인 여러 운영체제를 운영하는 경우, 공유 물리 자원 접근에 대한 경쟁 상태가 발생할 수 있다.
종래에는 여러 운영체제가 물리 자원을 경쟁없이 사용하기 위해서 물리자원을 다수의 가상의 논리 자원으로 추상화하는 가상화 기술을 사용한다. 가상화 기술을 수행하는 소프트웨어를 하이퍼바이저(Hypervisor)라 한다. 하이퍼바이저는 운영체제의 물리 자원 접근을 통제하고 물리 자원을 추상화하여 관리한다. 이러한 하이퍼바이저를 통해 다수의 운영체제는 하나의 물리 자원을 경쟁 상태 없이 접근하고 이용할 수 있다. 하이퍼바이저를 이용하면, 하나의 CPU(Central Processing Unit)에 여러 운영체제를 동작 시킬 수 있다.
그런데, 하이퍼바이저를 사용하여 다수의 운영체제를 동작시키는 경우, 운영체제의 물리 자원 접근을 통제하고 가상의 논리 자원을 관리하는데 시간 지연이 발생하고 가상화 기술을 사용하기 위한 추가적인 메모리 할당이 필요할 수 있다.
또한, 가상화 기술 사용시 발생하는 오버헤드는 실시간성을 요구하는 작업의 경우 이러한 지연 시간은 큰 제약 사항으로 작용할 수 있다.
또한, 하이퍼바이저는 하나의 CPU에서 여러 운영체제가 동작하는 환경이기 때문에 비정상이 발생할 경우 전체 시스템을 재구동 해야 하는 단점이 있다.
한편, 단일 SoC에 다수/다종의 이종(Heterogeneous) CPU를 구성하여 여러 운영체제를 동작시키는 방법이 있다. 이 경우, 물리 자원을 경쟁 상태없이 사용할 수 있다. 또한, 하이퍼바이저와는 달리 비정상이 발생하더라도 일부 문제가 되는 시스템만 재구동 하면 된다.
그러나, 하나의 물리 자원을 여러 CPU가 공유할 수는 없기 때문에 여러 CPU가 동일한 기능의 물리 자원을 배타적으로 사용하기 위해서는 각 CPU 단위로 복수의 물리 자원을 모두 구비해야 하는 문제가 있다.
본 개시는 이종(Heterogeneous) 멀티 CPU(Central processing unit)가 탑재된 SoC에서 복수의 운영체제(Operating System, OS)가 경쟁 상태 없이 물리 자원을 공유할 수 있는 장치 및 그 방법에 관한 것이다.
본 개시는 이종 멀티 CPU가 탑재된 SoC에서 하나의 호스트 CPU가 다수의 클라이언트 CPU의 공유 물리자원에 대한 접근 제어권을 관리함으로써, 다수의 클라이언트 CPU에서 독립적으로 동작하는 운영체제가 경쟁 상태없이 물리 자원을 공유할 수 있는 장치 및 그 방법에 관한 것이다.
한 특징에 따르면, 시스템온칩(System-On-Chip, SoC)은 독립적으로 소프트웨어를 실행하는 복수의 프로세서들, 상기 복수의 프로세서들에서 실행된 소프트웨어가 필요로 하는 작업을 수행하기 위해 상기 복수의 프로세서들 간에 서로 공유하여 사용하는 적어도 하나의 공유 하드웨어 디바이스, 그리고 상기 복수의 프로세서들이 버스 통신을 사용하여 상기 적어도 하나의 공유 하드웨어 디바이스에 접근할 수 있도록 상기 복수의 프로세서들 각각에 연결된 버스들을 연결시키는 버스 인터커넥터를 포함하고, 상기 복수의 프로세서들은, 상기 적어도 하나의 공유 하드웨어 디바이스에 접근할 수 있는 제어권을 관리하는 호스트 프로세서, 그리고 상기 호스트 프로세서에게 제어권 관리를 요청하고, 제어권이 승인된 공유 하드웨어 디바이스에 접근하여 제어를 수행하는 적어도 하나의 클라이언트 프로세서를 포함한다.
상기 시스템온칩은, 상기 호스트 프로세서와 상기 적어도 하나의 클라이언트 프로세서 간의 제어권 관리 요청 및 응답을 위한 메시지 교환을 처리하는 IPC(Inter Process Communication) 디바이스를 더 포함할 수 있다.
상기 호스트 프로세서는, 제어권을 요청한 특정 클라이언트 프로세서에게 공유 하드웨어 디바이스에 대한 배타적인 접근 권한을 할당하고, 제어권이 할당된 공유 하드웨어 디바이스에 대해 권한이 없는 클라이언트 프로세서의 제어권 요청에 대해 거절하는 접근 제어 관리부를 포함할 수 있다.
상기 호스트 프로세서는, 간접 제어권을 할당한 특정 클라이언트 프로세서를 대신하여 공유 하드웨어 디바이스에 접근하여 작업을 수행하고, 작업 수행 결과를 상기 간접 제어권을 할당한 특정 클라이언트 프로세서에게 반환하는 간접 접근 제어부를 포함할 수 있다.
상기 간접 접근 제어부는, 사전에 설정된 우선순위 알고리즘에 기초하여, 복수의 클라이언트 프로세서로부터 수신한 복수의 간접 제어 요청을 순차적으로 처리할 수 있다.
상기 호스트 프로세서는, 상기 IPC 디바이스로부터 제어권 관리 요청을 수신하고, 상기 수신한 제어권 관리 요청에 대한 제어권 할당 응답을 상기 IPC 디바이스로 전달하는 IPC 드라이버를 포함할 수 있다.
상기 적어도 하나의 클라이언트 프로세서는, 실행한 소프트웨어로부터 공유 하드웨어 디바이스에 대한 제어 요청이 발생하면, 상기 공유 하드웨어 디바이스에 대한 제어권을 할당 받았는지 확인하고, 제어권을 할당 받지 않은 경우, 상기 제어권의 할당을 요청하는 디바이스 드라이버, 그리고 상기 디바이스 드라이버로부터 제어권 할당 요청을 수신하고, 상기 수신한 제어권 할당 요청을 상기 IPC 디바이스로 전송하며, 상기 IPC 디바이스로부터 수신한 상기 호스트 프로세서에 의해 생성된 제어권 할당 응답을 상기 디바이스 드라이버에게 전달하는 IPC 드라이버를 포함할 수 있다.
다른 특징에 따르면, 소프트웨어를 독립적으로 실행하는 복수의 프로세서들 중에서 호스트 프로세서의 제어권 관리 방법으로서, 제1 클라이언트 프로세서로부터 제1 공유 물리자원에 대한 제어권 할당 요청을 수신하는 단계, 상기 제1 공유 물리자원에 대한 제어권이 제2 클라이언트 프로세서에게 이미 할당되었는지 확인하는 단계, 제어권이 이미 할당되지 않았다면, 상기 제1 클라이언트 프로세서에게 제어권 할당 승인 응답을 전송하는 단계, 그리고 제어권이 이미 할당되었다면, 상기 제1 클라이언트 프로세서에게 제어권 할당 거절 응답을 전송하는 단계를 포함한다.
상기 제어권 할당 승인 응답을 전송하는 단계 또는 상기 제어권 할당 거절 응답을 전송하는 단계 이후, 상기 제어권을 할당받은 상기 제1 클라이언트 프로세서 또는 상기 제2 클라이언트 프로세서로부터 상기 제1 공유 물리자원에 대한 제어권 반환 요청을 수신하면, 상기 제1 공유 물리자원에 대한 제어권 할당 정보를 삭제하고 제어권 반환 응답을 전송하는 단계를 더 포함할 수 있다.
상기 제어권 반환 응답을 전송하는 단계 이후, 제3 클라이언트 프로세서로부터 상기 제1 공유 물리자원에 대한 제어권 할당 요청이 수신되면, 상기 제1 공유 물리자원에 대한 제어권을 상기 제3 클라이언트 프로세서에게 할당하는 단계를 더 포함할 수 있다.
상기 제어권 할당 요청을 수신하는 단계와 상기 확인하는 단계 사이에, 상기 제어권 할당 요청이 상기 제1 공유 물리자원에 대한 배타적인 제어권 할당 요청인지 또는 간접 제어권 할당 요청인지 판단하는 단계를 더 포함하고, 상기 배타적인 제어권 할당 요청으로 판단되면, 상기 확인하는 단계를 수행할 수 있다.
상기 판단하는 단계 이후, 상기 간접 제어권 할당 요청으로 판단되면, 상기 제1 공유 물리자원에 대한 간접 제어권을 상기 제1 클라이언트 프로세서에게 할당하는 단계, 그리고 상기 제1 클라이언트 프로세서로부터 상기 제1 공유 물리자원에 대한 간접 제어 요청이 수신되면, 상기 제1 클라이언트 프로세서를 대신하여 상기 제1 공유 물리자원에 접근하여 작업을 처리하고, 작업 처리 결과를 상기 제1 클라이언트 프로세서에게 전송하는 단계를 더 포함할 수 있다.
실시예에 따르면, 이종 멀티 CPU를 지원하는 단일 SoC상에서 여러 운영체제를 동작 시킬 때, 호스트 CPU가 클라이언트 CPU들의 공유 물리자원에 대한 접근을 제어함으로써, 다수의 운영체제/CPU가 하나의 물리자원을 경쟁 상태 없이 공유할 수 있다.
또한, 종래에 하이퍼바이저와 달리 공유할 물리자원을 선택적으로 관리할 수 있기 때문에 상대적으로 오버헤드가 적다는 장점이 있다.
또한, 다수의 이종 CPU 환경에서도 물리자원을 공유할 수 있기 때문에 비정상이 발생했을 때, 일부 시스템만을 재구동 하도록 설계할 수 있다.
또한, SoC내 여러 종류의 물리자원을 다수의 운영체제가 공유하여 사용할 수 있기 때문에 제품의 소형화, 저전력, 제품의 생산 비용 등의 측면에서 이점이 있다.
도 1은 실시예에 따른 시스템온칩(System on Chip, 이하, 'SoC'라 통칭함)의 구성도이다.
도 2는 실시예에 따른 호스트 CPU와 클라이언트 CPU의 세부 구성을 나타낸 블록도이다.
도 3은 실시예에 따른 제어권 관리 절차를 나타낸 흐름도이다.
도 4는 실시예에 따른 제어권 할당 절차를 나타낸 흐름도이다.
도 5는 실시예에 따른 제어권 반환 절차를 나타낸 흐름도이다.
도 6은 실시예에 따른 클라이언트 CPU의 동작을 나타낸 순서도이다.
도 7은 실시예에 따른 간접 제어 절차를 나타낸 흐름도이다.
도 8은 실시예에 따른 호스트 CPU의 간접 제어 요청 처리 절차를 나타낸 순서도이다.
도 2는 실시예에 따른 호스트 CPU와 클라이언트 CPU의 세부 구성을 나타낸 블록도이다.
도 3은 실시예에 따른 제어권 관리 절차를 나타낸 흐름도이다.
도 4는 실시예에 따른 제어권 할당 절차를 나타낸 흐름도이다.
도 5는 실시예에 따른 제어권 반환 절차를 나타낸 흐름도이다.
도 6은 실시예에 따른 클라이언트 CPU의 동작을 나타낸 순서도이다.
도 7은 실시예에 따른 간접 제어 절차를 나타낸 흐름도이다.
도 8은 실시예에 따른 호스트 CPU의 간접 제어 요청 처리 절차를 나타낸 순서도이다.
아래에서는 첨부한 도면을 참고로 하여 본 개시의 실시예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 개시를 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함" 한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
또한, 명세서에 기재된 "…부", "…기", "…모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
본 발명에서 설명하는 장치들은 적어도 하나의 프로세서, 메모리 장치, 통신 장치 등을 포함하는 하드웨어로 구성되고, 지정된 장소에 하드웨어와 결합되어 실행되는 프로그램이 저장된다. 하드웨어는 본 발명의 방법을 실행할 수 있는 구성과 성능을 가진다. 프로그램은 도면들을 참고로 설명한 본 발명의 동작 방법을 구현한 명령어(instructions)를 포함하고, 프로세서와 메모리 장치 등의 하드웨어와 결합하여 본 발명을 실행한다.
본 명세서에서 "전송 또는 제공"은 직접적인 전송 또는 제공하는 것뿐만 아니라 다른 장치를 통해 또는 우회 경로를 이용하여 간접적으로 전송 또는 제공도 포함할 수 있다.
본 명세서에서 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다.
본 명세서에서 도면에 관계없이 동일한 도면번호는 동일한 구성요소를 지칭하며, "및/또는" 은 언급된 구성 요소들의 각각 및 하나 이상의 모든 조합을 포함한다.
본 명세서에서, 제1, 제2 등과 같이 서수를 포함하는 용어들은 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되지는 않는다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 개시의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
본 명세서에서 도면을 참고하여 설명한 흐름도에서, 동작 순서는 변경될 수 있고, 여러 동작들이 병합되거나, 어느 동작이 분할될 수 있고, 특정 동작은 수행되지 않을 수 있다.
도 1은 실시예에 따른 시스템온칩(System on Chip, 이하, 'SoC'라 통칭함)의 구성도이다.
도 1을 참고하면, 단일 SoC(100)는 이종(Heterogeneous)의 멀티 프로세서(101, 102, 103, 104), 복수의 버스들(105, 106, 107), 버스-인터커넥터(Interconnector)(108), 복수의 공유 물리 자원들(109, 110, 111, 112), 프로세스 간 통신(Inter-Process Communication, 이하, 'IPC'로 통칭함) 디바이스(113), 복수의 메모리들(114, 115, 116, 117), 복수의 전용 디바이스들(118, 119)을 포함한다.
멀티 프로세서(101, 102, 103, 104)는 독립적으로 소프트웨어를 실행하는 하드웨어 디바이스로서, 중앙 처리 장치(Central Processing Unit, 이하, 'CPU'로 통칭함), MCU(Micro Controller Unit), MPU(Micro Processor Unit) 등을 포함할 수 있다.
본 명세서에서는 설명의 편의를 위해, 멀티 프로세서(101, 102, 103, 104)를 CPU로 설명하지만, CPU로 국한되는 것은 아니며, 설명하는 실시예는 MCU, MPU 등에도 동일하게 적용될 수 있다.
멀티 CPU(101, 102, 103, 104)는 싱글(Single) 코어 프로세서 일 수도 있고, 쿼드(Quard) 코어 프로세서일 수도 있다. 혹은, 일부 프로세서(102)는 쿼드 코어 프로세서이고, 나머지 프로세서들(101, 103, 104)은 싱글 코어 프로세서일 수 있다.
이종의 멀티 CPU(101, 102, 103, 104)는 독립된 작업을 수행하는 각각의 소프트웨어를 실행할 수 있다. 소프트웨어는 운영체제(Operating System, 이하, 'OS'라 통칭함), 펌웨어(FirmWare) 일 수 있다.
멀티 CPU(101, 102, 103, 104)가 이종이라 함은 CPU들(101, 102, 103, 104)이 서로 다른 목적을 가지고 운용됨을 의미하거나, 혹은, CPU(101, 102, 103, 104)에 탑재된 OS들이 다양한 타입일 수 있음을 의미한다.
호스트 CPU(101)는 시스템 전체를 부팅하는 부팅 프로그램과 사전 정의된 펌웨어를 실행할 수 있다.
클라이언트 CPU_1(102)은 시스템 OS를 실행할 수 있다. 시스템 OS는 사용자와의 상호 작용을 포함한 범용 작업을 실행하며, 예를 들어, 안드로이드(Android) 시스템 OS일 수 있다.
클라이언트 CPU_2(103)은 사용자의 상호 작용 없이 빠른 처리가 필요한 특수 작업을 처리하는 OS를 실행할 수 있다. 예를 들어, 클라이언트 CPU_2(103)는 리눅스 OS를 실행할 수 있다.
클라이언트 CPU_3(104)은 실시간 처리가 필요한 작업을 처리하는 OS를 실행할 수 있다. 예를 들어, 클라이언트 CPU_3(104)은 실시간 OS(Real Time Operating System, RTOS)를 실행할 수 있다.
버스들(105, 106, 107)은 버스-인터커넥터(108)를 통해 상호 연결되어 있다. 따라서, CPU들(101, 102, 103, 104)은 각 버스(105, 106, 107)에 연결된 공유 물리자원들(109, 110, 111, 112)에 접근할 수 있다. 예를 들어, 호스트 CPU(101)는 버스_1(105), 버스_인터커넥터(108), 버스_2(106)를 경유하여 공유 물리자원 #3(111)에 접근할 수 있다.
따라서, 호스트 CPU(101), 클라이언트 CPU_1(102), 클라이언트 CPU_2(103) 및 클라이언트 CPU_3(104)에서 각각 독립적으로 실행되는 서로 다른 종류의 소프트웨어는 다른 CPU들(101, 102, 103, 104)을 모두 사용할 수 있다. 예컨대, 클라이언트 CPU_1(102)의 OS는 4개의 코어 프로세서(101, 102, 103, 104)를 모두 사용할 수 있다. 특히, 클라이언트 CPU_1(102)의 시스템 OS는 4개의 코어 프로세서(101, 102, 103, 104)를 모두 점유할 수 있으므로, SoC(100) 전체의 성능이 향상될 수 있다.
공유 물리자원(109, 110, 111, 112)은 CPU들(101, 102, 103, 104)에 의해 상호 공유되어 사용되는 하드웨어 디바이스를 지칭한다. 공유 물리자원(109, 110, 111, 112)은 GPIO(General Purpose Input/Output), 클록-컨트롤러(Clock-controller), ADC(Analog-to-digital converter), DMA(Direct Memory Access), UART(Universal Asynchronous Receiver/Transmitter), I2C(Inter-Integrated Circuit), 타이머(Timer)를 포함할 수 있다.
또한, 공유 물리자원(109, 110, 111, 112)은 외부 장치(200)와 연결시키는 인터페이스 장치를 포함할 수 있다. 여기서, 인터페이스 장치는 USB(Universal Serial Bus) 포트(Port) 등과 같은 외부 장치(200)와의 입출력 단자를 포함할 수 있다. 이때, 외부 장치(200)는 유니버설 플래시 스토리지(Universal Flash Storage, UFS), 확장 메모리(Expanded Memory, EMS), SSD(Solid State Drive) 기억장치, eMMC(embedded Multi-Media Card) 등과 같은 메모리 및/또는 스토리지를 포함할 수 있다.
한 실시예에 따르면, 공유 물리자원 #1(109)은 외부 장치(200)와 연결되는 입출력 포트, 예컨대, USB 포트이고, 나머지 공유 물리자원들(110, 111, 112)은 메모리/스토리지 일 수 있다.
이때, CPU들(101, 102, 103, 104)은 기본적으로 자신의 버스(105, 106, 107)에 직접 연결된 공유 물리자원(109, 110, 111, 112)에 접근할 수 있고, 다른 버스(105, 106, 107)에 연결된 공유 물리자원(109, 110, 111, 112)에도 접근할 수 있다.
공유 물리자원(109, 110, 111, 112)을 제외한 다른 구성요소들, 즉, 데이터 램(114), 코드 램(115), SDRAM(116, 117), 전용 디바이스(118, 119)는 버스_인터커넥터(108)를 거치지 않고 직접 버스(105, 106, 107)를 통해서만 연결될 수 있다. 예를 들어, 전용 디바이스 #1(118)은 버스_2(106)에 연결된 클라이언트 CPU_1(102)과 클라이언트 CPU_2(103)만 접근할 수 있다.
전용 디바이스(118, 119)는 UART(Universal asynchronous receiver/transmitter), ICTC(Input Capture Timer Counter), I2C(Inter-Integrated Circuit), GPSB(General Purpose Serial Bus), 직렬 플래시 메모리(Serial Flash Memory) 등을 포함할 수 있다.
그런데, 모든 공유 물리자원들(109, 110, 111, 112)이 모든 CPU들(101, 102, 103, 104)에 의해 공유될 때, CPU들(101, 102, 103, 104) 간의 공유 물리자원들(109, 110, 111, 112)에 대한 접근에 있어 경쟁 상태가 발생할 수 있다. 이러한 경쟁 상태없이 CPU들(101, 102, 103, 104)이 물리 자원들(109, 110, 111, 112)을 공유해서 사용할 수 있도록 하나의 CPU(101)를 호스트 CPU로 운용한다.
멀티 CPU(101, 102, 103, 104)는 하나의 호스트 CPU(101)와 적어도 두개 이상의 클라이언트 CPU들(102, 103, 104)을 포함할 수 있다.
이때, 설명의 편의를 위해 4개의 CPU(101, 102, 103, 104)를 도시하지만, CPU 개수가 4개로 한정되는 것은 아니며, 실시예에 따라 그 이상 개수로 구현될 수 있다.
호스트 CPU(101)는 클라이언트 CPU들(102, 103, 104)의 공유 물리자원들(109, 110, 111, 112)에 대한 제어권을 관리할 수 있다. 제어권은 클라이언트 CPU들(102, 103, 104)의 공유 물리자원들(109, 110, 111, 112)에 대한 접근 권한을 의미한다.
호스트 CPU(101)는 클라이언트 CPU들(102, 103, 104)의 공유 물리자원들(109, 110, 111, 112)에 대한 제어권 관리 작업을 처리하는 제어권 관리 펌웨어(Control Authorization management Firmware)를 실행할 수 있다. 호스트 CPU(101)는 다른 클라이언트 CPU들(102, 103, 104)에 비해 저사양 프로세서를 포함할 수 있다.
호스트 CPU(101)와 버스_1(105)를 통해 연결되는 데이터 램(114)은 호스트 CPU(101)에 의해서만 점유되는 전용 물리 자원일 수 있다. 데이터 램(114)은 호스트 CPU(101)에 의해 실행 또는 처리되는 제어권 관리 펌웨어가 로딩되는 메모리 영역을 포함한다.
코드 램(115)은 호스트 CPU(101)에 의해 실행 또는 처리되는 부트 코드(corrected boot code)들이 로딩되는 메모리 영역을 포함한다. 부트 코드는 시스템, 즉, SoC(100)를 부팅하기 위한 코드들로 구성되어 있다.
클라이언트 CPU들(102, 103, 104)은 호스트 CPU(101)로부터 제어권을 승낙 또는 허용 받은 공유 물리자원들(109, 110, 111, 112)에 대해 접근이 가능하다. 따라서, 동일한 공유 물리자원들(109, 110, 111, 112)에 대해 복수의 클라이언트 CPU들(102, 103, 104)이 접근하는 경쟁 상태가 발생하지 않게 할 수 있다.
즉, 호스트 CPU(101)는 버스 통신 방식으로 모든 공유 물리자원들(109, 110, 111, 112)에 접근할 수 있으나, 클라이언트 CPU들(102, 103, 104)은 호스트 CPU(101)로부터 제어권이 승낙된 경우에 한해 공유 물리자원들(109, 110, 111, 112)에 접근할 수 있다.
이때, 공유 물리자원들(109, 110, 111, 112)에 대한 접근 방식은 직접 접근과 간접 접근 방식이 있다. 직접 접근 방식의 경우, 클라이언트 CPU들(102, 103, 104)이 호스트 CPU(101)로부터 제어권이 승낙된 후에 공유 물리자원들(109, 110, 111, 112)에 버스 통신으로 접근한다. 간접 접근 방식의 경우, 호스트 CPU(101)가 클라이언트 CPU들(102, 103, 104)을 대신하여 공유 물리자원들(109, 110, 111, 112)에 대해 접근하여 클라이언트 CPU들(102, 103, 104)이 요청한 작업을 처리한 후, 그 결과를 클라이언트 CPU들(102, 103, 104)에게 제공한다.
호스트 CPU(101)와 클라이언트 CPU들(102, 103, 104)은 IPC 통신을 통하여 제어권을 요청하고 제어권을 반환할 수 있다.
IPC 디바이스(113)는 CPU들(101, 102, 103, 104) 간의 IPC 통신을 지원하는 장치로서, 실시예에 따르면, 메일 박스(Mailbox)를 포함할 수 있다.
CPU들(101, 102, 103, 104) 중 하나가 IPC 디바이스(113)에 다른 CPU(101, 102, 103, 104)에 대한 통신 데이터를 저장한다. 그러면, IPC 디바이스(113)는 저장된 통신 데이터의 수신자인 해당 CPU(101, 102, 103, 104)에게 통신 데이터가 왔다는 것을 알린다. 해당 CPU(101, 102, 103, 104)는 IPC 디바이스(113)에 저장된 통신 데이터를 가져간다. 여기서, 통신 데이터는 공유 물리자원들(109, 110, 111, 112)에 대한 제어권과 관련된 메시지들을 포함한다.
도 2는 실시예에 따른 호스트 CPU와 클라이언트 CPU의 세부 구성을 나타낸 블록도이다.
도 2를 참고하면, 클라이언트 CPU들(102, 103, 104)은 OS(127), 디바이스 드라이버(128), IPC 드라이버(129)를 포함할 수 있다.
디바이스 드라이버(128)는 OS(127)의 요청에 따라 공유 물리자원들(109, 110, 111, 112)에 접근한다.
IPC 드라이버(129)는 IPC 디바이스(113)와 프로세서간 통신을 위한 작업을 처리한다.
호스트 CPU(101)는 공유자원 제어부(121), IPC 드라이버(122), 디바이스 드라이버(123)를 포함할 수 있다.
공유자원 제어부(121)는 공유 물리자원들(109, 110, 111, 112)에 대한 제어권 관리를 위한 일련의 제반 작업을 수행하는 구성으로서, 제어권 관리 펌웨어를 실행하여 동작하는 프로세서일 수 있다.
수행 동작에 따라 구분하면, 공유자원 제어부(121)는 접근 제어 관리부(124), 간접 접근 제어부(125) 및 요청 관리부(126)를 포함할 수 있다.
접근 제어 관리부(124)는 클라이언트 CPU들(102, 103, 104)의 공유 물리자원들(109, 110, 111, 112)에 대한 제어권 할당, 제어권 반환과 같은 제어권 관리를 수행한다.
접근 제어 관리부(124)는 특정 클라이언트 CPU, 예를 들어, 클라이언트 CPU_(102)에게 제어권을 할당한 경우, 제어권이 반환되기 전까지는 다른 클라이언트 CPU들(103, 104)의 제어권 할당 요청을 거부한다. 그리고, 제어권이 반환되면, 접근 제어 관리부(124)는 다른 클라이언트 CPU들(103, 104)의 제어권 할당 요청을 승인한다.
접근 제어 관리부(124)는 클라이언트 CPU들(102, 103, 104)의 접근 제어권의 사용 시간을 제한할 수 있다.
접근 제어 관리부(124)는 공유 물리자원(109, 110, 111, 112) 별로 사용제한, 예를 들어, 접근 허용 시간 등과 같은 관리를 수행할 수 있다.
간접 접근 제어부(125)는 클라이언트 CPU들(102, 103, 104)을 대신하여 공유 물리자원(109, 110, 111, 112)에 대한 제어를 수행하고, 제어 처리 결과를 클라이언트 CPU들(102, 103, 104)에게 반환한다.
간접 접근 제어부(125)는 클라이언트 CPU들(102, 103, 104)로부터 요청받은 간접 접근 제어권 할당/반환과 같은 관리를 수행한다. 또한, 간접 접근 제어부(125)는 간접 접근 제어권을 할당한 클라이언트 CPU(102, 103, 104)를 대신하여 공유 물리자원들(109, 110, 111, 112)에 접근하고, 클라이언트 CPU(102, 103, 104)가 요청한 작업을 처리한 후 그 결과를 클라이언트 CPU(102, 103, 104)에게 제공한다.
간접 접근 제어부(125)는 특정 클라이언트 CPU, 예를 들어, 클라이언트 CPU_1(102)의 간접 제어 요청을 완료하기 전까지는 다른 클라이언트 CPU(103, 104)의 간접 제어 요청을 처리하지 않는다.
간접 접근 제어부(125)는 클라이언트 CPU_1(102)의 간접 제어 요청을 처리하고 간접 제어 요청 처리 결과를 반환한 이후에, 다른 클라이언트 CPU(103, 104)의 간접 제어 요청을 처리한다.
간접 접근 제어부(125)는 간접 제어 요청되는 공유 물리자원(109, 110, 111, 112)의 특성에 맞게 간접 제어를 수행할 수 있다. 예를 들어, 외부 인터페이스를 사용해야하는 경우, 외부 인터페이스의 프로토콜에 맞게 적절히 요청을 처리할 수 있다.
요청 관리부(126)는 클라이언트 CPU들(102, 103, 104)의 제어권 관리 요청을 관리한다. 요청 관리부(126)는 제어권 관리 요청의 요청을 처리하기 위해 대기열을 구비하고, 제어권 관리 요청의 처리 방식에 따라 제어권 관리 요청을 처리할 수 있다.
요청 관리부(126)는 IPC 드라이버(122)로부터 제어권 관리 요청을 수신하고, 제어권 관리 요청의 유형을 분류하며, 분류한 유형에 해당하는 접근 제어 관리부(124) 또는 간접 접근 제어부(125)에게 제어권 관리 요청을 전달한다. 또한, 요청 관리부(126)는 접근 제어 관리부(124) 또는 간접 접근 제어부(125)로부터 제어권 관리 응답을 수신하여 IPC 드라이버(122)로 전달한다.
여기서, 제어권 관리 요청은 제어권 할당 요청/응답, 제어권 반환 요청/응답을 포함할 수 있다.
IPC 드라이버(122)는 IPC 디바이스(113)와 프로세서간 통신을 위한 작업을 처리한다.
디바이스 드라이버(123)는 간접 접근 제어부(125)의 요청에 따라 공유 물리자원들(109, 110, 111, 112)에 접근한다.
도 3은 실시예에 따른 제어권 관리 절차를 나타낸 흐름도이다.
이때, 도 2의 구성과 동일한 구성은 동일한 도면부호를 사용한다.
또한, 도 3의 제어권 관리 요청은 제어권 할당 요청 또는 제어권 반환 요청을 포함한다. 즉, 도 3의 절차는 제어권 할당 절차, 제어권 반환 절차에 모두 공통적으로 해당한다.
또한, 도 3의 제어권은 직접 제어권 및/또는 간접 제어권을 포함한다.
도 3을 참고하면, 클라이언트 CPU_1(102)의 디바이스 드라이버(128)가 IPC 드라이버(129)에게 제어권 관리 요청을 전송한다(S101).
S101 전에 클라이언트 CPU_1(102)의 OS(127)에서는 실행한 소프트웨어의 작업을 수행하기 위해 공유 물리자원들(108, 109, 110, 111)에 접근할 필요가 있을 수 있다. 따라서, OS(127)는 디바이스 드라이버(128)에게 공유 물리자원들(108, 109, 110, 111)에 대한 제어 요청을 전송할 수 있다. 이때, 디바이스 드라이버(128)는 제어 요청된 공유 물리자원들(108, 109, 110, 111)에 대한 제어권이 없을 경우, 제어권 할당과 관련된 요청을 IPC 드라이버(129)에게 전송할 수 있다.
클라이언트 CPU_1(102)의 IPC 드라이버(129)는 IPC 디바이스(113)에게 제어권 관리 요청을 전송한다(S102).
IPC 디바이스(113)는 호스트 CPU(101)의 IPC 드라이버(122)에게 제어권 관리 요청을 전송한다(S103).
한 실시예에 따르면, IPC 디바이스(113)가 메일 박스인 경우, S102, S103는 다음과 같이 동작할 수 있다.
메일 박스는 CPU 채널의 방향 별로 구분되어 있을 수 있다. 예컨대, 클라이언트 CPU_1(102)에서 호스트 CPU(101)에게 전달하는 메시지 영역, 호스트 CPU(101)에서 클라이언트 CPU_1(102)에게 전달하는 메시지 영역으로 구분될 수 있다. 이는 다른 CPU들에도 마찬가지로 적용될 수 있다.
IPC 드라이버(129)는 IPC 디바이스(113)의 정해진 영역에 제어권 관리 요청을 기재(Write)한다(S102). IPC 디바이스(113)는 제어권 관리 요청이 기재된 영역의 소유자, 예컨대, 호스트 CPU(101)의 IPC 드라이버(122)에게 인터럽트 신호(INT)를 전송하여 제어권 관리 요청의 기재를 알릴 수 있다.
IPC 드라이버(122)는 인터럽트 신호가 수신되면, IPC 디바이스(113)의 정해진 영역에 기재된 제어권 관리 요청을 리드(Read)한다(S103). 이러한 S102, S103 절차는 IPC 디바이스(113)를 통한 CPU들(101, 102, 103, 104) 간의 IPC 통신에 공통으로 적용될 수 있다.
IPC 드라이버(122)는 요청 관리부(126)에게 제어권 관리 요청을 전송한다(S104).
요청 관리부(126)는 S104에서 요청된 제어권의 타입을 판별한다(S105). 즉, 제어권 타입이 직접 제어권인지 혹은 간접 제어권인지 판별한다.
요청 관리부(126)는 제어권 타입이 간접 제어권이 아니라고 판단(S106)되면, 접근 제어 관리부(124)에게 제어권 관리 요청을 전달한다(S107). 그러면, 접근 제어 관리부(124)는 제어권 관리 요청에 대응하는 제어권 관리 작업을 수행한다(S108).
요청 관리부(126)는 제어권 타입이 간접 제어권이라고 판단(S106)되면, 간접 접근 제어 관리부(124)에게 제어권 관리 요청을 전달한다(S109). 그러면, 간접 접근 제어 관리부(124)는 제어권 관리 요청에 대응하는 간접 제어권 관리 작업을 수행한다(S110).
도 4는 실시예에 따른 제어권 할당 절차를 나타낸 흐름도이다.
도 4를 참고하면, 클라이언트 CPU_1(102)의 디바이스 드라이버(128)는 호스트 CPU(101)에게 공유 물리자원 #1(109)에 대한 제어권 할당 요청을 전송할 수 있다(S201). 이때, S201의 제어권 할당 요청은 도 3에서 S101 ~ S107의 과정을 거쳐 전송될 수 있다.
호스트 CPU(101)의 접근 제어 관리부(124)는 S201에서 요청된 제어권 할당이 가능한지 확인한다(S202). 즉, 접근 제어 관리부(124)는 제어권 할당 정보를 확인하여 공유 물리자원 #1(109)의 기 할당 여부를 확인한다.
S202에서 제어권 할당 여부를 확인한 결과, 공유 물리자원 #1(109)은 할당되지 않았으므로, 호스트 CPU(101)의 접근 제어 관리부(124)는 제어권 할당 정보를 생성하여 저장한다(S203). 제어권 할당 정보는 제어권 할당 요청자인 클라이언트 CPU #1(102)의 CPU 식별 정보와 제어권 할당 대상인 공유 물리자원 #1(109)의 식별 정보를 맵핑(mapping)한 정보일 수 있다.
접근 제어 관리부(124)는 제어권 할당 응답을 클라이언트 CPU_1(102)의 디바이스 드라이버(128)에게 전송한다(S204). 이때, S204의 제어권 할당 응답은 도 3의 S102, S103, S104의 절차와 동일하고 다만 방향은 반대로 이루어진다. 예를 들어, 접근 제어 관리부(124)는 요청 관리부(126)를 통해 제어권 할당 응답을 IPC 드라이버(122)에게 전송한다. IPC 드라이버(122)는 호스트 CPU(101)에서 클라이언트 CPU_1(102)로 메시지를 전달하는 메일 박스 영역에 제어권 할당 응답을 기재(Write)할 수 있다. 클라이언트 CPU_1(102)의 IPC 드라이버(129)는 메일 박스(113)로부터 인터럽트 메시지가 수신되면, 메일 박스 영역에 접근하여 제어권 할당 응답을 리드(Read)한다. IPC 드라이버(129)는 리드한 제어권 할당 응답을 디바이스 드라이버(128)에게 전송한다.
디바이스 드라이버(128)는 버스 통신으로 제어권이 할당된 공유 물리자원 #1(109)에 접근하여 공유 물리자원 제어를 수행할 수 있다(S205). 예를 들어, 공유 물리자원 #1(109)이 UFS와 같은 저장 장치일 경우, 공유 물리자원 제어는 저장 장치에 데이터를 저장하거나 또는 저장된 데이터를 리드하는 작업을 포함할 수 있다.
클라이언트 CPU_2(103)의 디바이스 드라이버(103a)가 접근 제어 관리부(124)에게 공유 물리자원 #1(109)에 대한 제어권 할당 요청을 전송한다(S206). 이때, S206의 제어권 할당 요청은 도 3의 S102, S103, S104의 절차와 동일하다. 예를 들어, 클라이언트 CPU_2(103)의 IPC 드라이버는 클라이언트 CPU_2(103)에서 호스트 CPU(101)로 메시지를 전달하는 메일 박스 영역에 제어권 할당 요청을 기재(Write)할 수 있다. 호스트 CPU(101)의 IPC 드라이버(122)는 메일 박스(113)로부터 인터럽트 신호가 수신되면, 메일 박스 영역에 접근하여 제어권 할당 요청을 리드(Read)한다. 접근 제어 관리부(124)는 IPC 드라이버(122)와 요청 관리부(126)를 통해 제어권 할당 요청을 수신한다.
접근 제어 관리부(124)는 S206에서 요청된 제어권 할당이 가능한지 확인한다(S207). 즉, 접근 제어 관리부(124)는 제어권 할당 정보를 확인하여 공유 물리자원 #1(109)의 기 할당 여부를 확인한다.
S207에서 제어권 할당 여부를 확인한 결과, 공유 물리자원 #1(109)은 이미 클라이언트 CPU_1(102)에 할당이 되었으므로, 접근 제어 관리부(124)는 제어권 거절 응답을 클라이언트 CPU_2(103)에게 전송한다(S208).
이때, S208의 제어권 거절 응답은 도 3의 S102, S103, S104의 절차와 동일하고 다만 방향은 반대로 이루어진다. 예를 들어, 접근 제어 관리부(124)는 요청 관리부(126)를 통해 제어권 거절 응답을 IPC 드라이버(122)에게 전송한다. IPC 드라이버(122)는 호스트 CPU(101)에서 클라이언트 CPU_2(103)로 메시지를 전달하는 메일 박스 영역에 제어권 거절 응답을 기재(Write)할 수 있다. 클라이언트 CPU_2(103)의 IPC 드라이버는 메일 박스(113)로부터 인터럽트 메시지가 수신되면, 메일 박스 영역에 접근하여 제어권 거절 응답을 리드(Read)한다. IPC 드라이버는 리드한 제어권 할당 응답을 디바이스 드라이버(103a)에게 전송한다.
이때, 제어권이 직접 제어권일 경우, 해당 공유 물리자원(109, 110, 111, 112)에 대한 접근은 제어권을 할당받은 클라이언트 CPU(102, 103, 104)에게 배타적으로 허용된다. 따라서, S203에서 할당한 제어권이 직접 제어권이고 S206에서 요청되는 제어권이 간접 제어권일 경우, 이미 배타적인 제어권이 할당되었으므로, S208이 수행된다. 또한, S203에서 할당한 제어권이 간접 제어권이고 S206에서 요청되는 제어권이 직접 제어권 일 경우, 기 할당 제어권이 간접 제어권이라 하더라도 S206에서 요청되는 제어권이 배타적인 제어권 이므로, 마찬가지로 S208이 수행된다.
반면, 호스트 CPU(101)는 S201, S206에서 할당 요청된 제어권이 간접 제어권 일 경우에는 S203에서 간접 제어권이 할당되었더라도 제어권 할당을 거절하지 않고 제어권 할당을 승인할 수 있다. 왜냐하면, 간접 제어권은 독점권이 부여되는 것은 아니기 때문이다. 간접 제어권을 할당 받은 여러 클라이언트 CPU들(102, 103, 104)로부터 간접 제어 요청이 수신될 경우, 호스트 CPU(101)는 정해진 우선순위 알고리즘에 따라 간접 제어 요청을 순차적으로 처리할 수 있기 때문이다.
클라이언트 CPU_3(104)의 디바이스 드라이버(104a)가 접근 제어 관리부(124)에게 공유 물리자원 #2(110)에 대한 제어권 할당 요청을 전송한다(S209). 이때, S209의 제어권 할당 요청은 도 3의 S102, S103, S104의 절차와 동일하다. 예를 들어, 클라이언트 CPU_3(104)의 IPC 드라이버는 클라이언트 CPU_3(104)에서 호스트 CPU(101)로 메시지를 전달하는 메일 박스 영역에 제어권 할당 요청을 기재(Write)할 수 있다. 호스트 CPU(101)의 IPC 드라이버(122)는 메일 박스(113)로부터 인터럽트 신호가 수신되면, 메일 박스 영역에 접근하여 제어권 할당 요청을 리드(Read)한다. 접근 제어 관리부(124)는 IPC 드라이버(122)와 요청 관리부(126)를 통해 제어권 할당 요청을 수신한다.
접근 제어 관리부(124)는 S209에서 요청된 제어권 할당이 가능한지 확인한다(S210). 즉, 접근 제어 관리부(124)는 제어권 할당 정보를 확인하여 공유 물리자원 #2(109)의 기 할당 여부를 확인한다.
S210에서 제어권 할당 여부를 확인한 결과, 공유 물리자원 #2(110)은 제어권을 할당 받은 CPU 정보가 없으므로, 접근 제어 관리부(124)는 제어권 할당 승인을 결정하고, 제어권 할당 정보를 생성하여 저장한다(S211). S211의 제어권 할당 정보는 제어권 할당 요청자인 클라이언트 CPU_3(104)의 CPU 식별 정보와 제어권 할당 대상인 공유 물리자원 #2(110)의 식별 정보를 맵핑(mapping)한 정보일 수 있다.
접근 제어 관리부(124)는 제어권 할당 승인 응답을 클라이언트 CPU_3(104)에게 전송한다(S212). 이때, S212의 제어권 할당 승인 응답은 도 3의 S102, S103, S104의 절차와 동일하고 다만 방향은 반대로 이루어진다. 예를 들어, 접근 제어 관리부(124)는 요청 관리부(126)를 통해 제어권 할당 승인 응답을 IPC 드라이버(122)에게 전송한다. IPC 드라이버(122)는 호스트 CPU(101)에서 클라이언트 CPU_3(104)로 메시지를 전달하는 메일 박스 영역에 제어권 할당 승인 응답을 기재(Write)할 수 있다. 클라이언트 CPU_3(104)의 IPC 드라이버는 메일 박스(113)로부터 인터럽트 메시지가 수신되면, 메일 박스 영역에 접근하여 제어권 할당 승인 응답을 리드(Read)한다. IPC 드라이버는 리드한 제어권 할당 승인 응답을 디바이스 드라이버(104a)에게 전송한다.
도 5는 실시예에 따른 제어권 반환 절차를 나타낸 흐름도이다.
이때, 도 5의 제어권은 직접 제어권 및 간접 제어권을 포함한다.
도 5를 참고하면, 클라이언트 CPU_1(102)의 디바이스 드라이버(108)는 호스트 CPU(101)에게 공유 물리자원 #1(109)에 대한 제어권 반환 요청을 전송할 수 있다(S301). 이때, S301의 제어권 반환 요청은 도 3에서 S101 ~ S107의 과정을 거쳐 전송될 수 있다.
호스트 CPU(101)의 접근 제어 관리부(124)는 제어권 반환 요청에 따라 제어권 할당 정보, 즉, 도 4의 S202에서 생성한 제어권 할당 정보를 삭제한다(S302).
접근 제어 관리부(124)는 제어권 반환 응답을 클라이언트 CPU_1(102)의 디바이스 드라이버(128)에게 전송한다(S303). S303은 도 4의 S203에서 설명한 절차와 동일하게 수행될 수 있다.
클라이언트 CPU_2(103)의 디바이스 드라이버(103a)가 접근 제어 관리부(124)에게 공유 물리자원 #1에 대한 제어권 할당 요청을 전송한다(S304). S304는 도 4의 S205에서 설명한 절차와 동일하게 수행될 수 있다.
접근 제어 관리부(124)는 S304에서 요청된 제어권 할당이 가능한지 확인한다(S305). 즉, 접근 제어 관리부(124)는 제어권 할당 정보를 확인하여 공유 물리자원 #1(109)의 기 할당 여부를 확인한다.
S305에서 제어권 할당 여부를 확인한 결과, S302에서 제어권 할당 정보의 삭제로 인해 공유 물리자원 #1(109)의 제어권은 반환이 완료되었으므로, 접근 제어 관리부(124)는 제어권 할당 승인을 결정하고, 제어권 할당 정보를 생성한다(S306). S306의 제어권 할당 정보는 제어권 할당 요청자인 클라이언트 CPU _2(103)의 CPU 식별 정보와 제어권 할당 대상인 공유 물리자원 #1(109)의 식별 정보를 맵핑(mapping)한 정보일 수 있다.
접근 제어 관리부(124)는 제어권 할당 승인 응답을 클라이언트 CPU_2(103)에게 전송한다(S307). 이때, S307의 제어권 할당 승인 응답은 도 3의 S207에서 설명한 절차와 동일하게 수행될 수 있다.
클라이언트 CPU_2(103)의 디바이스 드라이버(103a)는 S307에서 공유 물리자원 #1(109)에 대한 제어권을 획득하였으므로, 공유 물리자원 #1(109)에 접근하여 제어를 수행할 수 있다(S308).
도 6은 실시예에 따른 클라이언트 CPU의 동작을 나타낸 순서도이다.
이때, 도 6의 제어권은 직접 제어권에 해당된다.
도 6을 참고하면, 클라이언트 CPU_1(102)의 OS(127)는 공유 물리자원 #1(109)에 대한 제어가 필요할 경우, 디바이스 드라이버(128)에게 제어 요청을 전송한다(S401).
디바이스 드라이버(128)는 S401에서 제어 요청된 공유 물리자원 #1(109)에 대한 제어권이 있는지 확인한다(S402).
S402에서 제어권이 없다고 확인되면, 디바이스 드라이버(128)는 IPC 드라이버(129)에게 제어권 할당 요청을 전송한다(S403). S403 이후의 동작은 도 3의S102 ~ S110에서 설명한 절차와 동일하게 수행될 수 있다.
S402에서 제어권이 있다고 확인되면, 디바이스 드라이버(128)는 공유 물리자원 #1(109)에 접근하여 S401에서 요청된 작업을 위한 제어를 수행할 수 있다(S404).
도 7은 실시예에 따른 간접 제어 절차를 나타낸 흐름도이다.
도 7을 참고하면, 클라이언트 CPU_1(102)이 호스트 CPU(101)로부터 간접 제어권을 할당받은 이후의 절차를 나타낸다.
클라이언트 CPU_1(102)의 OS(127)가 공유 물리자원 #1(109)에 대한 간접 제어 요청을 디바이스 드라이버(128)에게 전송한다(S501).
디바이스 드라이버(128)는 호스트 CPU(101)로부터 간접 제어권을 할당 받았는지 확인한다(S502).
S502에서 간접 제어권이 없다고 판단되면, 디바이스 드라이버(128)는 IPC 드라이버(129)에게 간접 제어권 할당 요청을 전송한다(S503).
IPC 드라이버(129)는 IPC 디바이스(113) 및 호스트 CPU(101)와 연동하여 공유 물리자원 #1(109)에 대한 간접 제어권 할당 절차를 수행한다(S504). S502에서 간접 제어권이 있다고 판단되면, 디바이스 드라이버(128)는 IPC 드라이버(129)에게 공유 물리자원 #1(109)에 대한 간접 제어 요청을 전송한다(S505).
IPC 드라이버(129)는 IPC 디바이스(113)에게 공유 물리자원 #1(109)에 대한 간접 제어 요청을 전송한다(S506).
IPC 디바이스(113)는 호스트 CPU(101)에게 공유 물리자원 #1(109)에 대한 간접 제어 요청을 전송한다(S507).
이때, S506과 S507은 도 3, 도 4, 도 5에서 설명한 제어권 할당/반환 요청 절차와 유사한 방식으로 수행된다. 즉, IPC 디바이스(113)가 메일 박스일 경우, IPC 드라이버(129)는 클라이언트 CPU_1(102)에서 호스트 CPU(101)로 메시지를 전달하는 메일 박스 영역에 간접 제어 요청을 기재(Write)할 수 있다. 호스트 CPU(101)의 IPC 드라이버(122)는 메일 박스(113)로부터 인터럽트 신호가 수신되면, 메일 박스 영역에 접근하여 간접 제어 요청을 리드(Read)한다. 접근 제어 관리부(124)는 IPC 드라이버(122)와 요청 관리부(126)를 통해 간접 제어 요청을 수신한다.
요청 관리부(126)는 IPC 드라이버(122)로부터 간접 제어 요청을 수신(S508)하여 간접 접근 제어부(125)로 전달한다(S509).
간접 접근 제어부(125)는 간접 제어 요청을 디바이스 드라이버(123)에게 전송한다(S510). 그러면, 디바이스 드라이버(123)는 간접 제어 요청된 공유 물리자원 #1(108)에 접근하여 요청된 작업을 위한 제어를 수행한다(S511).
간접 접근 제어부(125)는 디바이스 드라이버(123)로부터 간접 제어 요청에 대한 처리 결과를 반환 받으면(S512), 간접 제어 요청 처리 결과를 요청 관리부(126)로 전달한다(S513).
요청 관리부(126)는 반환 받은 간접 제어 요청 처리 결과를 IPC 드라이버(122)로 전송한다(S514).
IPC 드라이버(122)는 반환 받은 간접 제어 요청 처리 결과를 IPC 디바이스(113)로 전송한다(S515).
IPC 디바이스(113)는 간접 제어 요청 처리 결과를 클라이언트 CPU_1(102)에게 전송한다(S516).
여기서, S515와 S516은 도 3, 도 4, 도 5에서 설명한 제어권 할당/반환 응답 절차와 유사한 방식으로 수행된다. 즉, IPC 디바이스(113)가 메일 박스일 경우, IPC 드라이버(129)는 호스트 CPU(101)에서 클라이언트 CPU_1(102)로 메시지를 전달하는 메일 박스 영역에 간접 제어 요청 처리 결과를 기재(Write)할 수 있다. 클라이언트 CPU_1(102)의 IPC 드라이버(129)는 메일 박스(113)로부터 인터럽트 신호가 수신되면, 메일 박스 영역에 접근하여 간접 제어 요청 처리 결과를 리드(Read)한다.
클라이언트 CPU_1(102)의 IPC 드라이버(129)는 S516에서 수신한 간접 제어 요청 처리 결과를 디바이스 드라이버(128)에게 전송한다(S517).
디바이스 드라이버(128)는 OS(127)에게 간접 제어 요청 처리 결과를 전송한다(S518).
이와 같이, 클라이언트 CPU_1(102)의 OS(127)는 S501 ~ S518의 절차를 통해 공유 물리자원 #1(109)에 대한 제어를 호스트 CPU(101)를 통해 수행할 수 있다.
이때, S504는 도 3의 S103 ~ S110에서 설명한 절차, 도 4의 S201 ~ S212 절차와 동일하게 수행될 수 있다. 이후, 간접 제어권 반환 절차는 도 5의 S301 ~ S308에서 설명한 절차와 동일하게 수행될 수 있다.
또한, 도 7에서는 간접 제어권 할당을 전제로, 간접 제어 요청을 할 수 있지만, 다른 실시예에 따르면, 간접 제어권 할당/반환 절차 없이 간접 제어 요청을 처리하도록 할 수 있다. 즉, 도 7의 S502 ~ S504는 생략되고, S501 이후, 바로 S505 ~ S518이 수행될 수 있다.
도 8은 실시예에 따른 호스트 CPU의 간접 제어 요청 처리 절차를 나타낸 순서도이다.
도 8을 참고하면, 호스트 CPU(101)의 간접 접근 제어부(125)는 공유 물리자원에 대한 간접 제어 요청을 복수개 수신(S601)할 수 있다.
간접 접근 제어부(125)는 사전에 정의된 우선순위 알고리즘에 기초하여 복수개의 간접 제어 요청 중에서 처리할 간접 제어 요청을 선택할 수 있다(S602).
실시예에 따르면, 우선순위 알고리즘은 간접 제어 요청이 도착한 순서대로 간접 제어 요청을 처리하도록 설정될 수 있다.
실시예에 따르면, 우선순위 알고리즘은 간접 제어 요청의 종류, 즉, 제어 종류의 순위가 높은 순서대로 간접 제어 요청을 처리하도록 설정될 수 있다.
실시예에 따르면, 우선순위 알고리즘은 간접 제어권 할당시 클라이언트 CPU(102, 103, 104)의 배타적 우선권이 부여될 경우, 간접 제어 요청을 전송한 클라이언트 CPU(102, 103, 104)의 우선 순위가 높은 순서대로 간접 제어 요청을 처리하도록 설정될 수 있다.
간접 접근 제어부(125)는 S602에서 선택한 간접 제어 요청을 처리(S603)하고, 간접 제어 요청 처리 결과를 반환한다(S604).
간접 접근 제어부(125)는 처리할 간접 제어 요청이 남아있는지 판단(S605)하고, 있으면, S602 부터 다시 시작한다. 반면, 처리할 간접 제어 요청이 남아있지 않으면, 간접 접근 제어부(125)는 동작을 종료한다.
이상에서 설명한 본 개시의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 개시의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있다.
이상에서 본 개시의 실시예에 대하여 상세하게 설명하였지만 본 개시의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 개시의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 개시의 권리범위에 속하는 것이다.
Claims (12)
- 독립적으로 소프트웨어를 실행하는 복수의 프로세서들,
상기 복수의 프로세서들에서 실행된 소프트웨어가 필요로 하는 작업을 수행하기 위해 상기 복수의 프로세서들 간에 서로 공유하여 사용하는 적어도 하나의 공유 하드웨어 디바이스, 그리고
상기 복수의 프로세서들이 버스 통신을 사용하여 상기 적어도 하나의 공유 하드웨어 디바이스에 접근할 수 있도록 상기 복수의 프로세서들 각각에 연결된 버스들을 연결시키는 버스 인터커넥터를 포함하고,
상기 복수의 프로세서들은,
상기 적어도 하나의 공유 하드웨어 디바이스에 접근할 수 있는 제어권을 관리하는 호스트 프로세서, 그리고
상기 호스트 프로세서에게 제어권 관리를 요청하고, 제어권이 승인된 공유 하드웨어 디바이스에 접근하여 제어를 수행하는 적어도 하나의 클라이언트 프로세서
를 포함하는, 시스템온칩(System-On-Chip, SoC). - 제1항에서,
상기 호스트 프로세서와 상기 적어도 하나의 클라이언트 프로세서 간의 제어권 관리 요청 및 응답을 위한 메시지 교환을 처리하는 IPC(Inter Process Communication) 디바이스
를 더 포함하는, 시스템온칩. - 제2항에서,
상기 호스트 프로세서는,
제어권을 요청한 특정 클라이언트 프로세서에게 공유 하드웨어 디바이스에 대한 배타적인 접근 권한을 할당하고, 제어권이 할당된 공유 하드웨어 디바이스에 대해 권한이 없는 클라이언트 프로세서의 제어권 요청에 대해 거절하는 접근 제어 관리부
를 포함하는, 시스템온칩. - 제2항에서,
상기 호스트 프로세서는,
간접 제어권을 할당한 특정 클라이언트 프로세서를 대신하여 공유 하드웨어 디바이스에 접근하여 작업을 수행하고, 작업 수행 결과를 상기 간접 제어권을 할당한 특정 클라이언트 프로세서에게 반환하는 간접 접근 제어부
를 포함하는, 시스템온칩. - 제4항에서,
상기 간접 접근 제어부는,
사전에 설정된 우선순위 알고리즘에 기초하여, 복수의 클라이언트 프로세서로부터 수신한 복수의 간접 제어 요청을 순차적으로 처리하는, 시스템온칩. - 제2항에서,
상기 호스트 프로세서는,
상기 IPC 디바이스로부터 제어권 관리 요청을 수신하고, 상기 수신한 제어권 관리 요청에 대한 제어권 할당 응답을 상기 IPC 디바이스로 전달하는 IPC 드라이버
를 포함하는, 시스템온칩. - 제2항에서,
상기 적어도 하나의 클라이언트 프로세서는,
실행한 소프트웨어로부터 공유 하드웨어 디바이스에 대한 제어 요청이 발생하면, 상기 공유 하드웨어 디바이스에 대한 제어권을 할당 받았는지 확인하고, 제어권을 할당 받지 않은 경우, 상기 제어권의 할당을 요청하는 디바이스 드라이버, 그리고
상기 디바이스 드라이버로부터 제어권 할당 요청을 수신하고, 상기 수신한 제어권 할당 요청을 상기 IPC 디바이스로 전송하며, 상기 IPC 디바이스로부터 수신한 상기 호스트 프로세서에 의해 생성된 제어권 할당 응답을 상기 디바이스 드라이버에게 전달하는 IPC 드라이버
를 포함하는, 시스템온칩. - 소프트웨어를 독립적으로 실행하는 복수의 프로세서들 중에서 호스트 프로세서의 제어권 관리 방법으로서,
제1 클라이언트 프로세서로부터 제1 공유 물리자원에 대한 제어권 할당 요청을 수신하는 단계,
상기 제1 공유 물리자원에 대한 제어권이 제2 클라이언트 프로세서에게 이미 할당되었는지 확인하는 단계,
제어권이 이미 할당되지 않았다면, 상기 제1 클라이언트 프로세서에게 제어권 할당 승인 응답을 전송하는 단계, 그리고
제어권이 이미 할당되었다면, 상기 제1 클라이언트 프로세서에게 제어권 할당 거절 응답을 전송하는 단계
를 포함하는, 방법. - 제8항에서,
상기 제어권 할당 승인 응답을 전송하는 단계 또는 상기 제어권 할당 거절 응답을 전송하는 단계 이후,
상기 제어권을 할당받은 상기 제1 클라이언트 프로세서 또는 상기 제2 클라이언트 프로세서로부터 상기 제1 공유 물리자원에 대한 제어권 반환 요청을 수신하면, 상기 제1 공유 물리자원에 대한 제어권 할당 정보를 삭제하고 제어권 반환 응답을 전송하는 단계
를 더 포함하는, 방법. - 제9항에서,
상기 제어권 반환 응답을 전송하는 단계 이후,
제3 클라이언트 프로세서로부터 상기 제1 공유 물리자원에 대한 제어권 할당 요청이 수신되면, 상기 제1 공유 물리자원에 대한 제어권을 상기 제3 클라이언트 프로세서에게 할당하는 단계
를 더 포함하는, 방법. - 제8항에서,
상기 제어권 할당 요청을 수신하는 단계와 상기 확인하는 단계 사이에,
상기 제어권 할당 요청이 상기 제1 공유 물리자원에 대한 배타적인 제어권 할당 요청인지 또는 간접 제어권 할당 요청인지 판단하는 단계를 더 포함하고,
상기 배타적인 제어권 할당 요청으로 판단되면, 상기 확인하는 단계를 수행하는, 방법. - 제11항에서,
상기 판단하는 단계 이후,
상기 간접 제어권 할당 요청으로 판단되면, 상기 제1 공유 물리자원에 대한 간접 제어권을 상기 제1 클라이언트 프로세서에게 할당하는 단계, 그리고
상기 제1 클라이언트 프로세서로부터 상기 제1 공유 물리자원에 대한 간접 제어 요청이 수신되면, 상기 제1 클라이언트 프로세서를 대신하여 상기 제1 공유 물리자원에 접근하여 작업을 처리하고, 작업 처리 결과를 상기 제1 클라이언트 프로세서에게 전송하는 단계
를 더 포함하는, 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20210174613 | 2021-12-08 | ||
KR1020210174613 | 2021-12-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230086548A true KR20230086548A (ko) | 2023-06-15 |
Family
ID=86764080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220049475A KR20230086548A (ko) | 2021-12-08 | 2022-04-21 | 이종의 멀티 cpu 간에 물리 자원을 공유하기 위한 제어권을 관리하는 시스템온칩 및 그 동작 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20230086548A (ko) |
-
2022
- 2022-04-21 KR KR1020220049475A patent/KR20230086548A/ko unknown
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10997093B2 (en) | NVME data processing method and NVME device | |
EP3798835B1 (en) | Method, device, and system for implementing hardware acceleration processing | |
US10180843B2 (en) | Resource processing method and device for a multi-core operating system | |
JP5541275B2 (ja) | 情報処理装置および不正アクセス防止方法 | |
CN107995129B (zh) | 一种nfv报文转发方法和装置 | |
JPH0844681A (ja) | 複数の処理装置により共用される資源の集中管理 | |
KR102570943B1 (ko) | PCIe 디바이스 및 그 동작 방법 | |
CN116204456A (zh) | 数据访问方法及计算设备 | |
US11741039B2 (en) | Peripheral component interconnect express device and method of operating the same | |
US11995019B2 (en) | PCIe device with changeable function types and operating method thereof | |
KR102568909B1 (ko) | PCIe 펑션 및 그 동작 방법 | |
US10331581B2 (en) | Virtual channel and resource assignment | |
KR20160056382A (ko) | 세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법 | |
US11853798B2 (en) | Disaggregated memory pool assignment | |
JP2001333137A (ja) | 自主動作通信制御装置及び自主動作通信制御方法 | |
KR20230086548A (ko) | 이종의 멀티 cpu 간에 물리 자원을 공유하기 위한 제어권을 관리하는 시스템온칩 및 그 동작 방법 | |
US20140052879A1 (en) | Processor, information processing apparatus, and interrupt control method | |
WO2007039933A1 (ja) | 演算処理装置 | |
US7650469B2 (en) | Determining whether a non-running processor has access to an address space | |
CN112231250B (zh) | 存储设备的性能隔离 | |
WO2022204897A1 (zh) | 一种闪存访问方法及装置 | |
JP6364827B2 (ja) | 情報処理装置、及び、そのリソースアクセス方法、並びに、リソースアクセスプログラム | |
JP7047906B2 (ja) | 入出力処理割り当て制御装置、入出力処理割り当て制御システム、入出力処理割り当て制御方法、及び、入出力処理割り当て制御プログラム | |
KR20230034195A (ko) | 하이브리드 가상 머신 관리자의 시스템 및 동작 방법 | |
KR20230152394A (ko) | PCIe 장치 및 이의 동작 방법 |