KR20160056382A - 세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법 - Google Patents

세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법 Download PDF

Info

Publication number
KR20160056382A
KR20160056382A KR1020140155558A KR20140155558A KR20160056382A KR 20160056382 A KR20160056382 A KR 20160056382A KR 1020140155558 A KR1020140155558 A KR 1020140155558A KR 20140155558 A KR20140155558 A KR 20140155558A KR 20160056382 A KR20160056382 A KR 20160056382A
Authority
KR
South Korea
Prior art keywords
interface
semaphore
atomic
masters
transaction
Prior art date
Application number
KR1020140155558A
Other languages
English (en)
Other versions
KR102285749B1 (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 KR1020140155558A priority Critical patent/KR102285749B1/ko
Priority to TW104132911A priority patent/TWI673955B/zh
Priority to US14/877,653 priority patent/US9940278B2/en
Priority to CN201510738756.0A priority patent/CN105589831B/zh
Publication of KR20160056382A publication Critical patent/KR20160056382A/ko
Priority to US15/899,877 priority patent/US10176136B2/en
Priority to US16/192,019 priority patent/US10678728B2/en
Priority to US16/821,289 priority patent/US11080220B2/en
Priority to US17/376,590 priority patent/US11599491B2/en
Application granted granted Critical
Publication of KR102285749B1 publication Critical patent/KR102285749B1/ko
Priority to US18/179,052 priority patent/US11835993B2/en
Priority to US18/515,091 priority patent/US20240086354A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

본 발명의 실시 예에 따른 시스템 온 칩은, 복수의 마스터들, 슬레이브 장치와 상기 복수의 마스터들 사이에서 인터페이싱을 제공하는 인터페이스, 그리고 상기 슬레이브 장치를 제어하기 위한 상기 복수의 마스터들의 상기 인터페이스로의 접근 요청을 검출하고, 상기 검출된 접근 요청에 따라 상기 복수의 마스터들 각각에 대한 세마포어를 특정 동작 단위로 할당하는 세마포어 유닛을 포함한다.

Description

세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법{SYSTEM ON CHIP HAVING SEMAPHORE FUNCTION AND EMPLEMENTING METHOD THEREOF}
본 발명은 반도체 장치에 관한 것으로, 좀 더 상세하게는 세마포어 기능을 하드웨어로 구현하는 시스템 온 칩 및 그것의 세마포어 설정 방법에 관한 것이다.
최근, 스마트폰, 테이블릿 PC, 디지털 카메라, MP3 플레이어, PDA 등과 같은 모바일 장치의 이용이 폭발적으로 증가하고 있다. 이러한 모바일 장치에서도 멀티미디어의 구동 및 각종 데이터의 처리량이 증가하면서, 고속 프로세서 및 대용량 저장 매체의 채용이 확대되고 있다. 모바일 장치에는 다양한 응용 프로그램(Application program)들이 구동된다. 다양한 응용 프로그램들을 구동하기 위하여, 모바일 장치에는 워킹 메모리(예를 들면, DRAM), 불휘발성 메모리, 그리고 응용 프로세서(Application Processor: 이하, AP)와 같은 반도체 장치들이 사용된다. 그리고 통신 기능을 수행하기 위한 통신 프로세서(Communication Processor: 이하, CP)가 사용된다. 서로 다른 운영 체제(OS)에 의해서 구동되는 응용 프로세서(AP)와 통신 프로세서(CP)가 하나의 시스템 온 칩(SoC) 내에 구현되기도 한다. 이 경우, 응용 프로세서(AP)와 통신 프로세서(CP)와 같은 복수의 마스터들이 하나의 슬레이브 장치를 공유할 수 있다. 특히, 하나의 슬레이브 장치를 멀티-마스터 설정이 가능한 하나의 인터페이스를 통해서 공유할 수 있다. 이러한 경우에, 하나의 슬레이브 장치를 하나의 인터페이스를 통해서 공유하기 위한 방법을 세마포어(Semaphore)라고 한다.
하지만, 하나의 인터페이스를 통해서 싱글 슬레이브를 제어하기 위한 세마포어 구현을 위해서 상대적으로 많은 소프트웨어 자원이 소요되고, 복잡도도 증가하게 된다. 더불어, 소프트웨어 레벨에서 실시간 운영 체제(Real-time OS)의 스케줄링을 위해서는 어느 하나의 마스터가 대기해야 하는 시간이 고정적인 값으로 정의되어 있어야 한다. 더불어, 빠른 응답을 제공하기 위해서는 고정된 대기 시간의 길이를 줄이는 것이 필요하다. 하지만, 소프트웨어 레벨에서 이러한 대기 시간을 규정하는 것은 상대적으로 높은 소프트웨어의 복잡성과 빠른 응답성에 대한 보장이 어렵다.
본 발명은 상술한 기술적 문제점을 해결하기 위해 제안된 것으로, 본 발명의 목적은 하드웨어적으로 세마포어를 구현하여 소프트웨어의 개입없이 인터페이스를 공유할 수 있는 시스템 온 칩을 제공하는 데 있다.
본 발명의 실시 예에 따른 시스템 온 칩은, 복수의 마스터들, 슬레이브 장치와 상기 복수의 마스터들 사이에서 인터페이싱을 제공하는 인터페이스, 그리고 상기 슬레이브 장치를 제어하기 위한 상기 복수의 마스터들의 상기 인터페이스로의 접근 요청을 검출하고, 상기 검출된 접근 요청에 따라 상기 복수의 마스터들 각각에 대한 세마포어를 특정 동작 단위로 할당하는 세마포어 유닛을 포함한다.
본 발명의 실시 예에 따른 복수의 마스터들과 하나의 슬레이브 장치 사이에 인터페이싱을 제공하는 인터페이스의 멀티-마스터에 대한 세마포어 할당 방법은, 상기 복수의 마스터들 각각으로부터의 상기 인터페이스로의 접근 요청을 수신하는 단계, 상기 수신된 어느 하나의 마스터로부터의 접근 요청에 응답하여 상기 인터페이스로 최초 트랜잭션을 전송하는 단계, 상기 인터페이스가 상기 최초 트랜잭션을 수용했는지 검출하는 단계, 상기 최초 트랜잭션이 수용된 경우, 상기 어느 하나의 마스터에 상기 세마포어를 할당하고, 상기 어느 하나의 접근 요청을 상기 슬레이브 장치로 전송하기 위한 아토믹 시퀀스를 수행하는 단계, 그리고 상기 아토믹 시퀀스가 완료되면, 상기 어느 하나의 마스터에 할당된 세마포어를 해제하는 단계를 포함한다.
본 발명의 실시 예에 따른 시스템 온 칩은, 응용 프로세서, 통신 프로세서, 상기 응용 프로세서 및 상기 통신 프로세서를 마스터로, 외부 장치를 슬레이브로 연결하기 위한 인터페이스, 그리고 상기 응용 프로세서 또는 상기 통신 프로세서의 상기 인터페이스로의 접근 요청을 검출하고, 상기 검출 결과에 따라 상기 응용 프로세서 또는 상기 통신 프로세서에 대한 상기 인터페이스에 대한 점유권을 특정 동작 단위로 할당하는 세마포어 유닛을 포함한다.
실시 예로서, 상기 인터페이스는 I2C 인터페이스(Inter-Integrated Circuit Interface), UART(Universal Asynchronous Receiver Transmitter), SPI(Serial Peripheral Interface), HSIC(High-Speed Inter-Chip) 중 적어도 하나의 프로토콜에 대응할 수 있다.
본 발명은 하드웨어를 추가하여 공유되는 인터페이스에 대한 세마포어를 구성하여, 효율적으로 복수의 마스터들이 하나의 슬레이브를 구동할 수 있다. 더불어, 어느 하나의 마스터가 슬레이브에 접근 중일 때, 다른 하나의 마스터의 대기 시간이 고정되어 있어, 스케줄링이 용이하다.
도 1은 본 발명의 실시 예에 따른 시스템 온 칩을 보여주는 블록도이다.
도 2는 도 1의 세마포어 유닛의 예시적인 구성을 보여주는 블록도이다.
도 3은 세마포어 기능을 구비하는 시스템 온 칩(100)에 포함되는 마스터(110 또는 120)의 동작을 간략히 보여주는 순서도이다.
도 4는 도 2의 아토믹 시퀀서들(141, 142) 중 제 1 아토믹 시퀀서(141)의 동작을 간략히 보여주는 순서도이다.
도 5a 및 도 5b는 본 발명의 세마포어의 할당에 따른 아토믹 시퀀스들을 간략히 보여주는 도면들이다.
도 6은 본 발명의 세마포어 컨트롤러(140)의 동작을 보여주기 위한 블록도이다.
도 7은 본 발명의 아토믹 시퀀서와 인터페이스 사이에서 발생하는 아토믹 시퀀스를 예시적으로 보여주는 순서도이다.
도 8은 본 발명의 세마포어 할당 동작을 간략히 보여주기 위한 도면이다.
도 9는 본 발명의 다른 실시 예에 따른 시스템 온 칩을 보여주는 블록도이다.
도 10은 본 발명의 시스템 온 칩(200)과 전력 관리 IC(300)의 아토믹 시퀀스에 따른 구동 전압의 레벨 상승을 보여주는 타이밍도이다.
도 11은 본 발명의 또 다른 실시 예를 보여주는 시스템 온 칩을 보여주는 블록도이다.
이하에서, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여, 본 발명의 실시 예를 첨부된 도면을 참조하여 설명하기로 한다.
본 발명의 실시 예에 따른 시스템 온 칩은, 복수의 마스터가 하나의 슬레이브를 공유하기 위한 버스 인터페이스로 I2C(Inter-Integrated Circuit)를 포함할 것이다. 하지만, 버스 인터페이스로 I2C 인터페이스뿐 아니라, UART(Universal Asynchronous Receiver Transmitter), SPI(Serial Peripheral Interface), HSIC(High-Speed Inter-Chip) 등과 같은 다양한 칩들간 인터페이스에 대해서도 동일하게 적용될 수 있을 것이다.
도 1은 본 발명의 실시 예에 따른 시스템 온 칩(SoC)을 보여주는 블록도이다. 도 1을 참조하면, 시스템 온 칩(100)은 마스터들(110, 120), 버스 매트릭스(130), 세마포어 유닛(140), 그리고 인터페이스(150)를 포함할 수 있다. 시스템 온 칩(100)의 마스터들(110, 120)은 세마포어 유닛(140)을 경유하여 슬레이브 장치(160)에 접근할 수 있다. 여기서, 슬레이브 장치(160)는 시스템 온 칩(100)의 외부에 연결되는 반도체 장치일 수 있다. 하지만, 슬레이브 장치(160)는 시스템 온 칩(100)의 내부에 형성되는 기능 블록(IP: Intellectual Property)일 수도 있음은 잘 이해될 것이다.
제 1 마스터(110) 및 제 2 마스터(120)는 서로 다른 속성의 운영 체제(OS)에 의해서 구동되는 프로세서일 수 있다. 예를 들면, 제 1 마스터(110)는 실시간 운영 체제(Real time OS)에 의해서 구동되는 프로세서이고, 제 2 마스터(120)는 비실시간 운영 체제(Non real-time OS)에 의해서 구동되는 프로세서일 수 있다. 실시간 운영 체제에 의해서 구동되는 제 1 마스터(110)에 있어서, 슬레이브 장치(160)로의 접근시 대기 시간의 최소화가 요구된다. 더불어, 인터페이스(150)를 공유하는 제 2 마스터(120)가 인터페이스(150)를 점유하는 시간도 고정적인 값으로 제공될 것이 요구된다. 즉, 비실시간 운영 체제에 의해서 구동되는 제 2 마스터(120)가 인터페이스(150)를 점유하는 시간을 예측할 수 있어야 제 1 마스터(110)의 스케줄링이 가능할 것이다. 비실시간 운영 체제에서 동작하는 제 2 마스터(120)는 최장 대기 시간(Worst waiting time)을 보장할 수 없기 때문에 실시간 운영 체제에서 동작하는 제 1 마스터(110)의 스케줄링이 용이하지 못할 수 있다. 따라서, 본 발명에서는 이러한 하나의 인터페이스를 공유하는 마스터들 간에 인터페이스(150)의 공유를 중재하는 하드웨어인 세마포어 유닛(140)이 포함된다.
버스 매트릭스(130)는 시스템 온 칩(100, SoC)의 내부에서 온칩 네트워크를 제공하기 위한 시스템 버스(System Bus)일 수 있다. 버스 매트릭스(130)는 예를 들면, 데이터 버스(Data bus), 어드레스 버스(Address bus) 및 컨트롤 버스(Control bus)를 포함할 것이다. 데이터 버스(Data bus)는 데이터가 이동하는 경로이다. 주로, 워킹 메모리(미도시됨)이나 저장 장치(미도시)로의 메모리 접근 경로를 제공될 것이다. 어드레스 버스(Address bus)는 기능 블록들(IPs) 간의 어드레스 교환 경로를 제공한다. 컨트롤 버스(Control bus)는 기능 블록들(IPs) 간의 제어 신호를 전달하는 경로를 제공한다. 하지만, 버스 매트릭스(130)의 구성은 상술한 설명에만 국한되지 않으며, 효율적인 관리를 위한 다양한 중재 수단들을 더 포함할 수 있다. 제 1 마스터(110) 및 제 2 마스터(120)는 버스 매트릭스(130)를 통해서 슬레이브 장치(160)에 접근할 것이다.
세마포어 유닛(140)은 복수의 버스 마스터들이 단일 내부 버스인 인터페이스(150)를 충돌없이 공유하기 위한 하드웨어로 제공될 수 있다. 예를 들면, 세마포어 유닛(140)은 제 1 마스터(110)가 인터페이스(150)를 점유하고 있는 동안에 제 2 마스터(120)의 인터페이스(150)에 대한 접근은 유보(Postpone)시킬 수 있다. 즉, 제 1 마스터(110)에 의해서 인터페이스(150)로의 레지스터 쓰기나 읽기가 수행되는 크리티컬 섹션(Critical Section) 구간 동안, 세마포어 유닛(140)은 제 2 마스터(120)의 접근 시도를 유보시킬 수 있다. 그리고 제 1 마스터(110)의 크리티컬 섹션이 종료되는 즉시 세마포어 유닛(140)은 제 2 마스터(120)에게 인터페이스(150)의 점유권을 넘겨줄 것이다. 이하에서는, 상술한 크리티컬 섹션을 아토믹 시퀀스(Atomic Sequence)라 칭하기로 한다. 비실시간 운영 체제에서 동작하는 제 2 마스터(120)가 최장 대기 시간(Worst waiting time)을 보장할 수 없기 때문에 실시간 운영 체제에서 동작하는 제 1 마스터(110)의 슬레이브 장치(160)에 대한 실시간 제어가 불가능할 것이다. 세마포어 유닛(140)은 이러한 복수의 마스터들 간의 인터페이스(150)의 점유를 최소 동작 단위로 할당할 수 있다.
인터페이스(150)는 복수의 마스터들(110, 120)에 의해서 적어도 하나의 슬레이브(160)를 공유할 수 있는 버스 인터페이스고 제공된다. 예를 들면, 인터페이스(150)는 시스템 온 칩(100)과 외부의 장치 사이에 인터페이싱을 제공하기 위한 I2C 인터페이스(Inter-Integrated Circuit Interface)로 구현될 수 있다. I2C 인터페이스는 직렬 데이터 라인(SDA) 1개와 직렬 클록 라인(SCL) 1개를 구비하며 양방향 통신이 가능한 버스 인터페이스이다. I2C 인터페이스 프로토콜에서 통신 상대는 버스 마스터가 통신 상대의 고유 어드레스를 지정함으로써 결정된다.
I2C 인터페이스는 풀업 저항(Pull-up Resistor)이 연결된 직렬 데이터 라인(SDA)과 직렬 클록 라인(SCL)의 양방향 오픈 컬렉터 라인을 사용한다. I2C 인터페이스의 프로토콜에서는 7-비트의 주소 공간을 가지며, 이 중에서 일부는 예약되어 있다. 마스터들(110, 120)은 슬레이브 장치(160)에 대한 접근 요청이 발생하면, 세마포어 유닛(140)을 경유하여 I2C 인터페이스의 레지스터를 프로그램할 수 있다. I2C 인터페이스는 프로그램되는 레지스터에 따라 직렬 데이터 라인(SDA) 및 직렬 클록 라인(SCL)을 사용하여 슬레이브 장치(160)를 제어할 것이다.
하지만, 인터페이스(150)의 프로토콜은 I2C 인터페이스뿐 아니라 UART(Universal Asynchronous Receiver Transmitter), SPI(Serial Peripheral Interface), HSIC(High-Speed Inter-Chip) 등과 같이 다양한 것들로 대체될 수 있음은 잘 이해될 것이다. 인터페이스(150)에서는 버스 마스터가 지정하는 임의의 장치와 데이터 송수신이 가능하다. 또, 인터페이스(150) 프로토콜에서는 버스 경합을 회피하는 메커니즘이 정의되어 있으므로, 임의로 지정된 장치가 마스터로 동작할 수 있다. 따라서, 인터페이스(150)를 사용하는 시스템에서는 멀티 마스터에 의해서 적어도 하나의 슬레이브 장치(160)가 공유될 수 있다.
슬레이브 장치(160)는 서로 다른 속성의 운영 체제에 의해서 구동되는 복수의 마스터들(110, 120)에 의해서 공유될 수 있다. 즉, 슬레이브 장치(160)는 시스템 온 칩(100)의 외부에 연결되는 별도의 반도체 칩으로 제공될 수 있다. 슬레이브 장치(160)는 시스템 온 칩(100)의 내부에 형성된 인터페이스(150)를 통해서 시스템 온 칩(100)과 통신을 수행할 수 있다. 하지만, 슬레이브 장치(160)는 인터페이스(150)에 연결되는 시스템 온 칩(100) 내부의 기능 블록(IP)일 수도 있음은 잘 이해될 것이다.
이상에서 설명된 시스템 온 칩(100)에 의하면, 복수의 마스터들에 의해서 어느 하나의 슬레이브를 공유하기 위해, 세마포어 동작을 수행하는 세마포어 유닛(140)을 포함할 수 있다. 세마포어 유닛(140)은 인터페이스(150)의 세마포어를 복수의 마스터들 중 어느 하나에 크리티컬 섹션 단위로 할당한다. 여기서, 크리티컬 섹션은 본 발명의 아토믹 시퀀스(Atomic Sequence)에 대응하며, 일련의 레지스터 접근 동작의 단위에 해당한다. 이러한 세마포어 유닛(140)의 개입에 의해서 어느 하나의 마스터가 인터페이스(150)를 점유하는 시간을 제한 및 고정하고, 고정된 점유 시간이 경과하면 인터페이스(150)의 점유는 해제된다. 따라서, 어느 하나의 마스터에 의한 인터페이스(150)의 점유 시간이 예측 가능함에 따라 슬레이브 장치(160)에 대한 실시간 제어가 필요한 마스터에 스케줄링의 용이성을 제공할 수 있다.
도 2는 도 1의 세마포어 유닛(140)의 예시적인 구성을 보여주는 블록도이다. 도 2를 참조하면, 세마포어 유닛(140)은 마스터들의 수에 대응하는 아토믹 시퀀서들(141, 142) 및 세마포어 컨트롤러(143)를 포함할 수 있다.
제 1 아토믹 시퀀서(141)는 제 1 마스터(110)의 인터페이스(150)에 대한 접근 요청을 관리한다. 즉, 제 1 아토믹 시퀀서(141)는 제 1 마스터(110)로부터 발생하는 인터페이스(150)에 대한 접근 요청을 검출한다. 그리고 제 1 마스터(110)가 인터페이스(150)에 접근을 요청하는 경우, 제 1 아토믹 시퀀서(141)는 세마포어를 획득하기 위해 인터페이스(150)에 최초 트랜잭션(1'st Transaction)을 전송할 것이다. 만일 제 1 아토믹 시퀀서(141)에 세마포어(Semaphore)가 할당된 경우, 제 1 아토믹 시퀀서(141)는 인터페이스(150)에 대한 접근의 최소 동작 단위인 아토믹 시퀀스(Atomic sequence)를 수행할 것이다. 제 1 아토믹 시퀀서(141)는 인터페이스(150)에 대한 아토믹 시퀀스가 종료되면, 세마포어 컨트롤러(143)를 설정하여 획득된 세마포어를 해제(Release)시킬 것이다.
제 2 아토믹 시퀀서(142)는 제 2 마스터(120)의 인터페이스(150)에 대한 접근 요청을 전담하여 관리한다. 제 2 아토믹 시퀀서(142)는 제 2 마스터(120)로부터 발생하는 인터페이스(150)에 대한 접근 요청이 존재하면, 세마포어(Semaphore)를 획득하기 위해 인터페이스(150)에 최초 트랜잭션(1'st Transaction)을 전송할 것이다. 최초 트랜잭션(1'st Transaction)은 인터페이스(150)에 의해서 수용되거나 거부될 수도 있다. 최초 트랜잭션(1'st Transaction)에 의해 제 2 아토믹 시퀀서(142)에 세마포어가 할당되면, 제 2 아토믹 시퀀서(142)는 아토믹 시퀀스(Atomic sequence)를 수행할 것이다. 제 2 아토믹 시퀀서(142)는 인터페이스(150)에 대한 하나의 아토믹 시퀀스가 완료되면, 획득된 세마포어를 해제(Release)시킬 것이다. 제 1 내지 제 2 아토믹 시퀀서(141, 142)는 세마포어 컨트롤러(143)에 의해서 제공되는 세마포어 기능에 따라 아토믹 시퀀스(Atomic sequence) 단위로 인터페이스(150)를 공유할 수 있다.
세마포어 컨트롤러(143)는 제 1 아토믹 시퀀서(141)와 제 2 아토믹 시퀀서(142)로부터 발생하는 최초 트랜잭션(1'st Transaction)을 검출하여 세마포어를 할당한다. 세마포어 컨트롤러(143)는 제 1 아토믹 시퀀서(141)와 제 2 아토믹 시퀀서(142) 어디에도 세마포어가 할당되지 않은 상태에서는 최초 트랜잭션(1'st Transaction)을 먼저 전송하는 아토믹 시퀀서에 세마포어를 할당할 수 있다. 그리고 세마포어 컨트롤러(143)는 세마포어가 할당된 상태에서는 아토믹 시퀀스가 종료될 때까지는 세마포어 할당 상태를 유지한다. 예를 들면, 제 1 아토믹 시퀀서(141)에 의해서 세마포어가 점유된 상태에서는 제 2 아토믹 시퀀서(142)로부터 트랜잭션이 전달되더라도 세마포어 컨트롤러(143)는 세마포어의 할당 상태를 변경하지 않는다. 세마포어의 할당 상태의 변경은 제 1 아토믹 시퀀서(141)에서 수행되는 아토믹 시퀀스가 종료되는 순간에 발생하게 될 것이다.
세마포어 컨트롤러(143)는 세마포어 할당을 위해 세마포어 비트(144)를 운영할 수 있다. 즉, 제 1 아토믹 시퀀서(141)에 대한 세마포어 할당 상태를 나타내는 세마포어 비트(SB1)와 제 2 아토믹 시퀀서(142)에 대한 세마포어 할당 상태를 나타내는 세마포어 비트(SB2)를 각각 설정할 수 있다. 예를 들면, 제 1 아토믹 시퀀서(141)와 제 2 아토믹 시퀀서(142) 모두의 세마포어가 해제(Release)된 상태라면 세마포어 비트(144)는 논리 '00'으로 셋팅될 수 있다. 그리고 제 1 아토믹 시퀀서(141)에 세마포어가 할당되는 경우라면 세마포어 비트는 논리 '10'으로, 제 2 아토믹 시퀀서(142)에 세마포어가 할당되는 경우라면 세마포어 비트(144)는 논리 '01'로 셋팅될 수 있을 것이다. 세마포어 비트(144)의 설정은 세마포어 컨트롤러(143)에 의해서 제 1 및 제 2 아토믹 시퀀서(141, 142) 각각에서 발행되는 트랜잭션의 검출을 통해서도 수행될 수 있다. 그리고 세마포어의 해제(Release)는 제 1 및 제 2 아토믹 시퀀서(141, 142)에 의해서 독립적으로 수행될 수 있을 것이다.
여기서, 세마포어 비트(144)를 2-비트로 관리하는 것으로 설명되었으나, 본 발명은 여기에 국한되지 않는다. 예를 들면, 세마포어 비트(144)는 1-비트로 관리될 수 있다. 세마포어 비트(144)의 값이 논리 '1'인 경우에 제 1 아토믹 시퀀서(141)가 세마포어를 할당받고, 논리 '0'인 경우에는 제 2 아토믹 시퀀서(142)가 세마포어를 점유하는 것으로 설정될 수도 있을 것이다. 세마포어 비트(144)는 복수의 아토믹 시퀀서들의 세마포어 할당을 위해서 다양한 비트 수로 또는 논리 상태들로 구현될 수 있음은 잘 이해될 것이다.
도 3은 세마포어 기능을 구비하는 시스템 온 칩(100)에 포함되는 마스터(110 또는 120)의 동작을 간략히 보여주는 순서도이다. 도 3을 참조하면, 마스터들(110, 120)은 인터페이스(150)에 접근하기 위한 접근 요청이 발생하면, 대응하는 아토믹 시퀀서에 해당 접근 요청을 전달할 것이다. 여기서, 설명의 편의를 위해서 제 1 마스터(110)의 동작이 예시적으로 설명될 것이다. 하지만, 제 2 마스터(120)도 순서도를 통해서 설명하는 방식과 동일하게 동작할 것이다.
S110 단계에서, 제 1 마스터(110)는 슬레이브 장치(160)를 접근하기 위하여 인터페이스(150)에 대한 접근 요청을 시도할 것이다. 제 1 마스터(110)는 이를 위해 버스 매트릭스(130)를 경유하여 세마포어 유닛(140)에 구비되는 제 1 아토믹 시퀀서(141)에 해당 동작을 위한 접근 요청을 전달할 것이다. 제 1 마스터(110)에 의해서 생성된 접근 요청은 제 1 아토믹 시퀀서(141)에 구비되는 레지스터에 프로그램될 것이다.
S120 단계에서, 제 1 마스터(110)는 제 1 아토믹 시퀀서(141)로부터 인터페이스(150)로의 접근 요청에 대한 완료 여부, 즉 인터럽트(Interrupt)를 검출한다. 제 1 아토믹 시퀀서(141)는 인터페이스(150)에 대한 세마포어를 획득하고, 제 1 마스터(110)로부터의 접근 요청을 수행하기 위한 복수의 트랜잭션들을 포함하는 아토믹 시퀀스를 실행할 것이다. 아토믹 시퀀스가 완료되면, 제 1 아토믹 시퀀서(141)는 세마포어를 해제(Release)할 것이다. 더불어, 아토믹 시퀀스가 완료되면, 제 1 아토믹 시퀀서(141)는 제 1 마스터(110)로 인터럽트(Interrupt)를 전송할 것이다. 제 1 마스터(110)는 이때 전송된 인터럽트(Interrupt)를 모니터링하고 검출한다.
S130 단계에서, 제 1 마스터(110)는 세마포어 유닛(140)으로부터의 인터럽트의 수신 여부에 따라 동작 분기를 실시한다. 인터럽트(Interrupt)가 수신되지 않는 경우, 제 1 아토믹 시퀀서(141)로부터의 인터럽트 수신을 검출하기 위하여 절차는 S120 단계로 복귀한다. 반면, 제 1 마스터(110)에 의해서 제 1 아토믹 시퀀서(141)로부터의 인터럽트가 수신되는 경우, 절차는 S140 단계로 이동할 것이다.
S140 단계에서, 제 1 마스터(110)는 인터페이스(150)에 대한 추가적인 접근 요청이 존재하는지 검출할 것이다. 만일, 추가적인 접근 요청이 존재하는 경우, 절차는 접근 요청을 발행하기 위한 S110 단계로 이동할 것이다. 하지만, 인터페이스(150)에 대한 추가적인 접근 요청이 존재하지 않는 경우, 인터페이스(150)에 대한 제반 접근 절차는 종료될 것이다.
이상에서는 마스터들(110, 120)의 인터페이스(150)에 대한 접근 요청을 세마포어 유닛(140)에 전송하는 절차들이 간략히 설명되었다. 마스터들(110, 120)은 구체적으로 세마포어에 대한 고려없이 세마포어 유닛(140)에 인터페이스(150)에 대한 접근 요청을 전달하기만 하면 된다. 이러한 마스터들(110, 120)의 접근 요청은 세마포어 유닛(140)에 저장되고, 세마포어 유닛(140)에 의해서 세마포어가 할당된다. 따라서, 인터페이스(150)를 공유하는 마스터들(110, 120)의 소프트웨어 레벨에서 세마포어의 설정을 고려할 필요는 없다.
도 4는 도 2의 아토믹 시퀀서들(141, 142) 중 제 1 아토믹 시퀀서(141)의 동작을 간략히 보여주는 순서도이다. 도 4를 참조하면, 제 1 아토믹 시퀀서(141)는 제 1 마스터(110)로부터의 접근 요청에 따라 인터페이스(150)에 대한 세마포어를 획득하고, 아토믹 시퀀스(Atomic Sequence)를 수행한다. 설명의 편의를 위해서 세마포어의 획득 및 아토믹 시퀀스를 수행하는 제 1 아토믹 시퀀서(141)의 동작이 설명될 것이다. 하지만, 동일한 방식으로 제 2 아토믹 시퀀서(142)도 제 2 마스터(120)로부터의 접근 요청에 따라 인터페이스(150)에 대한 세마포어를 획득하고, 아토믹 시퀀스를 수행할 것이다.
S210 단계에서, 제 1 아토믹 시퀀서(141)는 제 1 마스터(110)에 의해서 발생한 인터페이스(150)로의 접근 요청을 위해 최초 트랜잭션(1'st Transaction)을 발행한다. 제 1 아토믹 시퀀서(141)에 의해서 전달되는 최초 트랜잭션(1'st Transaction)에 응답하여 세마포어 컨트롤러(143)는 제 1 아토믹 시퀀서(141)에 세마포어를 할당할지 판단할 것이다. 만일, 세마포어가 제 1 아토믹 시퀀서(141)와 제 2 아토믹 시퀀서(142) 어디에도 할당되지 않은 상태라면, 세마포어 컨트롤러(143)는 최초 트랜잭션(1'st Transaction)을 먼저 발행한 제 1 아토믹 시퀀서(141)에 세마포어를 할당할 것이다. 반면, 세마포어 컨트롤러(143)는 이미 제 2 아토믹 시퀀서(142)가 세마포어를 이미 점유한 상태인 경우, 제 1 아토믹 시퀀서(141)에 대한 세마포어 할당을 유보할 것이다.
S220 단계에서, 제 1 아토믹 시퀀서(141)는 최초 트랜잭션(1'st Transaction)의 전달에 따라 세마포어 컨트롤러(143)의 세마포어 할당 상태를 검출할 것이다. 만일, 제 1 아토믹 시퀀서(141)가 세마포어를 획득한 경우, 절차는 S230으로 이동한다. 반면, 제 1 아토믹 시퀀서(141)가 세마포어를 획득하지 못한 경우, 절차는 최초 트랜잭션(1'st Transaction)을 인터페이스(150)에 재전송하기 위한 S210 단계로 복귀한다.
S230 단계에서, 제 1 아토믹 시퀀서(141)는 인터페이스(150)의 제어 레지스터(Control Register)를 프로그램하기 위한 아토믹 시퀀스를 수행한다. 제 1 아토믹 시퀀서(141)는 최초 트랜잭션(1'st Transaction) 이후에 수행될 적어도 하나의 트랜잭션을 인터페이스(150)에 전달할 것이다. 그리고 제 1 아토믹 시퀀서(141)는 아토믹 시퀀스에 대응하는 복수의 레지스터 프로그램 동작이나 레지스터 읽기 동작들을 수행할 것이다.
S240 단계에서, 제 1 아토믹 시퀀서(141)는 인터페이스(150)에 대한 접근의 최소 단위인 아토믹 시퀀스가 종료되면, 세마포어 컨트롤러(143)에 설정된 세마포어 비트(144, 도 2 참조)를 해제(Release)한다. 즉, 제 1 아토믹 시퀀서(141)는 현재의 인터페이스(150)에 대한 세마포어 점유 상태를 해제시킨다. 세마포어 상태를 해제하면, 제 1 아토믹 시퀀서(141)에 의한 아토믹 시퀀스는 종료된다.
이상에서는 제 1 아토믹 시퀀서(141)에 의한 인터페이스(150)의 세마포어 획득과 아토믹 시퀀스의 수행 절차가 간략히 설명되었다. 이러한 방식으로 제 2 아토믹 시퀀서(142)도 제 2 마스터(120)의 요청시 인터페이스(150)에 대한 세마포어를 획득하기 위한 시도와 아토믹 시퀀스를 수행할 것이다.
도 5a 및 도 5b는 본 발명의 세마포어의 할당에 따른 아토믹 시퀀스들을 간략히 보여주는 도면들이다. 도 5a는 두 개의 마스터들이 각각 서로 다른 2개의 인터페이스를 통해서 슬레이브 장치에 접근하는 경우를 보여준다. 도 5b는 본 발명의 세마포어 유닛(140)에 의한 하나의 인터페이스를 공유하는 구조에서, 슬레이브 장치로의 접근 동작을 보여준다.
도 5a를 참조하면, 마스터들이 각각의 인터페이스를 구비하는 경우의 슬레이브 장치로의 접근 동작이 도시되어 있다. 즉, 제 1 마스터(110)와 슬레이브(Slave) 사이에 인터페이싱을 제공하는 제 1 인터페이스(미도시)가 구비될 것이다. 그리고 제 2 마스터(120)와 슬레이브(Slave) 사이에 인터페이싱을 제공하는 제 2 인터페이스(미도시)가 별도로 구비될 것이다. 이 경우, 제 1 마스터(110)와 제 2 마스터(120)의 인터페이스를 점유하기 위한 경합은 존재하지 않게 된다. 따라서, 각각의 마스터들은 독립적으로 인터페이스를 사용하여 슬레이브 장치(160)를 제어하게 될 것이다. 그러나, 이 경우 마스터들의 수만큼의 독립적으로 동작하는 인터페이스들이 구비되어야 한다.
도 5b를 참조하면, 마스터들(110, 120)은 슬레이브 장치(160)를 제어하기 위한 단일 인터페이스(150)에 연결된다. 즉, 제 1 마스터(110)와 제 2 마스터(120)는 슬레이브 장치(160)를 제어하기 위한 하나의 인터페이스(150)에 연결된다. 이 경우, 각각의 마스터들에 의한 인터페이스(150)를 점유하기 위한 경쟁이 발생한다. 본 발명의 세마포어 유닛(140)에 의해서 이러한 경쟁은 하드웨어 방식으로 중재되고, 인터페이스(150)는 아토믹 시퀀스 단위로 어느 하나의 마스터와 슬레이브 장치(160) 사이에서 트랜잭션이 발생할 것이다. 즉, 제 1 마스터(110)는 제 1 아토믹 시퀀서(141)에 의해서 수행되는 아토믹 시퀀스들(AS_11, AS_12, AS_13, AS_14)을 통해서 인터페이스(150)에 접근할 것이다. 그리고 제 2 마스터(120)는 제 2 아토믹 시퀀서(142)에 의해서 수행되는 아토믹 시퀀스들(AS_21, AS_22, AS_23, AS_24)을 통해서 인터페이스(150)에 접근할 것이다. 각각의 아토믹 시퀀서들(141, 142)과 세마포어 컨트롤러(143)에 의해서 수행되는 세마포어 조정을 통해서 인터페이스(150)는 대기 시간의 소모없이 복수의 마스터들에 의해서 공유될 수 있다.
여기서, 제 2 아토믹 시퀀서(142)에 의해서 수행되는 아토믹 시퀀스(AS_21)를 구성하는 복수의 트랜잭션들(1'st Transaction, 2'nd Transaction,…, Last Transaction)이 간략히 도시되어 있다. 아토믹 시퀀스(AS_21)를 구성하는 복수의 트랜잭션들 중에서 최초 트랜잭션(1'st Transaction)은 세마포어를 획득하기 위해서 인터페이스(150)에 반복적으로 전송될 것이다. 만일, 세마포어가 획득되면, 최초 트랜잭션에 후속하는 트랜잭션들이 인터페이스(150)에 전달된다. 이 구간 동안에 세마포어의 해제나 변경은 차단될 것이다.
도 6은 본 발명의 세마포어 컨트롤러(140)의 동작을 보여주기 위한 블록도이다. 도 6을 참조하면, 세마포어 컨트롤러(140)는 아토믹 시퀀서(141)에서 발생하는 인터페이스(150)로의 트랜잭션을 모니터링하여 세마포어 비트(144)를 설정할 수 있다.
제 1 마스터(110)로부터 인터페이스(150)로의 접근 요청이 발생하면, 제 1 아토믹 시퀀서(141)는 제 1 마스터(110)로부터의 접근 요청에 대응하는 동작 코드(Operation Code)를 생성할 것이다. 제 1 마스터(110)로부터의 접근 요청을 수행하기 위한 복수의 동작 코드를 인터페이스(150)의 제어 레지스터(155)에 쓰기 위해서는 복수의 트랜잭션들의 교환이 요구된다. 따라서, 이러한 복수의 트랜잭션들을 위한 복수의 동작 코드를 순서대로 나열한 것이 하나의 아토믹 시퀀스에 해당한다. 따라서, 하나의 아토믹 시퀀스를 수행하기 위해서 제 1 아토믹 시퀀서(141)는 세마포어를 획득하고, 세마포어를 획득한 이후에 제 1 마스터(110)로부터의 접근 요청에 대응하는 아토믹 시퀀스(AS)를 수행할 것이다. 따라서, 세마포어를 획득할 때까지 제 1 아토믹 시퀀서(141)는 하나의 아토믹 시퀀스의 최초 트랜잭션(1'st Transaction)을 인터페이스(150)에 반복적으로 전달할 것이다.
세마포어 컨트롤러(143)는 제 1 아토믹 시퀀서(141)와 제 2 아토믹 시퀀서(142)에서 발행되는 트랜잭션을 모니터링한다. 세마포어 컨트롤러(143)는 세마포어가 할당되지 않은 상태에서는 최초 트랜잭션(1'st Transaction)을 먼저 인터페이스(150)로 전송하는 아토믹 시퀀서에 세마포어를 할당할 수 있을 것이다. 즉, 제 1 아토믹 시퀀서(141)와 제 2 아토믹 시퀀서(142) 각각에 의한 아토믹 시퀀스가 종료되고 세마포어가 해제된 상태라면, 먼저 최초 트랜잭션을 전송하는 아토믹 시퀀서가 세마포어를 획득하게 될 것이다.
제 1 아토믹 시퀀서(141)와 제 2 아토믹 시퀀서(142)에 의해서 세마포어가 해제된 상태라면 세마포어 비트(144)는, 예를 들면, 논리 '00'으로 설정될 것이다. 여기서, 세마포어 비트(144)의 MSB는 제 1 아토믹 시퀀서(141)의 세마포어 상태를, 세마포어 비트(144)의 LSB는 제 2 아토믹 시퀀서(142)의 세마포어 상태를 나타내는 것으로 가정하기로 한다. 이러한 상태에서 제 2 아토믹 시퀀서(142)에서 최초 트랜잭션(1'st Transaction)이 먼저 전달된다면, 세마포어 컨트롤러(143)는 세마포어 비트(144)를 논리 '01'로 셋팅할 것이다. 더불어, 제 2 아토믹 시퀀서(142)에 의한 아토믹 시퀀스가 종료되기 전에는 세마포어 컨트롤러(143)는 세마포어 비트(144)를 '01'로 유지할 것이다. 제 1 아토믹 시퀀서(141)로부터 트랜잭션이 발생되더라도, 제 2 아토믹 시퀀서(142)에 의해서 세마포어 비트(144)의 해제(Release)가 요청되지 않은 상태에서는 세마포어 비트(144)는 '01'로 고정된다. 그리고 제 2 아토믹 시퀀서(142)가 세마포어를 해제(Release)하는 경우, 세마포어 컨트롤러(143)는 세마포어 비트(144)를 '00'으로 셋팅하고, 이후에 제 1 아토믹 시퀀서(141)에 세마포어를 할당할 수 있다. 즉, 세마포어의 해제가 발생한 후에 세마포어 컨트롤러(143)는 세마포어 비트(144)를 논리 '10'으로 셋팅할 것이다.
제 1 아토믹 시퀀서(141)는 세마포어의 획득이 완료된 후에, 인터페이스(150)에 구비된 제어 레지스터(155)에 아토믹 시퀀스에 대응하는 복수의 동작 코드를 프로그램할 것이다. 그러면, 인터페이스(150)는 프로그램된 코드에 따라서 슬레이브 장치(160)에 대한 데이터 전송이나 제어 동작을 수행할 수 있다.
여기서, 세마포어 비트의 해제는 제 1 아토믹 시퀀서(141) 또는 제 2 아토믹 시퀀스(142)가 인터페이스(150)의 레지스터들 중에서 특정 어드레스에 대응하는 레지스터를 읽는 경우에 수행될 수 있다. 특정 어드레스의 레지스터들은 인터페이스(150)의 프로토콜에서 정의되지 않은 예비된(Reserved) 제어 레지스터들일 수 있다.
도 7은 본 발명의 아토믹 시퀀서와 인터페이스 사이에서 발생하는 아토믹 시퀀스를 예시적으로 보여주는 순서도이다. 도 7을 참조하면, 아토믹 시퀀서는 마스터에서 요청된 하나의 동작 요청을 슬레이브 장치에 전송하기 위하여, 인터페이스(150)와 복수의 트랜잭션을 교환하게 될 것이다. 이러한 하나의 동작 요청에 대응하는 아토믹 시퀀스가 수행되는 동안에는 인터페이스(150)에 대한 세마포어는 다른 마스터들에게 넘어가서는 안되며 보호되어야 한다. 이하에서는 아토믹 시퀀스의 예를 설명하기 위하여 도 4의 S230 단계를 세부적으로 설명하게 될 것이다.
S231 단계에서, 제 1 아토믹 시퀀서(141)는 인터페이스(150)의 제어 레지스터(Control Register 또는 Set Function Register)를 설정한다. 제 1 아토믹 시퀀서(141)에 의해서 인터페이스(150)의 제어 레지스터의 수, 순서, 그리고 레지스터에 저장되는 필드값들을 프로그램할 것이다. S231 단계에서 수행되는 제어 레지스터(155)를 설정하기 위한 트랜잭션들 중에서 최초에 인터페이스(150)에 전달되는 트랜잭션에 의해서 세마포어가 획득되거나 거부될 수 있다.
S233 단계에서, 제 1 아토믹 시퀀서(141)는 인터페이스(150)의 송신 FIFO(First-In-First-Out) 버퍼에 송신 데이터를 기입하거나, 수신 FIFO 버퍼에 저장된 데이터를 독출할 수 있다. 제 1 아토믹 시퀀서(141)는 S233 단계에서 전송 또는 수신되는 데이터의 수를 프로그램할 수도 있을 것이다.
S235 단계에서, 하나의 아토믹 시퀀스에 대응하는 데이터 쓰기 또는 데이터 수신 동작이 완료되었는지 제 1 아토믹 시퀀서(141)가 판단할 것이다. 만일, 하나의 아토믹 시퀀스에 대응하는 인터페이스(150)와 데이터 송수신이 완료된 것으로 판단되면, 하나의 아토믹 시퀀스는 종료된다. 반면, 추가적으로 인터페이스(150)로의 데이터의 송신 또는 수신이 필요한 경우, 절차는 S233 단계로 복귀할 것이다.
이상에서 설명된 아토믹 시퀀스에 따르면, 아토믹 시퀀서(141)는 데이터를 전송하기 위한 동작 코드, 데이터 전송 완료 동작 코드, 그리고 제어 레지스터 설정 동작 코드들을 사용할 수 있다.
도 8은 본 발명의 세마포어 할당 동작을 간략히 보여주기 위한 도면이다. 도 8을 참조하면, 제 1 마스터(110), 제 1 아토믹 시퀀서(141), 세마포어 컨트롤러(143), 인터페이스(150, I/F), 그리고 슬레이브 장치(160) 간의 상호 동작이 순차적으로 도시되어 있다.
제 1 마스터(110)에 의해서 슬레이브 장치(160)에 대한 접근 요청을 이슈하는 것으로 본 발명의 세마포어 할당 및 아토믹 시퀀스가 시작된다. 제 1 마스터(110)는 슬레이브 장치(160)에 대해서 특정 동작을 지시하기 위하여 제 1 아토믹 시퀀스(AS1)에 해당 접근 요청을 전달한다. 이때, 버스 매트릭스(130)를 경유하여 제 1 아토믹 시퀀서(141, AS1)에 구비된 레지스터들이 셋팅될 것이다. 제 1 아토믹 시퀀서(141)의 제어 레지스터에 대한 프로그램이 완료되면, 제 1 마스터(110)는 해당 동작의 시작(Start)을 명령할 것이다. 이러한 절차를 통해서 제 1 마스터(110)의 접근 요청(Access Request)이 완료된다.
아토믹 시퀀서(141)는 세마포어 컨트롤러(143)를 경유하여 인터페이스(150)에 최초 트랜잭션(1'st Transaction)을 전송한다. 세마포어 컨트롤러(143)는 인터페이스(150)로부터 최초 트랜잭션(1'st Transaction)에 대한 인터페이스(150)의 반응을 수신한다. 만일, 최초 트랜잭션(1'st Transaction)에 대해서 인터페이스(150)가 수용하는 경우, 인터페이스(150)가 현재 개방 상태로 존재했음을 의미한다. 따라서, 인터페이스(150)가 제 1 아토믹 시퀀서(141)에 버스 권한을 인가했음을 의미한다.
세마포어 컨트롤러(143)는 제 1 아토믹 시퀀서(141)에 의한 최초 트랜잭션(1'st Transaction)에 대한 인터페이스(150)의 반응에 따라 세마포어 할당 상태를 설정한다. 즉, 세마포어 컨트롤러(143)는 세마포어 비트(SB)를 '10'으로 설정할 수 있다. 그리고 이러한 세마포어 비트(SB)의 값은 제 1 아토믹 시퀀서(141)에 전달된다.
제 1 아토믹 시퀀서(141)는 세마포어 컨트롤러(143)에 설정된 세마포어 비트(SB)의 값에 따라 최초 트랜잭션(1'st Transaction)에 후속하는 트랜잭션을 인터페이스(150)에 전달할지 결정한다. 만일, 세마포어 컨트롤러(143)에 설정된 세마포어 비트(SB)가 제 1 아토믹 시퀀서(141)가 세마포어를 획득하지 못한 것으로 판단되면(SB = 01), 제 1 아토믹 시퀀서(141)는 후속하는 트랜잭션의 전송을 유보한다. 그리고 제 1 아토믹 시퀀서(141)는 최초 트랜잭션(1'st Transaction)을 지속적으로 인터페이스(150)로 전송하여 세마포어의 획득을 시도할 것이다.
반면, 세마포어 컨트롤러(143)에 설정된 세마포어 비트(SB)가 제 1 아토믹 시퀀서(141)에게 할당된 것으로 판단되면(SB = 10), 제 1 아토믹 시퀀서(141)는 후속하는 트랜잭션을 인터페이스(150)로 전달할 것이다. 즉, 최초 트랜잭션(1'st Transaction)에 후속하는 복수의 트랜잭션들을 인터페이스(150)로 전달할 것이다. 아토믹 시퀀스의 마지막 트랜잭션이 인터페이스(150)에 전송되면, 인터페이스(150)는 해당 접근 요청에 대응하는 동작을 슬레이브 장치(160)에 지시한다. 예를 들면, 접근 요청에 대응하는 동작 명령(Command)을 슬레이브 장치(160)에 전송할 것이다.
제 1 아토믹 시퀀서(141)는 아토믹 시퀀스의 마지막 트랜잭션(또는 시작 코드)을 I2C 인터페이스에 전달한 직후, 세마포어 컨트롤러(143)의 세마포어 비트(SB)를 해제한다. 즉, 세마포어 비트(SB)의 논리값을 '01' 상태에서 '00' 상태로 변경할 것이다. 동시에, 제 1 아토믹 시퀀서(141)는 제 1 마스터(110)에 접근 요청에 대한 아토믹 시퀀스를 완료했음을 알리는 인터럽트(Interrupt)를 전송할 것이다.
제 1 아토믹 시퀀서(141)에 의한 세마포어 비트(SB)의 해제 요청에 따라 세마포어 컨트롤러(143)는 세마포어 비트(SB)를 논리 '00'으로 설정할 것이다.
이상에서는 하나의 아토믹 시퀀서(AS1)가 생성하는 아토믹 시퀀스를 수행하기 위한 세마포어 컨트롤러(143)와 인터페이스(150), 그리고 슬레이브 장치(160)의 동작들을 간략히 설명하였다. 그러나 이러한 아토믹 시퀀스를 수행하기 위한 최초 트랜잭션(1'st Transaction)의 생성은 복수의 아토믹 시퀀서들 각각에 의해서 발생한다. 따라서, 복수의 아토믹 시퀀서들 중 어느 하나에 대한 세마포어 할당이 이루어지고, 세마포어를 할당받은 아토믹 시퀀서에 의한 아토믹 시퀀스가 수행될 것이다. 이 경우, 인터페이스(150)가 경합 상태라면, 어느 하나의 아토믹 시퀀스가 종료되는 즉시 다른 아토믹 시퀀스로 세마포어가 넘어가게 된다. 따라서, 아토믹 시퀀스 단위로 대기 시간을 예측할 수 있다. 따라서, 실시간으로 슬레이브 장치를 제어할 필요가 있는 마스터의 경우, 아토믹 시퀀스의 길이를 고려하여 스케줄링될 수 있을 것이다.
도 9는 본 발명의 다른 실시 예에 따른 시스템 온 칩을 보여주는 블록도이다. 도 9를 참조하면, 본 발명의 시스템 온 칩(200)은 응용 프로세서(210)와 통신 프로세서(220)를 포함한다. 그리고 시스템 온 칩(200)은 인터페이스(250)를 통해서 전력 관리 IC(300)를 제어할 수 있다. 시스템 온 칩(200)은 버스 매트릭스(230), 세마포어 유닛(240), 그리고 인터페이스(250)를 포함할 수 있다.
응용 프로세서(210)는 시스템 온 칩(200)에서 구동되는 다양한 프로그램을 구동하는 프로세서이다. 응용 프로세서(210)는 예를 들면 시스템 온 칩(200)을 장착한 모바일 장치에서 수행될 소프트웨어(응용 프로그램, 운영 체제, 장치 드라이버들)를 실행한다. 응용 프로세서(210)는 동종 멀티-코어 프로세서(Homogeneous Multi-Core Processor) 또는 이종 멀티-코어 프로세서(Heterogeneous Multi-Core Processor)로 제공될 수도 있다. 멀티-코어 프로세서는 적어도 2개의 독립적으로 구동 가능한 프로세서들(이하, 코어)을 갖는 컴퓨팅 컴포넌트(Computing Component)이다. 더불어, 응용 프로세서(210)는 카메라나 디스플레이와 같이 멀티미디어 장치를 제어하기 위한 멀티 미디어 프로세서일 수도 있을 것이다.
통신 프로세서(220)는 응용 프로세서(210)와는 서로 다른 속성의 운영 체제(OS)에 의해서 구동되는 프로세서이다. 시스템 온 칩(200) 상에 구현된 통신 프로세서(220)는 음성 통신이나 데이터 통신을 위해 기지국 또는 다른 통신 장치들과 무선 통신을 수행하기 위한 프로세서일 수 있다. 통신 프로세서(220)는 응용 프로세서(210)와는 다른 실시간 운영 체제(Read-time OS)에 의해서 구동될 것이다. 즉, 무선 통신 채널을 통해서 호출이 발생하면 신속하게 사용자에게 통신 서비스를 제공하기 위해서 통신 프로세서(220)는 다양한 구성을 실시간으로 제어할 수 있어야 한다. 그리고, 통신 프로세서(220)의 스케줄링을 위해서는 응용 프로세서(210)와 공유되는 슬레이브 장치들에 대해서 최소한의 대기 시간을 보장해 주어야 한다. 더불어, 대기 시간의 길이가 고정(Fix)되어 있어야 할 것이다.
버스 매트릭스(230)는 시스템 온 칩(SoC)의 내부에서 온칩 네트워크를 제공하기 위한 시스템 버스(System Bus)일 수 있다. 버스 매트릭스(230)는 예를 들면, 데이터 버스(Data bus), 어드레스 버스(Address bus) 및 컨트롤 버스(Control bus)를 포함할 것이다. 데이터 버스(Data bus)는 데이터가 이동하는 경로이다. 주로, 워킹 메모리(미도시됨)이나 저장 장치(미도시)로의 메모리 접근 경로를 제공될 것이다. 어드레스 버스(Address bus)는 기능 블록들(IPs) 간의 어드레스 교환 경로를 제공한다. 컨트롤 버스(Control bus)는 기능 블록들(IPs) 간의 제어 신호를 전달하는 경로를 제공한다.
세마포어 유닛(240)은 복수의 마스터가 단일 내부 버스인 인터페이스(250)를 충돌없이 공유하기 위한 하드웨어로 구성될 수 있다. 예를 들면, 세마포어 유닛(240)은 응용 프로세서(210)가 인터페이스(250)를 점유하고 있는 동안에 통신 프로세서(220)의 인터페이스(250)에 대한 접근은 유보시킬 수 있다. 즉, 응용 프로세서(210)에 의해서 인터페이스(250)로의 레지스터 쓰기나 읽기가 수행되는 아토믹 시퀀스 구간 동안, 세마포어 유닛(240)은 통신 프로세서(220)의 접근을 차단시킬 수 있다. 그리고 응용 프로세서(210)의 아토믹 시퀀스가 종료되는 즉시 세마포어 유닛(240)은 통신 프로세서(220)에게 인터페이스(250)의 점유권을 넘겨줄 것이다. 세마포어 유닛(240)은 인터페이스(250)에 대한 점유권을 아토믹 시퀀스 단위로 할당할 수 있다.
이러한 동작을 위해서 세마포어 유닛(240)은 제 1 아토믹 시퀀서(241), 제 2 아토믹 시퀀서(242), 그리고 세마포어 컨트롤러(243)를 포함할 것이다. 제 1 아토믹 시퀀서(241)는 응용 프로세서(210)의 인터페이스(250)에 대한 접근 요청을 아토믹 시퀀스 단위로 관리한다. 제 1 아토믹 시퀀서(241)는 응용 프로세서(210)의 요청에 따라 전력 관리 IC(300)를 제어하기 위한 인터페이스(250)와의 인터페이싱을 수행한다.
제 1 아토믹 시퀀서(241)는 응용 프로세서(210)의 인터페이스(250)에 대한 접근 요청을 관리한다. 즉, 제 1 아토믹 시퀀서(241)는 응용 프로세서(210)로부터 발생하는 인터페이스(250)에 대한 접근 요청을 검출한다. 그리고 응용 프로세서(210)가 인터페이스(250)에 접근을 요청하는 경우, 제 1 아토믹 시퀀서(141)는 세마포어를 획득하기 위해 인터페이스(250)에 최초 트랜잭션을 전송할 것이다. 만일, 세마포어가 획득된 경우, 제 1 아토믹 시퀀서(241)는 접근의 최소 단위인 아토믹 시퀀스(Atomic sequence)를 수행할 것이다. 제 1 아토믹 시퀀서(241)는 인터페이스(250)에 대한 아토믹 시퀀스가 종료되면 세마포어 컨트롤러(143)에 획득된 세마포어를 해제시킬 것이다. 제 1 아토믹 시퀀서(241)는 인터페이스(250)에 대한 세마포어를 해제하는 동시에 응용 프로세서(210)에 인터럽트(INTR1)을 전달할 것이다.
제 2 아토믹 시퀀서(242)는 통신 프로세서(220)의 인터페이스(250)에 대한 접근 요청을 전담하여 관리한다. 제 2 아토믹 시퀀서(242)는 통신 프로세서(220)로부터 발생하는 인터페이스(250)에 대한 접근 요청이 존재하면, 세마포어를 획득하기 위해 인터페이스(250)에 트랜잭션을 전송할 것이다. 제 2 아토믹 시퀀서(242)는 세마포어가 획득되면, 아토믹 시퀀스(Atomic sequence)를 수행할 것이다. 제 2 아토믹 시퀀서(242)는 인터페이스(250)에 대한 아토믹 시퀀스가 종료되면 세마포어 컨트롤러(243)에 획득된 세마포어를 해제(Release)하고, 통신 프로세서(220)에 인터럽트(INTR2)를 전송할 것이다. 제 1 내지 제 2 아토믹 시퀀서(241, 242)는 세마포어 컨트롤러(243)에 의해서 제공되는 세마포어 기능에 따라 아토믹 시퀀스(Atomic sequence)라는 최소 동작 단위로 인터페이스(250)에 접근할 것이다.
세마포어 컨트롤러(243)는 제 1 아토믹 시퀀서(241)와 제 2 아토믹 시퀀서(242)로부터 발생하는 최초 트랜잭션(1'st Transaction)을 검출하여 세마포어를 할당한다. 세마포어 컨트롤러(243)는 제 1 아토믹 시퀀서(241)와 제 2 아토믹 시퀀서(242) 모두에 의해서 세마포어가 할당되지 않은 상태에서는 먼저 최초 트랜잭션이 발생하는 아토믹 시퀀서에 세마포어를 할당할 수 있다. 그리고 세마포어 컨트롤러(243)는 세마포어가 할당된 상태에서는 할당된 아토믹 시퀀서에 의한 아토믹 시퀀스가 종료될 때까지는 세마포어 할당 상태를 유지한다. 예를 들면, 제 1 아토믹 시퀀서(241)에 의해서 세마포어가 점유된 상태에서는 제 2 아토믹 시퀀서(242)로부터 트랜잭션이 전달되더라도 세마포어의 할당 상태를 변경하지 않는다. 세마포어의 할당 상태의 변경은 제 1 아토믹 시퀀서(241)에서 수행되는 아토믹 시퀀스가 종료되는 순간에 발생하게 될 것이다.
세마포어 컨트롤러(243)는 세마포어 할당을 위해 세마포어 비트(미도시됨)를 운영할 수 있다. 즉, 제 1 아토믹 시퀀서(241)에 대한 세마포어 할당 상태를 나타내는 세마포어 비트와 제 2 아토믹 시퀀서(242)에 대한 세마포어 할당 상태를 나타내는 세마포어 비트를 각각 설정할 수 있다. 만일, 제 1 아토믹 시퀀서(241)와 제 2 아토믹 시퀀서(242) 모두의 세마포어가 해제된 상태라면 세마포어 비트는 논리 '00'으로 셋팅될 수 있다. 그리고 제 1 아토믹 시퀀서(241)에 세마포어가 할당되는 경우라면 세마포어 비트는 논리 '10'으로, 제 2 아토믹 시퀀서(242)에 세마포어가 할당되는 경우라면 세마포어 비트는 논리 '01'로 셋팅될 수 있을 것이다. 세마포어 비트의 설정은 세마포어 컨트롤러(243)에 의해서 제 1 및 제 2 아토믹 시퀀서(241, 242) 각각에서 발행되는 트랜잭션의 검출을 통해서 수행될 수 있다. 그리고 세마포어의 해제는 제 1 및 제 2 아토믹 시퀀서(241, 242)에 의해서 독립적으로 수행될 수 있을 것이다. 세마포어 비트의 운용 예에 대해서는 도 2의 실시 예에서 상세히 설명되었으므로 여기에서는 세마포어 비트의 운용 방법에 대한 설명은 생략하기로 한다.
인터페이스(250)는 전력 관리 IC(300)와 시스템 온 칩(200) 사이에서 인터페이싱을 제공한다. 인터페이스(250)는 예를 들면, 직렬 데이터 라인(SDA) 1개와 직렬 클록 라인(SCL) 1개를 구비하며 양방향 통신이 가능한 I2C 인터페이스일 수 있다. 통신 상대는 마스터가 통신 상대의 고유 어드레스를 지정함으로써 결정된다. 임의로 지정되는 복수의 장치와 데이터 송수신이 가능하다. 또, 인터페이스(250) 프로토콜에서는 버스 경합을 회피하는 메커니즘이 정의되어 있으므로, 임의로 지정된 장치가 마스터로 동작할 수 있다. 따라서, 인터페이스(250)를 사용하는 시스템 온 칩(200)에서는 멀티 마스터가 전력 관리 IC(300)를 제어할 수 있다.
전력 관리 IC(300)는 시스템 온 칩(200)의 제어에 따라 구동 전압(VDD)을 시스템 온 칩(200)에 제공한다. 전력 관리 IC(300)는 인터페이스(250)를 통해서 시스템 온 칩(200)과 연결되고, 제어될 수 있다. 전력 관리 IC(300)는 복수의 직류-직류 컨버터(DC-DC Converter)들 또는 전압 레귤레이터들을 포함할 수 있다. 전력 관리 IC(300)는 시스템 온 칩(200)으로부터의 요청에 따라 구동 전압(VDD)의 레벨을 조정할 수 있다. 예를 들면, 슬립 모드(Sleep mode)로 구동되는 동안에, 전력 관리 IC(300)는 시스템 온 칩(200)의 요청에 따라 상대적으로 낮은 레벨의 구동 전압(VDD0)을 시스템 온 칩(200)에 제공할 수 있다. 그리고, 전력 관리 IC(300)는 웨이크-업 상황에서 시스템 온 칩(200)의 요청에 따라 구동 전압의 레벨을 특정 동작을 위한 레벨(VDD2)까지 상승시킬 것이다.
웨이크-업(Wake-up)과 같은 상황은 예를 들면, 통신 프로세서(200)로부터 음성 통신을 위한 콜사인을 사용자에게 전달하기 위한 상황일 수 있다. 이때, 통신 프로세서(220)의 요청에 따라 전력 관리 IC(300)는 사용자에게 콜사인이나 진동을 제공할 수 있는 레벨의 동작 전압으로 상승하게 될 것이다. 본 발명의 세마포어 유닛(240)에 의해서 통신 프로세서(220)에 의한 전력 관리 IC(300)에 대한 세마포어 획득은 최소의 대기 시간 내에 이루어질 수 있다. 더불어, 아토믹 시퀀스 단위로 세마포어 획득이 가능하고, 따라서 전력 관리 IC(300)에 대한 접근 요청이 신속히 이루어질 수 있다.
도 10은 본 발명의 시스템 온 칩(200)과 전력 관리 IC(300)의 아토믹 시퀀스에 따른 구동 전압의 레벨 상승을 보여주는 타이밍도이다. 도 10을 참조하면, 현재 시스템 온 칩(200)이 슬립 모드(Sleep mode) 상태로 유지되고 있으며, 따라서 전력 관리 IC(300)는 슬립 모드를 유지하기 위한 레벨의 구동 전압(VDD0)을 시스템 온 칩(200)에 제공하고 있는 것으로 가정하기로 한다. 그리고 현재는 응용 프로세서(210)에 인터페이스(250)의 세마포어가 할당된 것으로 가정하기로 한다.
T1 시점에서, 시스템 온 칩(200)의 통신 프로세서(220)에 의해서 전력 관리 IC(300)로 웨어크-업(Wake-up) 요청이 발생한다. 그러면, 통신 프로세서(220)에 대응하는 아토믹 시퀀서(242)는 인터페이스(250)에 세마포어를 획득하기 위한 최초 트랜잭션을 전송할 것이다. 하지만, 응용 프로세서(220)에 의해서 요청된 동작을 처리하기 위해서 현재의 세마포어는 제 1 아토믹 시퀀서(241)가 점유하고 있는 상태이다. 따라서, 제 2 아토믹 시퀀서(242)에 세마포어가 넘어가는 것은 아토믹 시퀀스(AS1)가 완료되는 T2 시점이 될 것이다. T2 시점 부근에서 제 1 아토믹 시퀀서(241)는 아토믹 시퀀스(AS1)에 대응하는 복수의 트랜잭션의 처리를 완료하고, 세마포어 비트를 해제할 것이다.
T2 시점에서, 제 2 아토믹 시퀀서(242)에서 세마포어 획득을 위해서 반복적으로 전송되던 최초 트랜잭션이 인터페이스(250)에 의해서 수신될 것이다. 그러면, 세마포어 비트는 제 2 아토믹 시퀀서(242)로 설정된다. 따라서, 제 2 아토믹 시퀀서(242)에 의한 아토믹 시퀀스(AS2)가 시작되면, 전력 관리 IC(300)로의 전압 레벨 상승 요청에 대응하는 복수의 트랜잭션이 발생하게 될 것이다. 아토믹 시퀀스(AS2)의 최종 트랜잭션이 인터페이스(250)에 전달되면 인터페이스(250)에 의한 전력 관리 IC(300)로의 제어 명령이나 신호가 전송될 것이다.
T3 시점에서, 전력 관리 IC(300)는 인터페이스(250)를 통해서 전달받은 제어 명령에 응답하여 구동 전압(VDD)의 레벨을 상승시킨다. 만일, 웨이크-업을 수행하기 위한 구동 전압(VDD)의 최소 레벨이 제 1 레벨(VDD1)인 경우, T4 시점이 지나서 시스템 온 칩(200)의 웨이크-업이 활성화될 것이다.
T4 시점에서, 전력 관리 IC(300)에 의해서 제공되는 구동 전압은 제 1 레벨(VDD1) 이상으로 상승하게 된다. 이때부터, 시스템 온 칩(200)의 웨이크-업을 위한 제반 동작이 가능할 것이다.
상술한 예시에서, 통신 프로세서(220)에 의한 전력 관리 IC(300)로의 접근 요청은 응용 프로세서(210)에 의해서 수행되는 아토믹 시퀀스(AS1)에 대응하는 시간(ΔT1) 이후에 발생할 수 있다. 그리고 제 2 아토믹 시퀀서(242)와 인터페이스(250) 사이에서 수행되는 아토믹 시퀀스(AS2)에 대응하는 시간(ΔT2) 이후에 구동 전압(VDD)의 레벨이 상승하게 될 것이다. 더불어, 정상 동작이 가능한 것은 구동 전압(VDD)의 레벨이 (VDD1)에 도달하기까지 시간(ΔT3)이 추가적으로 요구될 수 있다. 본 발명에서는 실시간 제어가 필요한 마스터에 대해서 무한정 대기할 필요가 없도록 세마포어를 아토믹 시퀀스 단위로 할당 가능하다.
이상에서 통신 프로세서(220)에 의해서 전력 관리 IC(300)로의 접근 요청이 전력 관리 IC(300)에 전달되는 최대의 대기 시간은 응용 프로세서(210)에 대응하는 제 1 아토믹 시퀀서(241)에 의한 아토믹 시퀀스(AS1)임을 알 수 있다. 따라서, 통신 프로세서(220)의 이러한 아토믹 시퀀스들의 길이 정보를 사용하면, 실시간 제어가 필요한 다양한 동작에서 태스크 스케줄링을 용이하게 수행할 수 있을 것으로 기대된다.
도 11은 본 발명의 또 다른 실시 예를 보여주는 시스템 온 칩을 보여주는 블록도이다. 도 11을 참조하면, 본 발명의 시스템 온 칩(400)은 인터페이스(450)의 멀티 마스터에 대응하는 복수의 프로세서들(410, 415, 420)과, 복수의 프로세서들(410, 415, 420) 각각에 대한 세마포어를 제어하는 세마포어 유닛(440)을 포함할 수 있다. 그리고 복수의 프로세서들(410, 415, 420)을 마스터로 하는 싱글 슬레이브(500)가 인터페이스(450)를 통해서 연결된다.
복수의 프로세서들(410, 415, 420) 각각은 서로 다른 속성의 운영 체제(OS)에 의해서 구동되는 프로세서들일 수 있다. 또는, 복수의 프로세서들(410, 415, 420) 각각은 서로 다른 보안 레벨을 갖는 운영 체제들에 의해서 구동되는 프로세서들일 수도 있을 것이다. 복수의 프로세서들(410, 415, 420) 각각에서 구동되는 소프트웨어에서는 세마포어에 대한 고려없이 싱글 슬레이브(500)에 대한 접근 요청을 버스 매트릭스(430)를 통하여 세마포어 유닛(440)으로 요청할 것이다.
세마포어 유닛(440)은 복수의 프로세서들(410, 415, 420) 각각의 인터페이스(450)에 대한 아토믹 시퀀스를 수행하는 복수의 아토믹 시퀀서들(441, 442, 443)과 세마포어 컨트롤러(445)를 포함할 수 있다. 복수의 아토믹 시퀀서들(441, 442, 443) 각각은 대응하는 복수의 프로세서들(410, 420, 430) 각각의 인터페이스(450)에 대한 접근 요청을 세마포어 컨트롤러(445)의 제어에 따라 인터페이스(450)에 전달한다. 복수의 아토믹 시퀀서들(441, 442, 443) 각각은 인터페이스(450)로의 접근 요청이 수신되면, 세마포어를 획득한 이후에 아토믹 시퀀스 단위로 접근 요청을 인터페이스(450)에 전달한다. 하나의 아토믹 시퀀스가 종료되는 즉시 복수의 아토믹 시퀀서들(441, 442, 443)은 세마포어를 해제시킬 것이다.
인터페이스(450)는 복수의 아토믹 시퀀서들(441, 442, 443) 중에서 세마포어를 획득한 어느 하나에 의해서 수행되는 아토믹 시퀀스의 경로가 될 수 있다. 즉, 복수의 아토믹 시퀀서들(441, 442, 443) 중에서 세마포어를 획득한 어느 하나의 아토믹 시퀀서가 수행하는 아토믹 시퀀스에 의해서 인터페이스(450)의 레지스터가 프로그램될 수 있다. 프로그램된 레지스터의 값에 따라 인터페이스(450)는 싱글 슬레이브(500)에 명령어나 제어 신호를 전달할 수 있다.
이상에서 설명된 시스템 온 칩(400)은 복수의 프로세서들(410, 415, 420)에 의해서 어느 하나의 슬레이브를 아토믹 시퀀스(Atomic sequence)라는 동작 단위로 세마포어를 할당받아 공유할 수 있다. 이러한 세마포어 할당을 위해서 시스템 온 칩(400)은 세마포어 유닛(440)을 포함할 수 있다. 세마포어 유닛(440)은 인터페이스(450)를 복수의 프로세서들(410, 415, 420)에게 아토믹 시퀀스 단위로 점유할 수 있도록 제어한다. 이러한 세마포어 유닛(440)의 개입에 의해서 어느 하나의 프로세서가 인터페이스(450)를 점유하는 최대 시간을 고정하고, 고정된 점유 시간이 경과하면 인터페이스(450)의 세마포어는 해제된다. 따라서, 어느 하나의 프로세서에 의한 인터페이스(450)의 점유 시간이 예측 가능함에 따라 싱글 슬레이브(500)에 대한 실시간 제어가 필요한 마스터에 스케줄링의 용이성을 제공할 수 있다.
한편, 본 발명에 따른 메모리 시스템은 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 메모리 시스템은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 패키지들을 이용하여 실장될 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 상술한 실시예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100, 200, 400 : 시스템 온 칩
110 : 제 1 마스터
120: 제 2 마스터
130 : 버스 매트릭스
140 : 세마포어 유닛
141 : 제 1 아토믹 시퀀서
142 : 제 2 아토믹 시퀀서
143 : 세마포어 컨트롤러
144 : 세마포어 비트
150 : I2C 인터페이스
155 : 제어 레지스터
160, 500 : 슬레이브 장치
300 : 전력 관리 IC

Claims (20)

  1. 복수의 마스터들;
    슬레이브 장치와 상기 복수의 마스터들 사이에서 인터페이싱을 제공하는 인터페이스; 그리고
    상기 슬레이브 장치를 제어하기 위한 상기 복수의 마스터들의 상기 인터페이스로의 접근 요청을 검출하고, 상기 검출된 접근 요청에 따라 상기 복수의 마스터들 각각에 대한 세마포어를 특정 동작 단위로 할당하는 세마포어 유닛을 포함하는 시스템 온 칩.
  2. 제 1 항에 있어서,
    상기 특정 동작 단위는 상기 인터페이스가 상기 슬레이브 장치에 하나의 명령어나 제어 신호를 전송하기 위한 복수의 트랜잭션들에 대응하는 시스템 온 칩.
  3. 제 1 항에 있어서,
    상기 세마포어 유닛은:
    상기 복수의 마스터들 각각의 상기 인터페이스로의 접근 요청을 수신하여 상기 인터페이스에 대한 세마포어의 획득을 시도하는 복수의 아토믹 시퀀서들; 그리고
    상기 복수의 아토믹 시퀀서들의 상기 인터페이스에 대한 접근 시도를 검출하여 어느 하나에 세마포어를 할당하는 세마포어 컨트롤러를 포함하는 시스템 온 칩.
  4. 제 3 항에 있어서,
    상기 복수의 아토믹 시퀀서들 각각은 상기 인터페이스에 상기 접근 시도를 위한 최초 트랜잭션을 상기 세마포어가 할당될 때까지 전송하는 시스템 온 칩.
  5. 제 4 항에 있어서,
    상기 세마포어 컨트롤러는 상기 복수의 아토믹 시퀀서들 각각이 전송하는 최초 트랜잭션들 중에서 상기 인터페이스에 의해서 수신된 어느 하나의 아토믹 시퀀서에 상기 세마포어를 할당하는 시스템 온 칩.
  6. 제 5 항에 있어서,
    상기 복수의 아토믹 시퀀서들 중에서 상기 세마포어를 할당받은 어느 하나는 상기 특정 동작 단위에 대응하는 적어도 하나의 트랜잭션들의 교환이 종료될 때에 획득된 세마포어를 해제하는 시스템 온 칩.
  7. 제 5 항에 있어서,
    상기 세마포어 컨트롤러는 상기 복수의 아토믹 시퀀서들 중에서 어느 하나에 상기 세마포어를 할당하기 위한 세마포어 비트들을 운영하는 시스템 온 칩.
  8. 제 4 항에 있어서,
    상기 아토믹 시퀀서들은 상기 특정 동작 단위의 트랜잭션들의 교환이 완료되면 대응하는 마스터에 인터럽트를 전송하는 시스템 온 칩.
  9. 제 3 항에 있어서,
    상기 복수의 아토믹 시퀀서들은 각각 대응하는 상기 복수의 마스터들의 인터페이스로의 접근을 전담하여 처리하는 시스템 온 칩.
  10. 제 9 항에 있어서,
    상기 마스터들 각각은 서로 다른 속성의 운영 체제에 의해서 구동되는 프로세서들인 것을 특징으로 하는 시스템 온 칩.
  11. 제 1 항에 있어서,
    상기 인터페이스는 I2C 인터페이스(Inter-Integrated Circuit Interface)를 포함하는 시스템 온 칩.
  12. 복수의 마스터들과 하나의 슬레이브 장치 사이에 인터페이싱을 제공하는 인터페이스의 멀티-마스터에 대한 세마포어 할당 방법에 있어서:
    상기 복수의 마스터들 각각으로부터의 상기 인터페이스로의 접근 요청을 수신하는 단계;
    상기 수신된 어느 하나의 마스터로부터의 접근 요청에 응답하여 상기 인터페이스로 최초 트랜잭션을 전송하는 단계;
    상기 인터페이스가 상기 최초 트랜잭션을 수용했는지 검출하는 단계;
    상기 최초 트랜잭션이 수용된 경우, 상기 어느 하나의 마스터에 상기 세마포어를 할당하고, 상기 어느 하나의 접근 요청을 상기 슬레이브 장치로 전송하기 위한 아토믹 시퀀스를 수행하는 단계; 그리고
    상기 아토믹 시퀀스가 완료되면, 상기 어느 하나의 마스터에 할당된 세마포어를 해제하는 단계를 포함하는 세마포어 할당 방법.
  13. 제 12 항에 있어서,
    상기 아토믹 시퀀스가 완료되면, 상기 어느 하나의 마스터에 인터럽트를 전달하는 단계를 더 포함하는 세마포어 할당 방법.
  14. 제 12 항에 있어서,
    상기 아토믹 시퀀스는 상기 검출된 어느 하나의 접근 요청을 상기 인터페이스로부터 상기 슬레이브 장치로 전달하기 위해 상기 인터페이스의 레지스터를 프로그램하거나 독출하기 위한 복수의 트랜잭션들을 포함하는 세마포어 할당 방법.
  15. 제 12 항에 있어서,
    상기 검출하는 단계에서 상기 최초 트랜잭션이 상기 인터페이스에서 거절된 것으로 검출되면, 상기 어느 하나의 마스터에 대한 상기 세마포어는 비할당되고 상기 최초 트랜잭션을 반복적으로 상기 인터페이스에 전송하는 세마포어 할당 방법.
  16. 제 12 항에 있어서,
    상기 세마포어를 해제하는 단계는, 상기 인터페이스의 제어 레지스터들 중 특정 어드레스에 대응하는 레지스터의 독출하는 단계를 포함하는 세마포어 할당 방법.
  17. 제 16 항에 있어서,
    상기 특정 어드레스에 대응하는 레지스터의 독출 동작을 검출하여 상기 어느 하나의 마스터에 대한 세마포어 할당을 해제하는 단계를 포함하는 세마포어 할당 방법.
  18. 응용 프로세서;
    통신 프로세서;
    상기 응용 프로세서 및 상기 통신 프로세서를 마스터로, 외부 장치를 슬레이브로 연결하기 위한 인터페이스; 그리고
    상기 응용 프로세서 또는 상기 통신 프로세서의 상기 인터페이스로의 접근 요청을 검출하고, 상기 검출 결과에 따라 상기 응용 프로세서 또는 상기 통신 프로세서에 대한 상기 인터페이스에 대한 점유권을 특정 동작 단위로 할당하는 세마포어 유닛을 포함하는 시스템 온 칩.
  19. 제 18 항에 있어서,
    상기 세마포어 유닛은:
    상기 응용 프로세서로부터의 상기 인터페이스로의 접근 요청을 수신하여 상기 인터페이스에 대한 점유권의 획득을 시도하는 제 1 아토믹 시퀀서;
    상기 통신 프로세서로부터의 상기 인터페이스로의 접근 요청을 수신하여 상기 인터페이스에 대한 점유권의 획득을 시도하는 제 2 아토믹 시퀀서; 및
    상기 제 1 및 제 2 아토믹 시퀀서의 상기 인터페이스에 대한 접근 시도를 검출하여 어느 하나에 상기 점유권을 할당하거나 해제하는 세마포어 컨트롤러를 포함하는 시스템 온 칩.
  20. 제 19 항에 있어서,
    상기 특정 동작 단위는 상기 인터페이스가 상기 외부 장치에 상기 접근 요청에 대응하는 하나의 명령어나 제어 신호를 전송하기 위한 제 1 아토믹 시퀀스 또는 상기 제 2 아토믹 시퀀서와 상기 인터페이스와 교환되는 복수의 트랜잭션들에 대응하는 시스템 온 칩.
KR1020140155558A 2014-11-10 2014-11-10 세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법 KR102285749B1 (ko)

Priority Applications (10)

Application Number Priority Date Filing Date Title
KR1020140155558A KR102285749B1 (ko) 2014-11-10 2014-11-10 세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법
TW104132911A TWI673955B (zh) 2014-11-10 2015-10-07 具有信號標功能的系統晶片以及信號標指派方法
US14/877,653 US9940278B2 (en) 2014-11-10 2015-10-07 System on chip having semaphore function and method for implementing semaphore function
CN201510738756.0A CN105589831B (zh) 2014-11-10 2015-11-04 具有信号量功能的片上系统和信号量分配方法
US15/899,877 US10176136B2 (en) 2014-11-10 2018-02-20 System on chip having semaphore function and method for implementing semaphore function
US16/192,019 US10678728B2 (en) 2014-11-10 2018-11-15 System on chip having semaphore function and method for implementing semaphore function
US16/821,289 US11080220B2 (en) 2014-11-10 2020-03-17 System on chip having semaphore function and method for implementing semaphore function
US17/376,590 US11599491B2 (en) 2014-11-10 2021-07-15 System on chip having semaphore function and method for implementing semaphore function
US18/179,052 US11835993B2 (en) 2014-11-10 2023-03-06 System on chip having semaphore function and method for implementing semaphore function
US18/515,091 US20240086354A1 (en) 2014-11-10 2023-11-20 System on chip having semaphore function and method for implementing semaphore function

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140155558A KR102285749B1 (ko) 2014-11-10 2014-11-10 세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법

Publications (2)

Publication Number Publication Date
KR20160056382A true KR20160056382A (ko) 2016-05-20
KR102285749B1 KR102285749B1 (ko) 2021-08-05

Family

ID=55912327

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140155558A KR102285749B1 (ko) 2014-11-10 2014-11-10 세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법

Country Status (4)

Country Link
US (7) US9940278B2 (ko)
KR (1) KR102285749B1 (ko)
CN (1) CN105589831B (ko)
TW (1) TWI673955B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200039985A (ko) * 2018-10-08 2020-04-17 삼성전자주식회사 반도체 장치 및 이를 포함하는 반도체 시스템

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105280149B (zh) * 2015-11-11 2017-11-17 深圳市华星光电技术有限公司 一种Mura补偿数据写入装置及方法
US20180191066A1 (en) * 2016-12-30 2018-07-05 Andrey Orlov Base station on system-on-chip
US10419063B2 (en) 2016-12-30 2019-09-17 Waviot Integrated Systems, Llc Method and system for receiving telemetry messages over RF channel
US10210116B2 (en) 2017-04-27 2019-02-19 Qualcomm Incorporated Method, apparatus, and system for semaphore-based protection of power-domain-crossing signals
CN108197046A (zh) * 2017-12-30 2018-06-22 盛科网络(苏州)有限公司 一种实现原子操作的系统及方法
CN112559210B (zh) * 2020-12-16 2024-05-07 北京仿真中心 一种基于rtx实时系统的共享资源读写互斥方法
KR20220135048A (ko) 2021-03-29 2022-10-06 삼성전자주식회사 버스를 통해 자원을 공유하기 위한 장치 및 방법

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06119300A (ja) * 1990-08-31 1994-04-28 Texas Instr Inc <Ti> マルチプロセッサシステム用のスケジューリング方法と装置
JPH08147205A (ja) * 1994-11-18 1996-06-07 Nec Corp ディスク共有システム
JP2004252670A (ja) * 2003-02-19 2004-09-09 Fujitsu Ltd 共有リソースの競合検出器および共有リソースの競合検出方法
KR20070009250A (ko) * 2005-07-15 2007-01-18 삼성전자주식회사 통신시스템
KR20070084362A (ko) * 2004-10-22 2007-08-24 콸콤 인코포레이티드 오토믹 세마포어 연산을 수행하기 위한 방법 및 장치
JP2013171547A (ja) * 2012-02-23 2013-09-02 Hitachi Automotive Systems Ltd 車両用制御装置

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5303344A (en) * 1989-03-13 1994-04-12 Hitachi, Ltd. Protocol processing apparatus for use in interfacing network connected computer systems utilizing separate paths for control information and data transfer
US5440752A (en) * 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU
EP0535822B1 (en) * 1991-09-27 1997-11-26 Sun Microsystems, Inc. Methods and apparatus for locking arbitration on a remote bus
JPH06231074A (ja) * 1993-01-29 1994-08-19 Nec Corp システムバスの多重アクセス方式
US5717873A (en) * 1993-09-30 1998-02-10 Intel Corporation Deadlock avoidance mechanism and method for multiple bus topology
US5557783A (en) * 1994-11-04 1996-09-17 Canon Information Systems, Inc. Arbitration device for arbitrating access requests from first and second processors having different first and second clocks
US5758105A (en) * 1995-12-04 1998-05-26 International Business Machines Corporation Method and apparatus for bus arbitration between isochronous and non-isochronous devices
US5872980A (en) * 1996-01-25 1999-02-16 International Business Machines Corporation Semaphore access control buffer and method for accelerated semaphore operations
US6574688B1 (en) * 1999-01-05 2003-06-03 Agere Systems Inc. Port manager controller for connecting various function modules
US6253268B1 (en) 1999-01-15 2001-06-26 Telefonaktiebolaget L M Ericsson (Publ) Method and system for multiplexing a second interface on an I2C interface
US6850521B1 (en) * 1999-03-17 2005-02-01 Broadcom Corporation Network switch
JP4025260B2 (ja) 2003-08-14 2007-12-19 株式会社東芝 スケジューリング方法および情報処理システム
US7143220B2 (en) * 2004-03-10 2006-11-28 Intel Corporation Apparatus and method for granting concurrent ownership to support heterogeneous agents in on-chip busses having different grant-to-valid latencies
US20060026329A1 (en) * 2004-07-30 2006-02-02 Yu James K System and method for an arbiter rewind
JP2006119724A (ja) 2004-10-19 2006-05-11 Canon Inc Cpuシステム、バスブリッジ、その制御方法、及びコンピュータシステム
JP4504153B2 (ja) 2004-10-20 2010-07-14 オリンパス株式会社 液浸対物光学系
US8156272B2 (en) * 2006-09-01 2012-04-10 Spansion Llc Multiple communication channels on MMC or SD CMD line
JP4655032B2 (ja) 2006-12-05 2011-03-23 日亜化学工業株式会社 半導体装置
US20090055005A1 (en) * 2007-08-23 2009-02-26 Horizon Semiconductors Ltd. Audio Processor
US8676273B1 (en) * 2007-08-24 2014-03-18 Iwao Fujisaki Communication device
US7865644B2 (en) * 2007-10-30 2011-01-04 International Business Machines Corporation Method and apparatus for attaching multiple slave devices to a single bus controller interface while supporting command pipelining
US7730248B2 (en) * 2007-12-13 2010-06-01 Texas Instruments Incorporated Interrupt morphing and configuration, circuits, systems and processes
JPWO2009096161A1 (ja) * 2008-01-29 2011-05-26 パナソニック株式会社 プロセッサ性能解析装置、方法及びシミュレータ
JP2010026575A (ja) 2008-07-15 2010-02-04 Nec Electronics Corp スケジューリング方法およびスケジューリング装置並びにマルチプロセッサシステム
US8487655B1 (en) * 2009-05-05 2013-07-16 Cypress Semiconductor Corporation Combined analog architecture and functionality in a mixed-signal array
US8695002B2 (en) * 2009-10-20 2014-04-08 Lantiq Deutschland Gmbh Multi-threaded processors and multi-processor systems comprising shared resources
US11221764B2 (en) * 2010-01-29 2022-01-11 Mosys, Inc. Partitioned memory with shared memory resources and configurable functions
JP2011232956A (ja) 2010-04-27 2011-11-17 Clarion Co Ltd コンピュータシステムとプログラム
US9432298B1 (en) * 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
EP2575039B1 (de) * 2011-09-28 2016-12-14 Siemens Aktiengesellschaft Verfahren und Anordnung zur Nutzung einer Ressource einer Hardware-Plattform mit zumindest zwei virtuellen Maschinen
JP5863021B2 (ja) 2011-10-31 2016-02-16 Necプラットフォームズ株式会社 マルチプロセッサシステム、及びマルチプロセッサシステムの制御方法
KR101944329B1 (ko) 2012-04-17 2019-04-18 삼성전자주식회사 멀티프로세서 시스템 및 그것의 캐쉬 관리 방법
US20140006644A1 (en) * 2012-06-28 2014-01-02 Lsi Corporation Address Remapping Using Interconnect Routing Identification Bits
JP6051721B2 (ja) 2012-09-19 2016-12-27 株式会社ソシオネクスト 実行制御方法、およびマルチプロセッサシステム
US10353837B2 (en) * 2013-09-09 2019-07-16 Qualcomm Incorporated Method and apparatus to enable multiple masters to operate in a single master bus architecture
US9390033B2 (en) * 2013-11-13 2016-07-12 Sandisk Technologies Llc Method and system for communicating with non-volatile memory via multiple data paths
KR102360214B1 (ko) * 2015-08-26 2022-02-08 삼성전자주식회사 실시간 공유 인터페이스를 포함하는 시스템 온 칩의 스케쥴링 방법
KR102660519B1 (ko) * 2016-08-01 2024-04-25 삼성전자주식회사 외부 장치를 인식하는 방법 및 이를 지원하는 전자 장치

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06119300A (ja) * 1990-08-31 1994-04-28 Texas Instr Inc <Ti> マルチプロセッサシステム用のスケジューリング方法と装置
JPH08147205A (ja) * 1994-11-18 1996-06-07 Nec Corp ディスク共有システム
JP2004252670A (ja) * 2003-02-19 2004-09-09 Fujitsu Ltd 共有リソースの競合検出器および共有リソースの競合検出方法
KR20070084362A (ko) * 2004-10-22 2007-08-24 콸콤 인코포레이티드 오토믹 세마포어 연산을 수행하기 위한 방법 및 장치
KR20070009250A (ko) * 2005-07-15 2007-01-18 삼성전자주식회사 통신시스템
JP2013171547A (ja) * 2012-02-23 2013-09-02 Hitachi Automotive Systems Ltd 車両用制御装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200039985A (ko) * 2018-10-08 2020-04-17 삼성전자주식회사 반도체 장치 및 이를 포함하는 반도체 시스템

Also Published As

Publication number Publication date
US11835993B2 (en) 2023-12-05
TW201622353A (zh) 2016-06-16
US20230205717A1 (en) 2023-06-29
US9940278B2 (en) 2018-04-10
US10176136B2 (en) 2019-01-08
US20180173662A1 (en) 2018-06-21
CN105589831B (zh) 2020-11-06
KR102285749B1 (ko) 2021-08-05
TWI673955B (zh) 2019-10-01
US20190087370A1 (en) 2019-03-21
CN105589831A (zh) 2016-05-18
US11080220B2 (en) 2021-08-03
US20210342283A1 (en) 2021-11-04
US11599491B2 (en) 2023-03-07
US20160132451A1 (en) 2016-05-12
US20200218682A1 (en) 2020-07-09
US20240086354A1 (en) 2024-03-14
US10678728B2 (en) 2020-06-09

Similar Documents

Publication Publication Date Title
KR102285749B1 (ko) 세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법
TWI522792B (zh) 用以產生要求之設備、用於記憶體要求之方法、及運算系統
WO2014113225A1 (en) Arbitrating memory accesses via a shared memory fabric
US9390033B2 (en) Method and system for communicating with non-volatile memory via multiple data paths
JP2007219816A (ja) マルチプロセッサシステム
KR20070056724A (ko) 클락 신호의 출력을 제어할 수 있는 컨트롤러와 그 방법,및 상기 컨트롤러를 구비하는 시스템
CN116302617B (zh) 共享内存的方法、通信方法、嵌入式系统以及电子设备
KR100708096B1 (ko) 버스 시스템 및 그 실행 순서 조정방법
US8880811B2 (en) Data processing device and data processing arrangement for accelerating buffer synchronization
KR100630071B1 (ko) 다중 프로세서 환경에서의 dma를 이용한 고속 데이터전송 방법 및 그 장치
JP5551201B2 (ja) メモリ制御装置
CN111290983B (zh) Usb传输设备及传输方法
US6721833B2 (en) Arbitration of control chipsets in bus transaction
US10339085B2 (en) Method of scheduling system-on-chip including real-time shared interface
CN111679992B (zh) 用于管理对共享总线访问的方法和对应的电子设备
US5150466A (en) Flexible distributed bus priority network
CN115563038B (zh) 基于dma控制器的数据处理系统、方法和数据处理设备
WO2007039933A1 (ja) 演算処理装置
US8135878B1 (en) Method and apparatus for improving throughput on a common bus
US20220309015A1 (en) Device and method for sharing resource via bus
KR20230086548A (ko) 이종의 멀티 cpu 간에 물리 자원을 공유하기 위한 제어권을 관리하는 시스템온칩 및 그 동작 방법
CN116401072A (zh) 外部设备的数据访问控制方法、装置、设备和介质
CN117149472A (zh) 通信方法、装置、计算机可读存储介质以及电子设备
JP2001325208A (ja) データ処理装置及びデータ処理方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant