KR20180050728A - 멀티-노드 네트워크에서의 입력/출력 신호 브릿징 및 가상화 - Google Patents

멀티-노드 네트워크에서의 입력/출력 신호 브릿징 및 가상화 Download PDF

Info

Publication number
KR20180050728A
KR20180050728A KR1020187009928A KR20187009928A KR20180050728A KR 20180050728 A KR20180050728 A KR 20180050728A KR 1020187009928 A KR1020187009928 A KR 1020187009928A KR 20187009928 A KR20187009928 A KR 20187009928A KR 20180050728 A KR20180050728 A KR 20180050728A
Authority
KR
South Korea
Prior art keywords
signals
gpio
general purpose
purpose input
output
Prior art date
Application number
KR1020187009928A
Other languages
English (en)
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 퀄컴 인코포레이티드
Publication of KR20180050728A publication Critical patent/KR20180050728A/ko

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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/054Input/output
    • 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
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • 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

일 양태에서, 집적 회로는 하나 이상의 주변장치 디바이스들에 대한 범용 입력/출력 (GPIO) 신호들의 세트를 획득하고, 중앙 처리 유닛과는 독립적으로 GPIO 신호들의 세트를 포함하는 제 1 가상 GPIO 패킷을 획득하고, 그리고 중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 제 1 가상 GPIO 패킷을 하나 이상의 주변장치 디바이스들로 송신한다. 집적 회로는 또한 하나 이상의 주변장치 디바이스들의 하나 이상의 GPIO 핀들을 구성하기 위한 구성 신호들의 세트를 획득하고, 중앙 처리 유닛과는 독립적으로 구성 신호들의 세트를 포함하는 제 2 가상 GPIO 패킷을 획득하고, 그리고 중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 제 2 가상 GPIO 패킷을 하나 이상의 주변장치 디바이스들로 송신할 수도 있다.

Description

멀티-노드 네트워크에서의 입력/출력 신호 브릿징 및 가상화
관련 출원들에 대한 상호-참조
본 특허 출원은 "I/O BRIDGING FOR MULTI-NODE NETWORK" 란 발명의 명칭으로 2015년 9월 10일에 출원된 미국 가출원 번호 제 62/216,891호, "I/O BRIDGING FOR MULTI-NODE NETWORK" 란 발명의 명칭으로 2015년 12월 10일에 출원된 미국 가출원 번호 제 62/265,612호, "INPUT/OUTPUT SIGNAL BRIDGING AND VIRTUALIZATION IN A MULTI-NODE NETWORK" 란 발명의 명칭으로 2016년 6월 13일에 출원된 미국 가출원 번호 제 62/349,609호, 및 "INPUT/OUTPUT SIGNAL BRIDGING AND VIRTUALIZATION IN A MULTI-NODE NETWORK" 란 발명의 명칭으로 2016년 8월 19일에 출원된 미국 정규 출원 번호 제 15/242,368호에 대해 우선권을 주장하며, 이들은 본 양수인에게 양도되고 그리고 본원에 명시적으로 참고로 포함된다.
본 개시물의 분야
본 개시물의 양태들은 일반적으로 멀티-노드 네트워크에서의 입력/출력 (I/O) 신호 브릿징 및 가상화에 관한 것이다.
범용 입력/출력 (GPIO) 은 집적 회로 설계자로 하여금, 특정의 애플리케이션들에 대해 커스터마이즈될 수도 있는 범용 핀들을 제공가능하게 한다. 예를 들어, GPIO 핀은 사용자의 필요에 따라서 출력 또는 입력 핀이 되도록 프로그래밍가능하다. GPIO 모듈 또는 주변장치는 인터페이스 요건에 기초하여 변할 수 있는 핀들의 그룹들을 일반적으로 제어할 것이다. GPIO 핀들의 프로그램성 때문에, 이들은 일반적으로 마이크로프로세서 및 마이크로제어기 애플리케이션들에 포함된다. 예를 들어, 모바일 디바이스들에서의 애플리케이션들 프로세서는 다수의 GPIO 핀들을 이용하여 모뎀 프로세서와의 프로세서간 통신 (IPC) 과 같은 핸드쉐이크 시그널링을 수행할 수도 있다.
애플리케이션 프로세서와 같은 호스트 디바이스는 GPIO 시그널링을 통해서 복수의 주변장치 디바이스들에 커플링될 수도 있다. 결과적인 네트워크에서, 이것은 하나의 주변장치 디바이스가 GPIO 신호를 다른 주변장치로 송신해야 하는 경우일 수도 있다. 송신 주변장치 디바이스는 대응하는 GPIO 신호를 호스트 디바이스로 송신해야 하며, 호스트 디바이스는 그후 GPIO 신호를 수신 주변장치 디바이스로 재송신한다. 그러나, 이러한 통신은, 호스트 디바이스에서의 프로세서가 수신 주변장치 디바이스로의 GPIO 재송신을 관리하기 위해 (슬립 상태에 있었다면) 활성 상태로 전이해야 한다는 점에서 문제가 있다. 따라서, 호스트 디바이스를 통한 I/O 브릿징은 상당한 전력을 소비할 뿐만 아니라 호스트 프로세서를 휴면 상태로부터 활성 상태로 전이하는데 지연을 수반한다.
따라서, 당업계에서는, 호스트 디바이스와 네트워크화된 다수의 주변장치 디바이스들 사이의 향상된 GPIO 시그널링이 요구되고 있다.
다음은 이런 양태들의 기본적인 이해를 제공하기 위해서 본 개시물의 일부 양태들의 간단한 요약을 제시한다. 이 요약은 본 개시물의 모든 고려된 특징들의 광범위한 개관이 아니며, 본 개시물의 모든 양태들의 중요한 또는 중대한 엘리먼트들을 식별하거나 본 개시물의 임의의 또는 모든 양태들의 범위를 기술하도록 의도된 것이 아니다. 이의 유일한 목적은 추후 제시되는 좀더 상세한 설명에 대한 준비 행위로서 본 개시물의 일부 양태들의 여러 컨셉들을 간단한 형태로 제시하는 것이다.
일 양태에서, 집적 회로에서 동작하는 방법이 제공된다. 집적 회로는 하나 이상의 주변장치 디바이스들에 대한 GPIO 신호들의 세트를 획득하고 맵핑 테이블에 기초하여 하나 이상의 주변장치 디바이스들에 대한 GPIO 신호들의 세트를 제 1 가상 GPIO 패킷에서의 미리 결정된 제 1 비트 위치들에 맵핑한다. 집적 회로는 GPIO 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하며, 여기서, GPIO 신호들의 세트와 연관된 마스크 신호들의 세트는 제 1 가상 GPIO 패킷에 포함된다. 집적 회로는 중앙 처리 유닛과는 독립적으로, GPIO 신호들의 세트를 포함하는 제 1 가상 GPIO 패킷을 획득한다. 집적 회로는 중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 제 1 가상 GPIO 패킷을 하나 이상의 주변장치 디바이스들로 송신한다. 집적 회로는 하나 이상의 주변장치 디바이스들의 하나 이상의 GPIO 핀들을 구성하기 위한 구성 신호들의 세트를 획득하고 맵핑 테이블에 기초하여 구성 신호들의 세트를 제 2 가상 GPIO 패킷에서의 미리 결정된 제 2 비트 위치들에 맵핑한다. 집적 회로는 구성 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하며, 여기서, 구성 신호들의 세트와 연관된 마스크 신호들의 세트는 제 2 가상 GPIO 패킷에 포함된다. 집적 회로는 구성 신호들의 세트를 포함하는 제 2 가상 GPIO 패킷을 획득하고 중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 제 2 가상 GPIO 패킷을 하나 이상의 주변장치 디바이스들로 송신한다.
일 양태에서, 장치가 제공된다. 본 장치는 하나 이상의 주변장치 디바이스들에 대한 GPIO 신호들의 세트를 획득하는 수단; 및/또는 맵핑 테이블에 기초하여 하나 이상의 주변장치 디바이스들에 대한 GPIO 신호들의 세트를 제 1 가상 GPIO 패킷에서의 미리 결정된 제 1 비트 위치들에 맵핑하는 수단을 포함할 수도 있다. 본 장치는 GPIO 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하는 수단을 더 포함할 수도 있으며, 여기서, GPIO 신호들의 세트와 연관된 마스크 신호들의 세트는 제 1 가상 GPIO 패킷에 포함된다. 본 장치는 중앙 처리 유닛과는 독립적으로 GPIO 신호들의 세트를 포함하는 제 1 가상 GPIO 패킷을 획득하는 수단을 더 포함할 수도 있다. 본 장치는 중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 제 1 가상 GPIO 패킷을 하나 이상의 주변장치 디바이스들로 송신하는 수단을 더 포함할 수도 있다. 본 장치는 하나 이상의 주변장치 디바이스들의 하나 이상의 GPIO 핀들을 구성하기 위한 구성 신호들의 세트를 획득하는 수단; 및/또는 맵핑 테이블에 기초하여 구성 신호들의 세트를 제 2 가상 GPIO 패킷에서의 미리 결정된 제 2 비트 위치들에 맵핑하는 수단을 더 포함할 수도 있다. 본 장치는 구성 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하는 수단을 더 포함할 수도 있으며, 여기서, 구성 신호들의 세트와 연관된 마스크 신호들의 세트는 제 2 가상 GPIO 패킷에 포함된다. 본 장치는 구성 신호들의 세트를 포함하는 제 2 가상 GPIO 패킷을 획득하는 수단; 및/또는 중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 제 2 가상 GPIO 패킷을 하나 이상의 주변장치 디바이스들로 송신하는 수단을 더 포함할 수도 있다.
일 양태에서, 집적 회로에서 동작하는 방법이 제공된다. 집적 회로는 중앙 처리 유닛과는 독립적으로 하나 이상의 주변장치 디바이스들에 대한 GPIO 신호들의 세트를 획득한다. 집적 회로는 GPIO 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하며, 여기서, GPIO 신호들의 세트와 연관된 마스크 신호들의 세트는 가상 GPIO 패킷에 포함된다. 집적 회로는 중앙 처리 유닛과는 독립적으로 하나 이상의 주변장치 디바이스들의 하나 이상의 GPIO 핀들을 구성하기 위한 구성 신호들의 세트를 획득한다. 집적 회로는 구성 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하며, 여기서, 구성 신호들의 세트와 연관된 마스크 신호들의 세트는 가상 GPIO 패킷에 포함된다. 집적 회로는 맵핑 테이블에 기초하여 GPIO 신호들의 세트 및 구성 신호들의 세트를 가상 GPIO 패킷에서의 미리 결정된 비트 위치들에 맵핑한다. 집적 회로는 GPIO 신호들의 세트 및 구성 신호들의 세트를 포함하는 가상 GPIO 패킷을 획득한다. 집적 회로는 중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 가상 GPIO 패킷을 하나 이상의 주변장치 디바이스들로 송신한다.
일 양태에서, 장치가 제공된다. 본 장치는 중앙 처리 유닛과는 독립적으로 하나 이상의 주변장치 디바이스들에 대한 GPIO 신호들의 세트를 획득하는 수단을 포함할 수도 있다. 본 장치는 GPIO 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하는 수단을 더 포함할 수도 있으며, 여기서, GPIO 신호들의 세트와 연관된 마스크 신호들의 세트는 가상 GPIO 패킷에 포함된다. 본 장치는 중앙 처리 유닛과는 독립적으로 하나 이상의 주변장치 디바이스들의 하나 이상의 GPIO 핀들을 구성하기 위한 구성 신호들의 세트를 획득하는 수단을 더 포함할 수도 있다. 본 장치는 구성 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하는 수단을 더 포함할 수도 있으며, 여기서, 구성 신호들의 세트와 연관된 마스크 신호들의 세트는 가상 GPIO 패킷에 포함된다. 본 장치는 맵핑 테이블에 기초하여 GPIO 신호들의 세트 및 구성 신호들의 세트를 가상 GPIO 패킷에서의 미리 결정된 비트 위치들에 맵핑하는 수단을 더 포함할 수도 있다. 본 장치는 GPIO 신호들의 세트 및 구성 신호들의 세트를 포함하는 가상 GPIO 패킷을 획득하는 수단을 더 포함할 수도 있다. 본 장치는 중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 가상 GPIO 패킷을 하나 이상의 주변장치 디바이스들로 송신하는 수단을 더 포함할 수도 있다.
일 양태에서, 집적 회로에서 동작하는 방법이 제공된다. 집적 회로는 제 1 주변장치 디바이스로부터 I3C 버스를 통해서 가상 GPIO 패킷을 포함하는 제 1 I3C 프레임을 수신하며, 여기서, 가상 GPIO 패킷은 I3C 프레임에 캡슐화된다. 집적 회로는 제 1 I3C 프레임으로부터 가상 GPIO 패킷을 획득하고, 적어도 하나의 제 1 GPIO 신호의 변화된 상태를 결정하기 위해 맵핑 테이블에 기초하여 가상 GPIO 패킷 내의 제 1 가상 GPIO 페이로드를 맵핑하고, 적어도 하나의 제 1 GPIO 신호의 변화된 상태를 적어도 하나의 제 2 GPIO 신호의 변화된 상태로 집성하고, 그리고 I3C 버스를 통해서 제 2 I3C 프레임을 제 2 주변장치 디바이스로 송신하며, 여기서, 제 2 I3C 프레임은 적어도 하나의 제 2 GPIO 신호의 변화된 상태를 시그널링하는 제 2 가상 GPIO 페이로드를 포함한다. 일 양태에서, 제 2 I3C 프레임은 브로드캐스트 I3C 프레임으로서 제 2 주변장치 디바이스로 송신된다. 일 양태에서, 브로드캐스트 I3C 프레임은 마스크된 브로드캐스트 I3C 프레임을 포함한다. 일 양태에서, 제 2 I3C 프레임은 다이렉트된 I3C 프레임으로서 제 2 주변장치 디바이스로 송신된다. 일 양태에서, 다이렉트된 I3C 프레임은 마스크된 다이렉트된 I3C 프레임을 포함한다. 일 양태에서, 집적 회로는 적어도 하나의 제 1 GPIO 신호의 변화된 상태에 응답하여 호스트 프로세서를 인터럽트할 수도 있다.
일 양태에서, 장치가 제공된다. 본 장치는 제 1 주변장치 디바이스로부터 I3C 버스를 통해서 가상 GPIO 패킷을 포함하는 제 1 I3C 프레임을 수신하는 수단을 포함할 수도 있으며, 여기서, 가상 GPIO 패킷은 I3C 프레임에 캡슐화된다. 본 장치는 제 1 I3C 프레임으로부터 가상 GPIO 패킷을 획득하는 수단; 적어도 하나의 제 1 GPIO 신호의 변화된 상태를 결정하기 위해 맵핑 테이블에 기초하여 가상 GPIO 패킷 내의 제 1 가상 GPIO 페이로드를 맵핑하는 수단; 적어도 하나의 제 1 GPIO 신호의 변화된 상태를 적어도 하나의 제 2 GPIO 신호의 변화된 상태로 집성하는 수단; 및/또는 I3C 버스를 통해서 제 2 I3C 프레임을 제 2 주변장치 디바이스로 송신하는 수단을 더 포함할 수도 있으며, 여기서, 제 2 I3C 프레임은 적어도 하나의 제 2 GPIO 신호의 변화된 상태를 시그널링하는 제 2 가상 GPIO 페이로드를 포함한다. 일 양태에서, 제 2 I3C 프레임은 브로드캐스트 I3C 프레임으로서 제 2 주변장치 디바이스로 송신된다. 일 양태에서, 브로드캐스트 I3C 프레임은 마스크된 브로드캐스트 I3C 프레임을 포함한다. 일 양태에서, 제 2 I3C 프레임은 다이렉트된 I3C 프레임으로서 제 2 주변장치 디바이스로 송신된다. 일 양태에서, 다이렉트된 I3C 프레임은 마스크된 다이렉트된 I3C 프레임을 포함한다. 일 양태에서, 본 장치는 적어도 하나의 제 1 GPIO 신호의 변화된 상태에 응답하여 호스트 프로세서를 인터럽트할 수도 있다.
일 양태에서, 집적 회로에서 동작하는 방법이 제공된다. 집적 회로는 집적 회로의 구성 단계 동안 호스트 디바이스로부터 I3C 버스를 통해서 맵핑 테이블을 수신한다. 집적 회로는 중앙 처리 유닛과는 독립적으로 호스트 디바이스로부터 I3C 버스를 통해서 가상 GPIO 패킷을 포함하는 I3C 프레임을 수신하며, 여기서, 가상 GPIO 패킷은 I3C 프레임에 캡슐화된다. 집적 회로는 중앙 처리 유닛과는 독립적으로 집적 회로와 연관된 GPIO 신호들의 세트 및 구성 신호들의 세트를 포함하는 가상 GPIO 패킷을 획득한다. 집적 회로는 맵핑 테이블에 기초하여 가상 GPIO 패킷에서의 미리 결정된 비트 위치들에서 GPIO 신호들의 세트 및 구성 신호들의 세트를 식별한다. 집적 회로는 변화된 상태를 갖는 것으로 마스크 비트로 표시되는 GPIO 신호들의 세트의 각각을 식별한다. 집적 회로는 변화된 상태를 갖는 것으로 마스크 비트로 표시되는 구성 신호들의 세트의 각각을 식별하고 GPIO 신호들의 세트 및 구성 신호들의 세트를 획득한다.
일 양태에서, 장치가 제공된다. 본 장치는 집적 회로의 구성 단계 동안 호스트 디바이스로부터 I3C 버스를 통해서 맵핑 테이블을 수신하는 수단을 포함할 수도 있다. 본 장치는 중앙 처리 유닛과는 독립적으로 호스트 디바이스로부터 I3C 버스를 통해서 가상 GPIO 패킷을 포함하는 I3C 프레임을 수신하는 수단을 더 포함할 수도 있으며, 여기서, 가상 GPIO 패킷은 I3C 프레임에 캡슐화된다. 본 장치는 중앙 처리 유닛과는 독립적으로 집적 회로와 연관된 GPIO 신호들의 세트 및 구성 신호들의 세트를 포함하는 가상 GPIO 패킷을 획득하는 수단을 더 포함할 수도 있다. 본 장치는 맵핑 테이블에 기초하여 가상 GPIO 패킷에서의 미리 결정된 비트 위치들에서 GPIO 신호들의 세트 및 구성 신호들의 세트를 식별하는 수단을 더 포함할 수도 있다. 본 장치는 변화된 상태를 갖는 것으로 마스크 비트로 표시되는 GPIO 신호들의 세트의 각각을 식별하는 수단을 더 포함할 수도 있다. 본 장치는 변화된 상태를 갖는 것으로 마스크 비트로 표시되는 구성 신호들의 세트의 각각을 식별하는 수단; 및/또는 GPIO 신호들의 세트 및 구성 신호들의 세트를 획득하는 수단을 더 포함할 수도 있다.
집적 회로는 하나 이상의 주변장치 디바이스들과 통신하도록 구성된 통신 인터페이스; 및 통신 인터페이스에 커플링된 프로세싱 회로를 포함한다. 프로세싱 회로는 제 1 주변장치 디바이스로부터 I3C 버스를 통해서 가상 범용 입력/출력 (GPIO) 패킷을 포함하는 제 1 I3C 프레임을 수신하는 것으로서, 가상 GPIO 패킷은 I3C 프레임에 캡슐화되는, 상기 수신하고; 제 1 I3C 프레임으로부터 가상 GPIO 패킷을 획득하고; 적어도 하나의 제 1 GPIO 신호의 변화된 상태를 결정하기 위해 맵핑 테이블에 기초하여 가상 GPIO 패킷 내의 제 1 가상 GPIO 페이로드를 맵핑하고; 적어도 하나의 제 1 GPIO 신호의 변화된 상태를 적어도 하나의 제 2 GPIO 신호의 변화된 상태로 집성하고; 그리고 I3C 버스를 통해서 제 2 I3C 프레임을 제 2 주변장치 디바이스로 송신하도록 구성되며, 여기서, 제 2 I3C 프레임은 적어도 하나의 제 2 GPIO 신호의 변화된 상태를 시그널링하는 제 2 가상 GPIO 페이로드를 포함한다. 일 양태에서, 제 2 I3C 프레임은 브로드캐스트 I3C 프레임으로서 제 2 주변장치 디바이스로 송신된다. 일 양태에서, 브로드캐스트 I3C 프레임은 마스크된 브로드캐스트 I3C 프레임을 포함한다. 일 양태에서, 제 2 I3C 프레임은 다이렉트된 I3C 프레임으로서 제 2 주변장치 디바이스로 송신된다. 일 양태에서, 다이렉트된 I3C 프레임은 마스크된 다이렉트된 I3C 프레임을 포함한다. 일 양태에서, 프로세싱 회로는 적어도 하나의 제 1 GPIO 신호의 변화된 상태에 응답하여 호스트 프로세서를 인터럽트하도록 더 구성된다.
집적 회로에서 동작하는 방법이 제공된다. 본 방법은 제 1 주변장치 디바이스로부터 I3C 버스를 통해서 가상 GPIO 패킷을 포함하는 제 1 I3C 프레임을 수신하는 단계로서, 가상 GPIO 패킷은 I3C 프레임에 캡슐화되는, 상기 수신하는 단계; 제 1 I3C 프레임으로부터 가상 GPIO 패킷을 획득하는 단계; 및 적어도 하나의 제 1 GPIO 신호의 변화된 상태를 결정하기 위해 맵핑 테이블에 기초하여 가상 GPIO 패킷 내의 제 1 가상 GPIO 페이로드를 맵핑하는 단계를 포함한다. 본 방법은 적어도 하나의 제 1 GPIO 신호의 변화된 상태를 적어도 하나의 제 2 GPIO 신호의 변화된 상태로 집성하는 단계; 및 I3C 버스를 통해서 제 2 I3C 프레임을 제 2 주변장치 디바이스로 송신하는 단계를 더 포함하며, 여기서, 제 2 I3C 프레임은 적어도 하나의 제 2 GPIO 신호의 변화된 상태를 시그널링하는 제 2 가상 GPIO 페이로드를 포함한다. 일 양태에서, 제 2 I3C 프레임은 브로드캐스트 I3C 프레임으로서 제 2 주변장치 디바이스로 송신된다. 일 양태에서, 브로드캐스트 I3C 프레임은 마스크된 브로드캐스트 I3C 프레임을 포함한다. 일 양태에서, 제 2 I3C 프레임은 다이렉트된 I3C 프레임으로서 제 2 주변장치 디바이스로 송신된다. 일 양태에서, 다이렉트된 I3C 프레임은 마스크된 다이렉트된 I3C 프레임을 포함한다. 일 양태에서, 본 방법은 적어도 하나의 제 1 GPIO 신호의 변화된 상태에 응답하여 호스트 프로세서를 인터럽트하는 단계를 더 포함한다.
일 양태에서, 장치가 제공된다. 본 장치는 제 1 주변장치 디바이스로부터 I3C 버스를 통해서 가상 GPIO 패킷을 포함하는 제 1 I3C 프레임을 수신하는 수단으로서, 가상 GPIO 패킷은 I3C 프레임에 캡슐화되는, 상기 수신하는 수단; 제 1 I3C 프레임으로부터 가상 GPIO 패킷을 획득하는 수단; 및 적어도 하나의 제 1 GPIO 신호의 변화된 상태를 결정하기 위해 맵핑 테이블에 기초하여 가상 GPIO 패킷 내의 제 1 가상 GPIO 페이로드를 맵핑하는 수단을 포함할 수도 있다. 본 장치는 적어도 하나의 제 1 GPIO 신호의 변화된 상태를 적어도 하나의 제 2 GPIO 신호의 변화된 상태로 집성하는 수단; 및/또는 I3C 버스를 통해서 제 2 I3C 프레임을 제 2 주변장치 디바이스로 송신하는 수단을 더 포함할 수도 있으며, 여기서, 제 2 I3C 프레임은 적어도 하나의 제 2 GPIO 신호의 변화된 상태를 시그널링하는 제 2 가상 GPIO 페이로드를 포함한다. 일 양태에서, 제 2 I3C 프레임은 브로드캐스트 I3C 프레임으로서 제 2 주변장치 디바이스로 송신된다. 일 양태에서, 브로드캐스트 I3C 프레임은 마스크된 브로드캐스트 I3C 프레임을 포함한다. 일 양태에서, 제 2 I3C 프레임은 다이렉트된 I3C 프레임으로서 제 2 주변장치 디바이스로 송신된다. 일 양태에서, 다이렉트된 I3C 프레임은 마스크된 다이렉트된 I3C 프레임을 포함한다. 일 양태에서, 본 방법은 적어도 하나의 제 1 GPIO 신호의 변화된 상태에 응답하여 호스트 프로세서를 인터럽트하는 단계를 더 포함한다.
일 양태에서, 집적 회로가 제공된다. 집적 회로는 GPIO 신호들의 세트를 수신하고 중앙 처리 유닛과는 독립적으로 GPIO 신호들의 세트를 가상 GPIO 패킷으로 패키징하도록 구성된 유한 상태 머신; 및 I2C 프레임을 I2C 버스를 통해서 복수의 주변장치 디바이스들로 송신하도록 구성된 I2C 인터페이스를 포함하며, 여기서, 가상 GPIO 패킷은 I2C 프레임에 캡슐화된다.
일 양태에서, 집적 회로가 제공된다. 집적 회로는 GPIO 신호들의 세트를 수신하고 중앙 처리 유닛과는 독립적으로 GPIO 신호들의 세트를 가상 GPIO 패킷으로 패키징하도록 구성된 유한 상태 머신; 및 I3C 프레임을 I3C 버스를 통해서 복수의 주변장치 디바이스들로 송신하도록 구성된 I3C 인터페이스를 포함하며, 여기서, 가상 GPIO 패킷은 I3C 프레임에 캡슐화된다.
집적 회로 (예컨대, 호스트 디바이스) 에서 동작하는 방법이 제공된다. 본 방법은 호스트 디바이스에서, 제 1 주변장치 디바이스로부터 I2C 버스 (또는, I3C 버스) 를 통해서 캡슐화된 가상 GPIO 패킷을 포함하는 제 1 I2C 프레임 (또는, 제 1 I3C 프레임) 을 수신하는 단계; 호스트 디바이스 내 I2C 인터페이스 (또는, I3C 인터페이스) 에서, 제 1 I2C 프레임으로부터 가상 GPIO 패킷을 복원하여 가상 GPIO 패킷을 유한 상태 머신으로 전송하는 단계; 호스트 디바이스 내 유한 상태 머신에서, VGI 패킷 내 제 1 가상 GPIO 페이로드를 적어도 하나의 제 1 GPIO 신호의 변화된 상태에 맵핑하는 단계; 유한 상태 머신에서, 적어도 하나의 제 1 GPIO 신호의 변화된 상태를 적어도 하나의 제 2 GPIO 신호의 변화된 상태로 집성하는 단계; 및 I2C 버스를 통해서 제 2 I2C 프레임을 호스트 디바이스로부터 제 2 주변장치 디바이스로 송신하는 단계를 포함하며, 여기서, 제 2 I2C 프레임은 적어도 하나의 제 2 GPIO 신호의 변화된 상태를 시그널링하는 제 2 가상 GPIO 페이로드를 포함한다.
본 개시물의 이들 및 다른 양태들은 이어지는 상세한 설명의 검토 시 좀더 완전하게 이해될 것이다. 본 개시물의 다른 양태들, 특징들 및 구현예들은, 첨부 도면들과 함께 본 개시물의 특정의 구현예들의 다음 설명을 검토하면, 당업자들에게 더욱 자명해질 것이다. 본 개시물의 특징들이 아래에 어떤 구현예들 및 도면들과 관련하여 설명될 수도 있지만, 본 개시물의 모든 구현예들은 본원에서 설명된 유리한 특징들 중 하나 이상을 포함할 수 있다. 다시 말해서, 하나 이상의 구현예들이 어떤 유리한 특징들을 가진 것으로 설명될 수도 있지만, 이러한 특징들의 하나 이상이 본원에서 설명된 여러 구현예들에 따라서 또한 사용될 수도 있다. 유사한 방식으로, 어떤 구현예들이 아래에 디바이스, 시스템 또는 방법 구현예들로서 설명될 수도 있지만, 이러한 구현예들은 여러 디바이스들, 시스템들 및 방법들로 구현될 수 있는 것으로 이해되어야 한다.
도 1 은 예시적인 종래의 범용 입력/출력 (GPIO) 네트워크의 블록도를 예시한다.
도 2a 는 예시적인 멀티-노드 GPIO 네트워크의 블록도를 예시한다.
도 2b 는 예시적인 GPIO 네트워크에서의 예시적인 I/O 브릿징 시나리오를 예시한다.
도 2b 는 예시적인 GPIO 네트워크에서의 예시적인 I/O 브릿징 시나리오를 예시한다.
도 3 은 본 개시물의 여러 양태들에 따른, 예시적인 GPIO 네트워크의 블록도를 예시한다.
도 4 는 본 개시물의 다양한 양태들에 따른, 예시적인 I/O 맵핑 테이블을 예시한다.
도 5 는 예시적인 종래의 GPIO 네트워크를 예시한다.
도 6 은 본 개시물의 일 양태들에 따른, 예시적인 네트워크를 예시한다.
도 7 은 본 개시물의 일 양태들에 따른, 예시적인 네트워크를 예시한다.
도 8 은 예시적인 브로드캐스트 프레임을 예시한다.
도 9 는 예시적인 마스크된 브로드캐스트 프레임을 예시한다.
도 10 은 다이렉트된 (어드레스된) I2C/I3C VGPIO 프레임을 예시한다.
도 11 은 마스크된 다이렉트된 프레임을 예시한다.
도 12 는 예시적인 VGI 유한 상태 머신 (FSM) 의 세부 사항들을 예시한다.
도 13 은 예시적인 맵핑 테이블을 예시한다.
도 14a 는 예시적인 가상 GPIO 인터페이스 (VGI) 패킷을 예시한다.
도 14b 는 예시적인 다이렉트된 I2C/I3C 프레임을 예시한다.
도 14c 는 예시적인 다이렉트된 I2C/I3C 프레임을 예시한다.
도 14d 는 예시적인 브로드캐스트 I2C/I3C 프레임을 예시한다.
도 15 는 본 개시물의 여러 양태들에 따른, 예시적인 범용 입력/출력 (GPIO) 네트워크의 블록도를 예시한다.
도 16a 는 호스트 디바이스가 원격 디바이스와 통신하는 단일 VGI FSM 을 포함하는 GPIO 네트워크를 예시한다.
도 16b 는 호스트 디바이스가 원격 디바이스와 통신하는 다수의 VGI FSM들을 포함하는 GPIO 네트워크를 예시한다.
도 17 은 VGI FSM 의 블록도이다.
도 18 은 예시적인 VGI 구현예들을 예시하는 다이어그램이다.
도 19 는 예시적인 범용 입력/출력 (GPIO) 네트워크의 블록도를 예시한다.
도 20 은 호스트 시스템 온 칩 (SoC) 의 I/O들 및 목적지 주변장치들의 I/O들을 맵핑하기 위한 예시적인 호스트 테이블을 예시한다.
도 21 은 예시적인 범용 입력/출력 (GPIO) 네트워크의 블록도를 예시한다.
도 22 는 본 개시물의 여러 양태들에 따른, 예시적인 범용 입력/출력 (GPIO) 네트워크의 블록도를 예시한다.
도 23 은 예시적인 I/O 구성들을 예시하는 다이어그램이다.
도 24 는 핀 구성 레지스터의 예시적인 구성을 예시하는 다이어그램이다.
도 25 는 다이렉트 I/O 맵핑 레지스터를 예시하는 다이어그램이다.
도 26a 는 마스크를 구현하는 메시지-전용 메시지 포맷의 일 예를 예시하는 다이어그램이다.
도 26b 는 마스크를 구현하지 않는 메시지-전용 포맷의 일 예를 예시하는 다이어그램이다.
도 27a 는 마스크를 구현하는 이벤트-전용 메시지 포맷의 일 예를 예시하는 다이어그램이다.
도 27b 는 마스크를 구현하지 않는 이벤트-전용 메시지 포맷 (2750) 의 일 예를 예시하는 다이어그램이다.
도 28 은 본 개시물의 여러 양태들에 따른, 병합된 메시지 포맷의 일 예를 예시하는 다이어그램이다.
도 29 는 본 개시물의 여러 양태들에 따른, 병합된 메시지를 이용한 기록 동작을 위한 브로드캐스트 메시징의 일 예를 예시하는 다이어그램이다.
도 30 은 본 개시물의 여러 양태들에 따른, 병합된 메시지를 이용한 기록 동작을 위한 마스크된 브로드캐스트 메시징의 일 예를 예시하는 다이어그램이다.
도 31 은 본 개시물의 여러 양태들에 따른, 병합된 메시지를 이용한 기록 동작을 위한 다이렉트 메시징의 일 예를 예시하는 다이어그램이다.
도 32 는 본 개시물의 여러 양태들에 따른, 병합된 메시지를 이용한 기록 동작을 위한 마스크된 다이렉트 메시징의 일 예를 예시하는 다이어그램이다.
도 33 은 본 개시물의 여러 양태들에 따른, 병합된 메시지를 이용한 판독 동작을 위한 다이렉트 메시징의 일 예를 예시하는 다이어그램이다.
도 34 는 본 개시물의 여러 양태들에 따른, 병합된 메시지를 이용한 판독 동작을 위한 마스크된 다이렉트 메시징의 일 예를 예시하는 다이어그램이다.
도 35 는 본 개시물의 여러 양태들에 따른, 다수의 바로 인접한 비트 값들과 연관된 마스크 비트들을 포함하는 맵핑된 비트들을 나타낸다.
도 36 은 본 개시물의 여러 양태들에 따른, VGI FSM 에서의 전력 관리 유닛을 예시하는 다이어그램이다.
도 37 은 본 개시물의 적어도 하나의 예에 따른 장치의 선택 컴포넌트들을 예시하는 블록도이다.
도 38 (38a 및 38b) 은 본 개시물의 다양한 양태들에 따른 방법을 예시하는 플로우차트이다.
도 39 는 본 개시물의 다양한 양태들에 따른 방법을 예시하는 플로우차트이다.
도 40 은 본 개시물의 다양한 양태들에 따른 방법을 예시하는 플로우차트이다.
도 41 은 본 개시물의 적어도 하나의 예에 따른 장치의 선택 컴포넌트들을 예시하는 블록도이다.
도 42 는 본 개시물의 다양한 양태들에 따른 방법을 예시하는 플로우차트이다.
도 43 은 시스템 온 칩 (SoC) 디바이스 및 주변장치 디바이스들을 포함하는 예시적인 시스템을 예시한다.
첨부 도면을 참조하여 아래에 개시된 상세한 설명은 여러 구성들의 설명으로서 의도되며, 본원에서 설명되는 컨셉들이 실시될 수도 있는 구성들만을 오직 나타내려는 의도는 아니다. 상세한 설명은 여러 컨셉들의 완전한 이해를 제공하는 목적을 위한 구체적인 세부 사항들을 포함한다. 그러나, 이들 컨셉들이 이들 구체적인 세부 사항들 없이도 실시될 수도 있음은 당업자들에게 자명할 것이다. 일부의 경우, 널리 공지된 구조들 및 컴포넌트들은 이러한 컨셉들을 흐리는 것을 피하기 위해 블록도 형태로 도시된다.
도 1 은 예시적인 범용 입력/출력 (GPIO) 네트워크 (100) 의 블록도를 예시한다. 도 1 에 나타낸 바와 같이, 호스트 디바이스 (102) 는 집적 회로 간 (I2C) 버스 (103) 를 통해서 다수의 주변장치 디바이스들에 커플링되며, I2C 버스 (103) 는 I2C 분야에서 알려져 있는 바와 같이, 데이터 라인 (126) 및 클록 라인 (128) 을 포함한다. 일 양태에서, 호스트 디바이스 (102) 는 시스템 온 칩 (SoC) 디바이스일 수도 있다. 예를 들어, 도 1 에 나타낸 바와 같이, 주변장치 디바이스들은 가속도계 및 자력계 (104), 가속도계 (106), 자이로 센서 (108), 주변 광 센서 (ALS) 및 근접 센서 (110), 고도계 (112), 나침반 (114), 그립 센서 (116), 근접 장 통신 디바이스 (118), 지문 센서 (120), 아날로그 대 디지털 변환기 (122), 및/또는 터치스크린 (124) 을 포함할 수도 있다. 도 1 에 나타낸 바와 같이, 주변장치 디바이스들 (예컨대, 가속도계 및 자력계 (104), 가속도계 (106), 자이로 센서 (108), 주변 광 센서 (ALS) 및 근접 센서 (110), 고도계 (112), 나침반 (114), 그립 센서 (116), 및/또는 근접 장 통신 디바이스 (118)) 이 I2C 버스 (103) 를 이용하여 호스트 디바이스 (102) 와 통신할 수도 있지만, 호스트 (102) 및 주변장치 디바이스들은 측파대 신호들에 대해, 예컨대, 인터럽트 신호들 (예컨대, 데이터 준비 인터럽트 (DRI) 신호들)) 및/또는 하드웨어 이벤트들 (예컨대, 인에이블들, 및 리셋들) 에 대해 추가적인 라인들을 필요로 할 수도 있다. 예를 들어, 가속도계 및 자력계 (104) 는 제 1 DRI 신호 (130) 를 제 1 전용 라인 (또한, 제 1 전용 상호접속부로서 지칭됨) 을 통해서 호스트 디바이스 (102) 로 송신할 필요가 있을 수도 있으며, 나침반 (114) 은 제 2 DRI 신호 (132) 를 제 2 전용 라인 (또한, 제 2 전용 상호접속부로서 지칭됨) 을 통해서 호스트 디바이스 (102) 로 송신할 필요가 있을 수도 있다. 다른 예에서, 호스트 디바이스 (102) 는 인에이블 신호 (134) 를 제 3 전용 라인 (또한, 제 3 전용 상호접속부로서 지칭됨) 을 통해서 송신할 필요가 있을 수도 있다. I2C 버스 라인들에 추가하여 이러한 추가적인 전용 라인들 (예컨대, 앞에서 설명된 제 1, 제 2, 및 제 3 전용 라인들) 은 호스트 디바이스 (102) 에서 대응하는 개수의 추가적인 핀들을 필요로 할 수도 있다는 점에 유의해야 한다.
도 2a 는 예시적인 멀티-노드 GPIO 네트워크 (200) 의 블록도를 예시한다. 멀티-노드 GPIO 네트워크 (200) 는 호스트 디바이스 (202) 및 n 개의 주변장치 디바이스들 (예컨대, 주변장치 디바이스 #1 (204), 주변장치 디바이스 #2 (206), 주변장치 디바이스 #3 (208), 주변장치 디바이스 #(n-1) (210), 및 주변장치 디바이스 #n (212)) 을 포함한다. 일 양태에서, 호스트 디바이스 (202) 는 SoC 디바이스일 수도 있다. 일 양태에서, 호스트 디바이스 (202) 는 버스 (214), GPIO 입력 핀 (226), 및 GPIO 출력 핀 (228) 을 통해서 신호들을 통신하기 위한 I2C/I3C 포트 (216) 를 포함할 수도 있다. 도 2a 에 나타낸 바와 같이, 호스트 디바이스 (202) 는 클록 라인 (218) 및 데이터 라인 (220) 을 포함할 수도 있는 버스 (214) 를 통해서 주변장치 디바이스들에 커플링된다. 일 양태에서, 버스 (214) 는 I2C 버스 또는 I3C 버스일 수도 있다. 일 양태에서, 버스 (214) 가 I3C 버스로서 구현될 때, 노드들 (예컨대, 주변장치들 (204, 206, 208, 210, 및 212)) 사이의 입력/출력 (I/O) 이벤트들 (또한, 하드웨어 이벤트들, 하드웨어 입력/출력 이벤트들, 또는 GPIO들로서 지칭됨) 의 교환은 호스트 디바이스 (202) 에서의 중앙 처리 유닛들 (CPUs) 의 개입을 필요로 할 수도 있다. 일 예에서, I/O 이벤트를 원격 노드로 송신해야 하는 제 1 노드는 그의 대응하는 제 1 CPU 를 인터럽트해야 한다. 제 1 CPU 는 I/O 이벤트를 표시하는 메시지를 원격 노드에 포뮬레이트할 수도 있다. 원격 노드에 대응하는 제 2 CPU 는 필요할 경우 이벤트를 I/O 이벤트로 변환하는 것을 포함하여, 메시지를 프로세싱하기 위해 각성되어야 한다. 따라서, I/O 이벤트들이 노드들 (예컨대, 주변장치들 (204, 206, 208, 210, 및/또는 212)) 사이에 통신되어야 하는 상황들 (또한, I/O 브릿징으로서 지칭됨) 이 호스트 디바이스 (202) 에 의한 빈번한 웨이크-업 및 프로세싱을 필요로 할 수도 있으며, 따라서, 시스템에서 전체적으로 더 높은 소비 전력을 초래할 수도 있다. 더욱이, 멀티-노드 접속된 주변장치들이 다수의 측파대 신호들 (예컨대, 측파대 GPIO들 (215)) 을 이용하는 상황들은 호스트 디바이스 (202) 및 주변장치들 상의 다수의 핀들을 소비할 수 있어, 더 높은 패키지 비용들을 초래할 수도 있다.
도 2b 는 예시적인 GPIO 네트워크 (200) 에서의 예시적인 I/O 브릿징 시나리오를 예시한다. 이 예에서, 주변장치 (204) 로부터 유래하는 I/O 이벤트 "A" (예컨대, 상호접속부 (222) 를 통해서 송신된 I/O 이벤트 신호 A (230)) 는 호스트 디바이스 (202) 로 하여금, 주변장치 (206) 에서 종결하는 I/O 이벤트 "B" (예컨대, 상호접속부 (224) 를 통해서 송신된 I/O 이벤트 신호 B (232)) 를 발생시킬 수 있게 한다. 따라서, 이 예는 주변장치 대 주변장치 I/O 브릿징을 수반한다. 따라서, 이 예에서, 호스트 디바이스 (202) 가 I/O 이벤트 "A" 및 I/O 이벤트 "B" 의 프로세싱에 관여된다.
도 2c 는 예시적인 GPIO 네트워크 (200) 에서의 예시적인 I/O 브릿징 시나리오를 예시한다. 이 예에서, 주변장치 (208) 로부터 유래하는 I/O 이벤트 "A" (예컨대, 상호접속부 (234) 를 통해서 송신되는 I/O 이벤트 신호 A (236)) 및 호스트 디바이스 (202) 자신으로부터 유래하는 다른 I/O 이벤트 "B" (예컨대, GPIO 입력 핀 (226) 에서 수신되는 I/O 이벤트 신호 B (238)) 는 호스트 디바이스 (202) 로 하여금, 최종 I/O 이벤트 "C" (예컨대, 상호접속부 (240) 를 통해서 송신되는 I/O 이벤트 신호 C (240)) 를 I2C 버스 트랜잭션을 이용하여 주변장치 (210) 로 발생시키게 한다. 따라서, 이 예는 호스트 디바이스 (202) 가 I/O 이벤트들 A, B 및 C 의 프로세싱에 관여되는 이종적인 경우를 포함한다. 본원에서 설명하는 양태들에 따르면, I/O 이벤트들 A 및 B 에 대한 호스트 디바이스 (202) 의 개입이 I/O 브릿징/집성에 의해 회피될 수도 있다.
도 3 은 본 발명의 다양한 양태들에 따른, 예시적인 GPIO 네트워크 (300) 의 블록도를 예시한다. GPIO 네트워크 (300) 는 호스트 디바이스 (302) 및 n 개의 주변장치 디바이스들 (예컨대, 주변장치 디바이스 #1 (304), 주변장치 디바이스 #2 (306), 주변장치 디바이스 #3 (308), 주변장치 디바이스 #(n-1) (310), 및 주변장치 디바이스 #n (312)) 을 포함한다. 일 양태에서, 호스트 디바이스 (302) 는 SoC 디바이스일 수도 있다. 도 3 에 나타낸 바와 같이, 호스트 디바이스 (302) 는 클록 라인 (332) 및 데이터 라인 (334) 을 포함할 수도 있는 버스 (314) 를 통해서 주변장치 디바이스들에 커플링된다. 버스 (314) 는 I2C 버스 또는 I3C 버스일 수도 있다. 일 양태에서, 호스트 디바이스 (302) 는 GPIO 입력 핀 (328), GPIO 출력 핀 (330), 및 I2C/I3C 지적 재산 (intellectual property) 블록 (316) 을 포함할 수도 있다. 예를 들어, I2C/I3C 지적 재산 블록 (316) 은 I2C/I3C 통신 프로토콜들을 이용하여 통신용으로 구성된 데이터를 획득하거나 및/또는 프로세싱할 수도 있다.
도 3 에 추가로 나타낸 바와 같이, 호스트 디바이스 (302) 는 가상 GPIO 유한 상태 머신 (VGI FSM) (318) 을 포함할 수도 있다. VGI FSM (318) 은 I2C/I3C IP 블록 (316) 과 통신할 수도 있으며 버스 (314) 를 통해서 신호들을 송신하고 수신할 수도 있다. 일 양태에서, VGI FSM (318) 은 I/O 맵퍼 (mapper) 및 메시지 포맷터 (formatter) (320) 및 I/O 집성 블록 (322) 을 포함할 수도 있다. 일 양태에서, I/O 맵퍼 및 메시지 포맷터 (320) 는 구성가능한 I/O 맵핑 테이블을 VGI FSM (318) 내에 구현하는 디바이스일 수도 있다. 일 양태에서, 이러한 구성가능한 I/O 맵핑 테이블은 GPIO 네트워크 (300) 의 초기화 동안 구성될 수도 있다. 일 양태에서, 그리고 본원에서 자세히 설명되는 바와 같이, I/O 맵핑 테이블은 소스 주변장치 디바이스 (예컨대, GPIO 네트워크 (300) 에서의 발신 노드) 로부터의 I/O 의 접속을 대응하는 목적지 주변장치 디바이스 (예컨대, GPIO 네트워크 (300) 에서의 목적지 노드) 에 맵핑할 수도 있다. 예를 들어, I/O 맵핑 테이블은 하나 이상의 엔트리들의 리스트를 포함할 수도 있다. 이러한 예에서, 각각의 엔트리는 소스 주변장치 디바이스의 I/O 넘버 및 소스 주변장치 디바이스의 어드레스 및 목적지 주변장치 디바이스의 대응하는 I/O 넘버 및 목적지 주변장치 디바이스의 어드레스를 기술할 수도 있다. 일 양태에서, 소스 주변장치 디바이스로부터 목적지 주변장치 디바이스로 통신될 I/O 는 I2C/I3C 표준들을 이용하여 포맷된 메시지에 포함될 수도 있다. 이러한 방법으로, 메시지는 호스트 디바이스 (302) 를 개입시킴이 없이 주변장치 디바이스들 사이의 I/O 상태 교환을 가능하게 하기 위해서 VGI FSM (318) 에 의해 프로세싱될 수도 있다.
도 4 는 본 개시물의 여러 양태들에 따른, 예시적인 I/O 맵핑 테이블 (400) 을 예시한다. 도 4 에 나타낸 바와 같이, I/O 맵핑 테이블 (400) 은 소스 주변장치 I/O 넘버 (408), 소스 주변장치 어드레스 (410), 목적지 주변장치 I/O 넘버 (412), 목적지 주변장치 어드레스 (414) 를 포함한다. 도 4 에 추가로 나타낸 바와 같이, I/O 맵핑 테이블 (400) 은 예시적인 엔트리들 (402, 404, 및 406) 과 같은 하나 이상의 엔트리들을 포함할 수도 있다. I/O 맵핑 테이블 (400) 의 엔트리 (402) 는 도 2b 를 참조하여 설명된 시나리오에 대응하며, I/O 맵핑 테이블 (400) 의 엔트리들 (404 및 406) 은 도 2c 를 참조하여 설명된 시나리오에 대응한다. 예를 들어, 도 2b 를 참조하면, 엔트리 (402) 는 (어드레스 0x01 과 연관된) 주변장치 #1 (204) 의 I/O 넘버 2 가 (어드레스 0x02 와 연관된) 주변장치 #3 (206) 의 I/O 넘버 3 으로 (예컨대, 도 2b 에서의 상호접속부 (222) 를 통해서) 송신된다는 것을 기술한다.
일 양태에서, 호스트 디바이스 (예컨대, SoC 디바이스) 와 복수의 주변장치 디바이스들 사이의 GPIO 시그널링을 수용하기 위해, 호스트 디바이스 및 각각의 주변장치 디바이스는 VGI FSM 을 포함할 수도 있다. 실제 GPIO 인터페이스와는 대조적으로, VGI FSM 은 전용 GPIO 핀들을 통해서 통신하지 않는다. 대신, 주변장치 디바이스들 및 호스트 디바이스 모두는 결과적으로 I2C 버스에 커플링하는 집적 회로 (I2C) 간 인터페이스를 포함한다. 대안적으로, 호스트 디바이스 및 주변장치 디바이스들은 MIPI 컨소시엄에 의해 정의된 바와 같은 모바일 산업 프로세서 인터페이스 (MIPI) I3C 인터페이스를 각각 포함할 수도 있다. I2C 인터페이스에서 사용되는 2-와이어 버스와 유사하게, I3C 인터페이스에 대한 버스는 또한 2-와이어 버스이다. 따라서, 결과적인 버스는 두 프로토콜들 모두에 대해 실질적으로 동일할 것이기 때문에, 본원에서 I2C/I3C 버스로서 지칭될 것이다.
셋업 단계 동안, 각각의 VGI FSM 은 I2C/I3C 인터페이스로부터 수신된 특정의 비트들을 특정의 GPIO 신호들에 맵핑하는 맵핑 테이블로 구성될 수도 있다. 예를 들어, 종래의 시스템에서, GPIO 신호는 특정의 주변장치 디바이스에서의 특정의 GPIO 핀에 할당되며 호스트 디바이스에서의 특정의 GPIO 핀을 목적지로 할 수도 있다. 이들 GPIO 핀들이 본원에서 개시된 네트워킹 양태들에서 가상화되므로, 대응하는 주변장치 디바이스는 I2C/I3C 버스를 통한 송신용으로 구성된 메시지의 데이터 페이로드에 특정의 가상 GPIO 비트를 대신 구성할 것이다. 일 양태에서, 메시지는 I2C 또는 I3C 프레임으로서 지칭될 수도 있다. GPIO 핀들이 더 이상 사용되지 않기 때문에, 이들은 특정의 GPIO 신호를 식별하는 "입력/출력 넘버들" 로 대체될 수도 있다. I2C 및 I3C 표준들과 일관되게, I2C 또는 I3C 프레임은 가상 GPIO 신호들을 포함하는 것으로 프레임을 식별하는 지령 코드를 가진 헤더를 포함할 수도 있다. 호스트 디바이스에서 지령 코드를 디코딩하는 것에 응답하여, I2C/I3C 인터페이스는 데이터 페이로드에서의 가상 GPIO 비트들을 호스트 디바이스의 VGI FSM 으로 송신한다. 각각의 가상 GPIO 신호는 데이터 페이로드 내에 어떤 위치를 갖는다. 예를 들어, 길이가 8비트인 데이터 페이로드를 고려하자. 데이터 페이로드에서의 제 1 비트는 제 1 가상 GPIO 신호에 대응할 수도 있으며, 제 2 비트는 제 2 가상 GPIO 신호에 대응할 수도 있으며, 기타 등등으로 대응할 수도 있다.
일 양태에서, 모든 VGI FSM들은 I2C/I3C 인터페이스들에 의해 송신되는 바와 같은 가상 GPIO 프레임의 데이터 페이로드 내 가상 GPIO 신호들의 순서를 알 수도 있도록 구성될 수도 있다. 예를 들어, 각각의 VGI FSM 은 이러한 데이터 페이로드 내 가상 GPIO 신호들의 순서를 기술하는 맵핑 테이블을 포함할 수도 있다. 맵핑 테이블에 기초하여, 주어진 디바이스 (예컨대, 주변장치 디바이스 또는 호스트 디바이스) 의 VGI FSM 은 VGI FSM 에게 대응하는 디바이스에서의 프로세서를 인터럽트하도록 요구하는 가상 GPIO 신호의 변화된 상태를 인식할 수도 있다. 하나의 경우, 주변장치 디바이스는 가상 GPIO 신호들을 이용하여 다른 주변장치 디바이스로 시그널링할 수도 있다. 이러한 경우, 송신 주변장치 디바이스는 VGI I2C/I3C 프레임을 호스트 디바이스로 송신할 수도 있다. 호스트 디바이스의 VGI FSM 은 송신 주변장치 디바이스가 대응하는 가상 GPIO 신호로 목표 주변장치 디바이스에 시그널링하려고 한다는 것을 (예컨대, VGI FSM 에서의 맵핑 테이블을 이용하여) 인식할 수도 있다. 호스트 디바이스에서의 VGI FSM 은 목표 디바이스로 향하는 가상 GPIO 신호를 포함하는 데이터 페이로드를 가지는 VGI I2C/I3C 프레임을 송신하도록 호스트 디바이스에서의 I2C/I3C 인터페이스를 트리거할 수도 있다.
일 양태에서, 각각의 디바이스의 VGI FSM 은 가상 GPIO 신호들에서의 변화된 상태들을 집성하도록 구성될 수도 있다. 예를 들어, 호스트 디바이스는 하나의 주변장치 디바이스로부터의 가상 GPIO 신호에서 변화된 상태를 인식할 수도 있으며, 다른 주변장치 디바이스로의 가상 GPIO 신호의 (호스트 디바이스로부터의) 송신을 트리거할 수도 있다. 이 집성을 통해서, 호스트 프로세서는 호스트 디바이스를 통한 하나의 주변장치 디바이스로부터 다른 주변장치 디바이스로의 GPIO 신호들의 이 I/O 브릿징에도 불구하고, 유휴 상태에서 유지할 수도 있다. 따라서, 이 접근법은, 그렇지 않으면 종래의 GPIO 신호들을 수용하는데 필요할 다양한 GPIO 핀들을 제거할 뿐만 아니라, I/O 브릿징의 프로세서 관리에 종래 필요한 전력 손실 및 레이턴시를 제거할 수도 있다. 다시 말해서, 가상 GPIO 신호가 호스트 디바이스 또는 주변장치 디바이스에서의 프로세서를 인터럽트할 필요가 없는 한, 이러한 프로세서는 유휴 상태 또는 낮은-전력 상태에서 유지할 수도 있다.
이들 이점들을 더 잘 이해하기 위해서, 도 5 에 나타낸 바와 같은, 예시적인 GPIO 네트워크 (500) 를 고려하자. 호스트 디바이스 (502) (예컨대, 호스트 SoC) 는 복수의 n 개의 주변장치 디바이스들 (예컨대, 주변장치 디바이스 #1 (504), 주변장치 디바이스 #2 (506), 주변장치 디바이스 #3 (508), 주변장치 디바이스 #(n-1) (510), 및 주변장치 디바이스 #n (512)) 상의 대응하는 GPIO 핀들과 인터페이스하기 위한 복수의 GPIO 핀들을 포함하며, 여기서, n 은 1 보다 큰 양의 정수이다. 본원에서 사용될 때, 용어 "핀" 은 패드 및/또는 실제 핀과 같은, 집적 회로가 회로 보드 상의 리드들 (또한, 트레이스들로서 지칭됨) 또는 다른 물리적인 상호접속부들 (예컨대, 패키지 상호접속부 또는 스루홀 비아 상호접속부) 을 커플링하는데 사용하는 구조를 포괄하는 일반 용어이다. 도 5 의 예시적인 구성에서, 주변장치 디바이스 #1 (504) 은 4개의 GPIO 신호들을 수신하거나 또는 송신할 수도 있다. 예를 들어, 그리고 도 5 에 나타낸 바와 같이, 주변장치 디바이스 #1 (504) 은 대응하는 GPIO 신호들을 호스트 디바이스 (502) 상의, 핀 3 (528) 및 핀 4 (530) 와 같은, 2개의 핀들로 송신하기 위한, 핀 1 (524) 및 핀 2 (526) 와 같은, 2개의 핀들을 갖는다. 게다가, 호스트 디바이스 (502) 는 대응하는 GPIO 신호들을 주변장치 디바이스 #1 (504) 상의, 핀 3 (532) 및 핀 4 (534) 와 같은, 2개의 핀들로 송신하기 위한, 핀 5 (536) 및 핀 6 (538) 과 같은 2개의 핀들을 갖는다. 호스트 디바이스 (502) 는 주변장치 디바이스 #2 (506) 상의 개별 핀들 1, 2, 및 3 과 통신하는 핀들 7, 8, 및 9, 주변장치 디바이스 #3 (508) 상의 개별 핀들 1 및 2 와 통신하는 핀들 11 및 12, 및 주변장치 디바이스 #n (512) 상의 개별 핀들 1, 2, 3, 및 4 와 통신하는 핀들 13, 14, 15, 및 16 을 갖는다. 일 양태에서, 호스트 디바이스 (502) 는 GPIO 입력 핀 1 (520) 및 GPIO 출력 핀 2 (522) 을 포함할 수도 있다. 호스트 디바이스 (502) 는 I2C/I3C 버스 (514) 를 통해서 주변장치 디바이스들 (504, 506, 508, 510, 및 512) 에서의 대응하는 I2C/I3C 인터페이스들 (도 5 에 미도시) 로 통신하는 I2C/I3C 포트 (518) (또한, I2C/I3C 인터페이스로서 지칭됨) 를 더 포함할 수도 있다.
도 6 은 본 개시물의 여러 양태들에 따른, 예시적인 GPIO 네트워크 (600) 의 블록도를 예시한다. 도 6 에 나타낸 바와 같이, GPIO 네트워크 (600) 는 I3C 버스 (626) 를 구현하며, 여기서, I3C 버스 (626) 는 클록 리드 (628) 및 데이터 리드 (630) 를 포함한다. 도 6 에 나타낸 바와 같이, 호스트 디바이스 (602) (예컨대, 호스트 SoC) 는 I3C 버스 (626) 를 통해서 다수의 주변장치 디바이스들에 커플링된다. 예를 들어, 도 6 에 나타낸 바와 같이, 주변장치 디바이스들은 가속도계 및 자력계 (604), 가속도계 (606), 자이로 센서 (608), 주변 광 센서 (ALS) 및 근접 센서 (610), 고도계 (612), 나침반 (614), 그립 센서 (616), 근접 장 통신 디바이스 (618), 지문 센서 (620), 아날로그 대 디지털 변환기 (622), 및/또는 터치스크린 (624) 을 포함할 수도 있다. I3C 통신 프로토콜은 대역내 인터럽트들 (DRI) 을 포함하여 I2C 통신 프로토콜을 향상시킨다. 이와 같이, 그리고 도 6 에서 볼 수 있는 바와 같이, 하드웨어 이벤트들을 통신하는 전용 핀들 및/또는 상호접속부들이 제거될 수도 있으며, 이에 따라서 호스트 디바이스 (602) 및 주변장치 디바이스들 상에서 핀 절감들을 제공한다. 앞에서 설명된 하드웨어 이벤트들 (예컨대, 인에이블들 및 리셋들) 및 GPIO 신호들은 I3C 메시지들로, 그러나 종종 오버헤드와 함께 변환될 수도 있다. 예를 들어, 호스트 디바이스의 CPU 가 메시지들을 생성/추출하는데 관여될 필요가 있을 수도 있으며, 이는 레이턴시를 증가시키고 소비 전력을 증가시킬 수도 있다. 더욱이, GPIO 신호들/메시지들의 식별은 I3C 프로토콜에서 표준화되지 않는다.
도 7 은 본 개시물의 여러 양태들에 따른, 예시적인 네트워크 (700) 를 나타낸다. 네트워크 (700) 는 호스트 디바이스 (702) 및 n 개의 주변장치 디바이스들 (예컨대, 주변장치 디바이스 #1 (704), 주변장치 디바이스 #2 (706), 주변장치 디바이스 #3 (708), 주변장치 디바이스 #(n-1) (710), 및 주변장치 디바이스 #n (712)) 을 포함한다. 호스트 디바이스 (702) 는 I2C/I3C 분야들에서 알려져 있는 바와 같은 데이터 리드 (720) 및 클록 리드 (722) 를 포함하는 I2C/I3C 버스 (714) 를 통해서 n 개의 주변장치 디바이스들에 커플링된다. 예시적인 네트워크 (700) 에서의 호스트 디바이스 (702) 가 임의의 GPIO 핀들을 필요로 하지 않는다는 점에 유의해야 한다. 이와 유사하게, 어떤 대응하는 GPIO 핀들도 n 개의 주변장치 디바이스들 (704, 706, 708, 710, 및 712) 에 필요하지 않다. 이러한 GPIO 핀들의 제거는 패키징 비용들에서의 현저한 감소를 제공할 수도 있다. 도 7 에 나타낸 바와 같이, 호스트 디바이스 (702) 및 주변장치 디바이스들 (704, 706, 708, 710, 및 712) 은 가상 GPIO 데이터를 대응하는 I3C 인터페이스 (716) 에 제공하는 가상 GPIO 인터페이스 유한 상태 머신 (VGI FSM) (718) 을 각각 포함할 수도 있다. 대안적인 구현예들에서, I3C 인터페이스 (716) 는 I2C 인터페이스 (716) 일 수도 있다. 따라서, I3C 인터페이스 (716) 는 또한 이들 다양한 구현예들을 포괄하기 위해 I2C/I3C 인터페이스 (716) 로서 지정될 수도 있다.
각각의 I2C/I3C 인터페이스 (716) 는 I2C/I3C 프로토콜들을 이용하여 I2C/I3C 프레임의 송신을 개시할 수도 있다. 그러나, I2C/I3C 프레임이 VGPIO 데이터를 포함한다는 것을 시그널링하기 위해, 각각의 I2C/I3C 인터페이스 (716) 는 특수 지령 코드를 이용하여 프레임을 VGPIO 프레임으로서 식별할 수도 있다. I2C/I3C VGPIO 프레임은 I2C/I3C 분야에서 알려져 있는 바와 같은 브로드캐스트 프레임 또는 어드레스된 프레임일 수도 있다. 예시적인 브로드캐스트 프레임 (800) 이 도 8 에 도시된다. 브로드캐스트 프레임 (800) 은 시작 비트 S (801) 및 시작 헤더 (802) 에서 시작한다. VGI 브로드캐스트 지령 코드 (CC) (804) 는 프레임 (800) 이 I2C/I3C VGI 브로드캐스트 프레임이라는 것을 표시할 수도 있다. VGPIO 데이터 페이로드 (806) 는 0번째 가상 GPIO 신호 내지 (n-1)번째 가상 GPIO 신호의 범위인 n 개의 가상 GPIO 신호들을 포함할 수도 있다. 도 7 을 다시 참조하면, 그리고 본원에서 추가로 설명되는 바와 같이, 각각의 VGI FSM (718) 은 VGPIO 데이터 페이로드 (806) 에서의 가상 GPIO 신호들의 비트 위치들을, 이들이 네트워크 (100) 와 관련하여 설명된 종래의 GPIO 핀들 상에서 수신된 것 처럼, 맵핑하는 맵핑 테이블을 포함한다. 따라서, VGPIO 데이터 페이로드의 "가상적" 성질은 본원에서 추가로 설명된 바와 같이 대응하는 VGI FSM (718) 과 인터페이스하는 각각의 디바이스의 프로세서에 투명하다.
GPIO 네트워크 (500) 에서의 주변장치 디바이스 #1 (504) 의 예를 다시 고려하면, 주변장치 디바이스 #1 (504) 은 호스트 디바이스 (502) 로부터 I/O 신호 넘버 1 및 2 를 수신할 수도 있다. 이러한 호스트 디바이스 (502) 가 I/O 신호 넘버 1 을 변경하지만 주변장치 디바이스 #1 (504) 이 I/O 신호 넘버 2 에 대해 가지는 값을 방해하지 않을 필요가 있을 수도 있는 경우가 있을 수도 있다. 이러한 경우, 브로드캐스트 프레임 (800) 은 도 9 에 나타낸 바와 같이 마스크된 브로드캐스트 프레임 (900) 으로 대체될 수도 있다. 예를 들어, 네트워크 (700) 의 호스트 디바이스 (702) 에서의 VGI FSM (718) 은 I2C/I3C 버스 (714) 를 통한 마스크된 브로드캐스트 프레임 (900) 의 송신을 트리거할 수도 있다. 이 예에서, I/O 신호들의 모두가 주변장치 디바이스 #1 (704) 에 대해 I/O 신호 넘버 1 을 제외하고는 마스크될 것이다. 이를 행하기 위해, 마스크된 브로드캐스트 프레임 (900) 에 대한 데이터 페이로드 (906) 에서의 n 개의 I/O 신호들은 0번째 I/O 신호 IO0 에 대한 0번째 마스크 비트 M0 내지 (n-1) I/O 신호 IOn-1 에 대한 (n-1)번째 마스크 비트 Mn-1 의 범위인, 대응하는 마스크 비트들로 편성될 수도 있다. 브로드캐스트 프레임이 마스크되는지 여부에 관계없이, 브로드캐스트 프레임은 브로드캐스트 프레임 (800) 에 대해 나타낸 바와 같이 정지 비트 (808) 와 같은 정지 비트로 끝날 수도 있다. 대안적으로, 정지 비트 (808) 는 추가적인 VGPIO 페이로드들이 포함될 수 있도록 동기화 비트로 대체될 수도 있다.
대안적인 구현예들에서, 각각의 VGI FSM (718) 은 도 10 에 나타낸 다이렉트된 프레임 (1000) 과 같은 다이렉트된 (어드레스된) I2C/I3C VGPIO 프레임을 트리거할 수도 있다. 다이렉트된 프레임 (1000) 은 시작 비트 S (1002) 및 시작 헤더 (1004) 에서 시작한다. VGI 다이렉트된 공통 지령 코드 (CCC) (1006) 는 다이렉트된 프레임 (1000) 이 다이렉트된 VGPIO 데이터 페이로드 (예컨대, 다이렉트된 VGPIO 데이터 페이로드 (1012), 다이렉트된 VGPIO 데이터 페이로드 (1018)) 를 포함한다는 것을 표시할 수도 있다. VGI 다이렉트된 공통 지령 코드 (CCC) (1006) 는 어드레스된 주변장치 디바이스를 식별하기 위해, 반복된 시작 필드 (Sr) (1008) 및 슬레이브 어드레스 필드 (1010) (또는, 대안적으로, 호스트 디바이스 (702) 에 대한 어드레스 필드) 가 뒤따를 수도 있다. 다이렉트된 VGPIO 데이터 페이로드 (1012) 는 다이렉트된 VGPIO 데이터 페이로드 (1012) 가 단지 어드레스된 디바이스에 속하는 y 개의 I/O 신호들의 세트를 포함할 수도 있다는 점에서 브로드캐스트 데이터 페이로드와는 상이하다. 예를 들어, 변수 y 는 양의 정수일 수도 있다. 도 10 에 나타낸 바와 같이, 다이렉트된 VGPIO 데이터 페이로드 (1012) 는 0번째 I/O 신호 (1020) 내지 (y-1)번째 I/O 신호 (1022) 를 포함할 수도 있다. 다이렉트된 프레임 (1000) 은 추가적인 디바이스들에 대한 추가적인 다이렉트된 페이로드들을 포함할 수도 있다. 예를 들어, 다이렉트된 VGPIO 데이터 페이로드 (1012) 는 다른 반복된 시작 필드 (Sr) (1014) 및 추가적인 슬레이브 어드레스 필드 (1016) 가 뒤따를 수도 있다. 이 경우, 어드레스된 디바이스는 x 개의 I/O 신호들의 세트를 지원할 수도 있으며, 여기서, x 는 양의 정수이다. 따라서, 대응하는 다이렉트된 VGPIO 데이터 페이로드 (1018) 는 브로드캐스트 프레임 (800) 의 브로드캐스트 VGPIO 데이터 페이로드 (806) 에서의 n 개의 I/O 신호들의 전체 세트와는 대조적으로, 단지 x 개의 I/O 신호들을 포함할 것이다. 도 10 에 나타낸 바와 같이, 다이렉트된 VGPIO 데이터 페이로드 (1018) 는 0번째 I/O 신호 (1024) 내지 (x-1)번째 I/O 신호 (1026) 를 포함할 수도 있다. 다이렉트된 프레임 (1000) 은 다이렉트된 프레임 (1000) 에 대해 나타낸 바와 같이 정지 비트 (1028) 와 같은 정지 비트에서 끝날 수도 있다.
마스크된 브로드캐스트 프레임 (900) 과 관련하여 유사하게 설명된 바와 같이, 다이렉트된 프레임 (1000) 은 마스크된 다이렉트된 프레임으로 대체될 수도 있다. 도 11 은 예시적인 마스크된 다이렉트된 프레임 (1100) 을 나타낸다. 마스크된 다이렉트된 프레임 (1100) 은 시작 비트 S (1102) 및 시작 헤더 (1104) 에서 시작한다. VGI 다이렉트된 공통 지령 코드 (CCC) (1106) 는 마스크된 다이렉트된 프레임 (1100) 이 마스크된 다이렉트된 VGPIO 데이터 페이로드 (1112) 를 포함한다는 것을 표시할 수도 있다. VGI 다이렉트된 공통 지령 코드 (CCC) (1106) 는 어드레스된 주변장치 디바이스를 식별하기 위해, 반복된 시작 필드 (Sr) (1108) 및 슬레이브 어드레스 필드 (1110) (또는, 대안적으로, 호스트 디바이스 (702) 에 대한 어드레스 필드) 가 뒤따를 수도 있다. 마스크된 다이렉트된 VGPIO 데이터 페이로드 (1106) 는 y 개의 I/O 신호들을 지원하는 디바이스용으로 의도되며, 여기서, 변수 y 는 양의 정수를 나타낸다. 따라서, 도 11 에 나타낸 바와 같이, 마스크된 다이렉트된 VGPIO 데이터 페이로드 (1106) 는 0번째 I/O 신호 (1114) 에 대응하는 0번째 마스크 신호 M0 (1116) 내지 (y-1)번째 I/O 신호 (1118) 에 대응하는 (y-1)번째 마스크 신호 My-1 (1120) 과 같은, y 개의 대응하는 마스크 신호들의 세트를 포함할 수도 있다. 마스크된 다이렉트된 프레임 (1100) 은 마스크된 다이렉트된 프레임 (1100) 에 대해 나타낸 바와 같이 정지 비트 (1122) 와 같은 정지 비트로 끝날 수도 있다.
도 12 는 도 7 과 관련하여 앞에서 설명된 VGI FSM (718) 의 예시적인 구성을 나타낸다. I/O 맵퍼 및 메시지 포맷터 로직 회로 (1204) 는 앞에서 설명된 바와 같이 GPIO 신호들 (또한, I/O 신호들로서 지칭됨) 을 가상 GPIO 페이로드에서의 비트 위치들에 맵핑하도록 구성된다. I/O 맵퍼 및 메시지 포맷터 로직 회로 (1204) 에 의해 사용하기 위한 예시적인 I/O 맵핑 테이블 (1300) 이 도 13 에 도시된다 I/O 맵핑 테이블 (1300) 은 다수의 호스트 I/O 넘버들 (1302), 대응하는 주변장치 I/O 넘버들 (1304), 및 대응하는 주변장치 어드레스들 (1306) 을 포함할 수도 있다. 일 양태에서, I/O 맵핑 테이블 (1300) 은 다이렉트된 I2C/I3C VGPIO 프레임 (1000) 또는 마스크된 다이렉트된 I2C/I3C VGPIO 프레임 (1100) 에서의 I/O 신호들을 맵핑하는데 사용될 수도 있다. 단지 브로드캐스트 I2C/I3C VGPIO 프레임들만이 사용되는 경우 주변장치 어드레스들 (1306) 이 불필요할 수도 있는 것으로 이해되어야 한다. 일 양태에서, I/O 맵핑 테이블 (1300) 은 GPIO 네트워크 (500) 와 관련하여 설명된 예시적인 GPIO 시그널링을 따를 수도 있다. 예를 들어, I/O 맵핑 테이블 (1300) 에서의 로우 (1308) 와 관련하여, 어드레스 0x01 에서의 주변장치 디바이스 #1 (504) 은 GPIO 핀 1 을 통해서, 호스트 디바이스 (502) 에서 I/O 신호 3 으로서 호스트 디바이스 (502) 에서의 핀 3 에서 수신되는 I/O 신호 1 (또한, GPIO 신호 1 로서 지칭됨) 을 송신한다. 이와 유사하게, I/O 맵핑 테이블 (1300) 에서의 로우 (1310) 와 관련하여, 주변장치 디바이스 #1 (504) 의 GPIO 핀 2 으로부터의 I/O 신호 2 가 호스트 디바이스 (502) 에서의 GPIO 핀 4 에서 I/O 신호 4 로서 수신된다. 도 13 에서, 호스트 I/O들 3 및 4 이 네트워크 (700) 의 주변장치 디바이스 #1 (704) 에 대한 대응하는 I/O들 1 및 2 에 대응한다는 점에 유의해야 하며, 여기서, 주변장치 디바이스 #1 (704) 은 0x01 의 주변장치 어드레스를 할당받는다. 이러한 방식으로, 각각의 I/O 신호는 맵핑 테이블 (1300) 을 통해서 각각의 디바이스에서 식별될 수도 있다. 호스트 디바이스와 주변장치 디바이스 사이에 맵핑되는 I/O들은 GPIO 핀들의 순차적인 세트를 포함할 필요가 없는 것으로 이해되어야 한다. 예를 들어, 도 13 의 로우 (1312) 에 나타낸 바와 같이, I/O 9 에 이어서 I/O 11 이 뒤따른다 (예컨대, I/O 10 는 주변장치 디바이스에서의 대응하는 I/O 에 맵핑되지 않는다). 또한, 도 5 에서의 I/O 17 (550) 과 같이 하나 이상의 I/O들이 다른 목적들에 사용될 수도 있으며 맵핑되지 않을 수도 있는 것으로 이해되어야 한다. 더욱이, 호스트의 추가적인 I/O들은 도 13 에서의 로우 (1314) 에서 변수들 N 및 k 로 표시된 바와 같이, 주변장치들의 I/O들에 맵핑될 수도 있다. 다시 말해서, 도 13 의 양태들은 I/O 맵핑 테이블 (1300) 에 표시된 예시적인 16 개의 I/O들의 세트에 제한되지 않는다.
I/O 신호의 변화된 상태에 응답하여, 도 7 에서의 특정의 VGI FSM (718) 은 다른 I/O 신호의 상태를 변경할 필요가 있을 수도 있다. 예를 들어, 하나의 경우에, 호스트 디바이스 (702) 에서 I/O 신호 3 으로서 수신되는, 주변장치 디바이스 #1 (704) 로부터의 I/O 신호 1 의 변화된 상태 (예컨대, 로직 '1' 로부터 로직 '0' 으로의 변화) 는, I/O 신호 9 의 상태를 변경하기 위해 호스트 디바이스 (702) 를 트리거할 필요가 있을 수도 있다. I/O 맵핑 테이블 (1300) 의 로우 (1312) 에 나타낸 바와 같이, I/O 신호 9 는 어드레스 0X02 를 가지는 주변장치 디바이스 #2 (706) 에서 I/O 신호 3 으로서 수신된다. 이러한 변화된 상태들의 검출을 위한 I/O 신호들의 집성은 도 12 의 I/O 집성 블록 (1206) 에 의해 수용될 수도 있다. 일 양태에서, I/O 집성 블록 (1206) 은 I/O 집성 로직 회로로서 구현될 수도 있다.
각각의 주변장치 디바이스 (예컨대, 주변장치 디바이스 #1 (704)) 에 대한 I/O 맵핑 테이블 (1300) 을 설정하기 위해, 호스트 디바이스 (702) 에서의 VGI FSM (718) 은 메시징 I2C/I3C 프레임 (미예시) 을 이용하여 핸드쉐이킹 프로시저를 개시할 수도 있다. 디바이스 (예컨대, 주변장치 디바이스) 가 네트워크 (700) 로부터 제거되고 대안 디바이스로 대체되면, 이 개시 프로시저는 네트워크 (700) 에서의 모든 디바이스들이 변화된 네트워크 구성을 통지받을 수 있도록 반복될 수도 있다.
다시 네트워크 (700) 를 참조하면, 호스트 디바이스 (702) 에서의 프로세서 (미예시) 및 주변장치 디바이스들 (예컨대, 주변장치 디바이스들 (704, 706, 708, 710, 712)) 에서의 프로세서들은 GPIO 인터페이스 (미예시) 를 통해서 대응하는 VGI FSM (718) 과 인터페이스할 수도 있다. 이러한 방식으로, 어떤 소프트웨어 변경들도 프로세서들에 대해, 네트워크 (500) 와 관련하여 설명된 바와 같이, 이들이 실제 GPIO 핀들을 이용한 것과는 다르지 않게 기능할 수도 있다는 점에서 불필요하다.
디바이스에서의 대응하는 VGI FSM (718) 과의 데이터 전송을 가능하게 하기 위해 디바이스 (예컨대, 주변장치 디바이스 #1 (704)) 에서의 프로세서에 대해 어떤 소프트웨어 변경들도 불필요하지만, VGI FSM (718) 이 VGPIO 패킷들을 직접 송신하고 수신하지 않는 것으로 이해되어야 한다. 대신, 이러한 손실 패킷들로부터의 VGPIO 페이로드들이 도 8 내지 도 11 과 관련하여 설명된 마스크된 또는 비마스크된 형태들로 제공된다. VGI FSM (718) 으로 하여금 임의의 변경들 없이 동작가능하게 하기 위해, 전체 VGPIO 패킷은 I2C/I3C 프레임에 대한 페이로드로서 캡슐화될 수도 있다. 각각의 VGPIO 패킷은 그의 데이터 페이로드에 더해서 헤더를 포함한다. 예를 들어, 2014년 11월 5일에 출원된 미국 출원번호 제 14/533,431호에 개시된 "하이브리드" VGPIO 패킷들을 고려하며, 이는 본원에서 전체적으로 참조로 포함된다. 하이브리드 패킷에서의 데이터 페이로드는 VGPIO 신호들 뿐만 아니라 메시징 신호들을 포함할 수도 있다. GPIO 신호와는 대조적으로, 메시징 신호는 디바이스 상의 특정의 핀에 전용되지 않는다. 다시 말해서, 분류된 메시지들은 전용 메시징 송신 핀을 통해서 송신될 수도 있다. 수신 디바이스는, 선험적으로, GPIO 신호와는 대조적으로 그 메시징이 무엇과 관련되는 지를 알고 있지 않다. 예를 들어, GPIO 신호는 특정의 GPIO 핀에 전용이므로, GPIO 신호가 대응하는 GPIO 핀 상에서 수신된다는 사실이 신호를 프로세서에게 식별시킨다. 이것은 메시징 신호에 대한 경우가 아니다. 메시징 신호는 수신 프로세서가 수신된 메시징 신호를 적합한 레지스터로 라우팅하는데 이용하는 어드레스 비트들을 포함한다. 예를 들어, 범용 비동기 수신기/송신기 (UART) 및 직렬 주변장치 인터페이스 (SPI) 가 메시징 신호들을 이용하는 프로토콜들의 예들이다.
하이브리드 VGPIO 시스템에서, VGI FSM 은 패킷이 VGPIO 및/또는 메시징 신호 페이로드를 포함하는지 여부를 결정하기 위해 각각의 하이브리드 VGPIO 패킷에 대한 헤더를 분석하도록 구성된다. 게다가, 헤더는 대응하는 패킷이 데이터 페이로드의 디폴트 길이를 변경하기 위한 프로그래밍 패킷인지 여부를 식별할 수도 있다. 이와 관련하여, VGPIO 신호들은 개개의 GPIO 핀들 상에서 수신되는 종래의 GPIO 신호들과는 대조적으로 공통 수신 핀 상에서 모두 수신된다. 종래의 시스템에서는, GPIO 핀이 대응하는 GPIO 신호에 전용이기 때문에, GPIO 핀의 아이덴티티가 대응하는 수신된 GPIO 신호를 식별한다. VGPIO 신호들도 또한 식별을 필요로 하기 때문에, 수신 VGI FSM 은 데이터 페이로드 내 VGPIO 신호의 로케이션을 통해서 그렇게 한다. 예를 들어, 데이터 페이로드가 VGPIO 패킷의 경우 8 비트 길이라고 가정하자. 페이로드에서의 제 1 비트는 제 1 VGPIO 신호에, 제 2 비트는 제 2 VGPIO 신호에 할당되고, 그리고 계속해서 제 8 비트가 제 8 VGPIO 신호에 할당될 때까지, 기타 등등으로 할당될 수도 있다. 동일한 로케이션들이 메시징 신호들을 식별하는데 사용될 수도 있다. 그러나, 송신 및 수신 VGPIO 디바이스들은, 이 비트-위치 식별 방식을 성공적으로 구현하기 위해 동일한 패킷 길이를 사용할 필요가 있다. 예를 들어, 디폴트 패킷 길이는 8개의 비트일 수도 있다. VGPIO 시스템이 추가적인 VGPIO 신호들을 수용하기 위해 더 긴 패킷 길이를 필요로 하면, VGPIO 패킷에 대한 헤더는 또한 새로운 패킷 길이를 할당하기 위해, 첨부된 페이로드가 데이터 페이로드가 아니라, 대신 프로그래밍 페이로드라는 것을 시그널링할 수도 있다. 수신 VGI FSM 은 그후 대응하는 헤더 및 패킷 본체를 이용하여 새로운 패킷 길이를 수신응답할 수도 있다.
도 14a 는 본 개시물의 여러 양태들에 따른, VGPIO 신호들 또는 메시지 신호들의 통신을 위한 예시적인 VGI 패킷 (1400) 을 나타낸다. VGI 패킷 (1400) 은 시작 비트 (1404) 에서 시작하고 정지 비트 (1410) 에서 끝난다. 예를 들어, 시작 비트 (1404) 는 로직 '0' (예컨대, 2진수 제로) 일 수도 있으며, 정지 비트 (1410) 는 로직 '1' (예컨대, 2진수 1) 일 수도 있다. 헤더 (1402) 는 2개의 기능 비트들 (예컨대, 도 14a 에서의 Fn_Bit-0 및 Fn_Bit-1) 을 포함할 수도 있다. 헤더 (1402) 에서의 2개의 기능 비트들 (Fn_Bit-0 및 Fn_Bit-1) 은 후속 페이로드 (1403) 가 VGPIO 비트들 또는 메시지 비트들을 포함하는지 여부를 식별할 수도 있다. 일 실시형태에서, 기능 비트들 양쪽이 로직 값 '0' 을 가지면, 헤더 (1402) 는 VGI 패킷 (1400) 을 VGPIO 데이터 페이로드를 포함하는 (예컨대, 다음 비트들이 가상 GPIO 신호들인) 것으로 식별한다. Fn_Bit-0 이 로직 값 0 을 가지고 Fn_Bit-1 이 로직 값 '1' 을 가지면, 헤더 (1402) 는 VGI 패킷 (1400) 을 메시징 데이터 페이로드를 포함하는 (예컨대, 다음 비트들이 메시징 신호들인) 것으로 식별한다. Fn_Bit-0 이 로직 값 '1' 을 가지고 Fn_Bit-1 이 로직 값 '0' 을 가지면, 다음 비트들은 원격 프로세서에 의해 예상될 가상 GPIO 패킷 길이를 나타낸다. 기능 비트들 양쪽이 로직 값 '1' 을 가지면, 다음 비트들은 원하는 패킷 길이의 원격 프로세서에 의한 수신응답을 나타낸다. 2개의 기능 비트들을 이용하는 코딩에 대한 상기 설명은 단지 일 예이며 VGI 패킷이 가상 GPIO 신호들, 메시징 신호들, VGI 패킷 길이의 식별, VGI 패킷 길이의 수신응답을 운반하고 있는지 여부를 식별하는데 다른 헤더들 및 코딩 프로토콜들이 사용될 수도 있는 것으로 이해되어야 한다. 일 실시형태에서, VGI 패킷 (1400) 은 또한 프로그래밍 및 수신응답 패킷들과 연관된 유형 비트 (예컨대, 도 14a 에서의 Type_Bit (1405)) 를 포함할 수도 있다. 예를 들어, 일 실시형태에서, 유형 비트는, VGI 패킷 (1400) 이 가상 GPIO 신호들용으로 구성된다는 것을 식별하기 위해 로직 값 '1' 로 설정될 수도 있으며, VGI 패킷 (1400) 이 메시징 신호들용으로 구성된다는 것을 식별하기 위해 로직 값 '0' 으로 설정될 수도 있다.
VGI 패킷 (1400) 의 길이를 프로그래밍하기 위해, 송신 VGI FSM (718) 은 헤더 (1402) 에서 Fn_Bit-0 을 로직 값 '1' 로, 그리고 Fn_Bit-1 을 로직 값 '0' 으로 설정할 수도 있다. 따라서, VGI 패킷 (1400) 에서의 대응하는 데이터 페이로드 (예컨대, 도 14a 에서의 비트들 (1406)) 가 새로운 패킷 길이를 식별할 것이다. 수신 VGI FSM (718) 이 이 새로운 패킷 길이를 지원하면, 이러한 VGI FSM (718) 은 헤더 (1402) 가 로직 값 '1' 과 동일한 Fn_Bit-0 및 로직 값 '1' 과 동일한 Fn_Bit-1 을 가지는 수신응답 VGPIO 패킷 (1400) 을 송신할 수도 있다. 이러한 수신응답 패킷에서의 대응하는 데이터 페이로드 (예컨대, 도 14a 에서의 비트들 (1406)) 는 이전 프로그래밍 패킷에 의해 식별된 패킷 길이를 반복할 것이다.
VGI 패킷 (1400) 의 변형예들이 대안적인 실시형태들에서 사용될 수도 있음을 알 수 있을 것이다. 그러나, 변형예에 관계없이, VGI FSM (718) 은 이러한 대안적인 VGI 패킷에서의 헤더 및 데이터 페이로드를 디코딩하도록 미리 구성될 수도 있다. 따라서, 프레임들 (800, 900, 1000, 및 1100) 내 (마스크된 또는 비마스크된) VGPIO 데이터의 패키징과 관련하여 설명된 것과 유사하게, 결과적인 VGI 패킷을 I2C/I3C 프레임에 캡슐화하는 것이 유리하다. 예를 들어, 다이렉트된 I2C/I3C 프레임 (1440) 이 도 14b 에 도시된다 다이렉트된 I2C/I3C 프레임 (1440) 은 시작 비트 S (1442) 및 헤더 (1444) 에서 시작할 수도 있다. 다이렉트된 VGI 공통 지령 코드 (CCC) (1446) 는 다이렉트된 I2C/I3C 프레임 (1440) 을 캡슐화된 VGI 패킷 (1452) 을 운반하는 다이렉트된 프레임인 것으로 식별할 수도 있다. VGI 패킷 (1452) 이 VGPIO 데이터 페이로드 또는 메시징 신호들을 포함할 수도 있기 때문에 용어 "VGI" 가 VGI 패킷 (1452) 을 참조하여 용어 "VGPIO" 대신 사용된다는 점에 유의한다. 반복 시작 필드 (1448) 및 슬레이브 디바이스 어드레스 (1450) 는 다이렉트된 VGI CCC (1446) 를 뒤따를 수도 있다. 예를 들어, 반복 시작 필드 (1448) 는 반복 시작 조건을 포함할 수도 있다. 수신 I2C/I3C 인터페이스는 캡슐화된 VGI 패킷 (1452) 을 벗기고 이 패킷을 연관된 VGI FSM 으로 포워딩함으로써, 다이렉트된 VGI CCC (1446) 에 응답한다. 이러한 방식으로, 캡슐화는 VGI FSM 에 투명하므로, 그의 기능에 대한 하드웨어 변경들 없이 유리하게 통합될 수도 있다. 다이렉트된 I2C/I3C 프레임 (1440) 의 필드 (1454) 는 중지 조건 (P) 또는 반복 시작 (Sr) 조건을 포함할 수도 있다.
예를 들어, 다이렉트된 I2C/I3C 프레임 (1460) 이 도 14c 에 도시되며, 여기서, 다이렉트된 I2C/I3C 프레임 (1460) 은 다수의 슬레이브 어드레스들 및 대응하는 캡슐화된 VGI 패킷들 (예컨대, 캡슐화된 VGI 패킷 (1472), 캡슐화된 VGI 패킷 (1478)) 을 포함한다. 다이렉트된 I2C/I3C 프레임 (1460) 은 시작 비트 S (1462) 및 헤더 (1464) 에서 시작할 수도 있다. 다이렉트된 VGI 공통 지령 코드 (CCC) (1466) 는 다이렉트된 I2C/I3C 프레임 (1460) 을 캡슐화된 VGI 패킷들을 가진 다이렉트된 프레임으로서 식별할 수도 있다. 도 14c 에 나타낸 바와 같이, 다이렉트된 I2C/I3C 프레임 (1460) 은 반복 시작 조건을 포함할 수도 있는 반복된 시작 (Sr) 필드 (1468) 를 포함할 수도 있다. 다이렉트된 I2C/I3C 프레임 (1460) 은 캡슐화된 VGI 패킷 (1472) 이 뒤따르는 슬레이브 디바이스 어드레스 (1470) 를 더 포함할 수도 있다. 도 14c 에 추가로 나타낸 바와 같이, 다이렉트된 I2C/I3C 프레임 (1460) 은 반복 시작 (Sr) 조건을 포함할 수도 있는 다른 반복된 시작 (Sr) 필드 (1474) 를 더 포함할 수도 있다. 다른 슬레이브 디바이스 어드레스 (1476) 및 다른 캡슐화된 VGI 패킷 (1478) 이 반복된 시작 (Sr) 필드 (1474) 를 뒤따를 수도 있다. 다이렉트된 I2C/I3C 프레임 (1460) 의 필드 (1479) 는 중지 조건 (P) 또는 반복 시작 (Sr) 조건을 포함할 수도 있다.
예를 들어, 브로드캐스트 I2C/I3C 프레임 (1480) 이 도 14d 에 도시된다 브로드캐스트 I2C/I3C 프레임 (1480) 은 반복된 시작 (Sr) 필드 및 슬레이브 디바이스 어드레스를 제외하고는, 프레임 (1440) 과 유사하다. 따라서, 브로드캐스트 I2C/I3C 프레임 (1480) 은 시작 비트 S (1482) 및 헤더 (1484) 에서 시작하고, 그의 데이터 페이로드로서, 브로드캐스트 I2C/I3C 프레임 (1480) 을 캡슐화된 VGI 패킷 (1488) 을 가진 브로드캐스트 프레임인 것으로 식별하는 브로드캐스트 VGI 공통 지령 코드 (CCC) (1486) 가 뒤따를 수도 있다. 일부 양태들에서, 캡슐화된 VGI 패킷은 사설 계약들에 따른 잠재적인 구성 비트들 뿐만 아니라 I/O 및 마스크 비트들을 포함할 수도 있다. 다이렉트된 I2C/I3C 프레임 (1480) 의 필드 (1490) 는 중지 조건 (P) 또는 반복 시작 (Sr) 조건을 포함할 수도 있다.
도 15 는 본 개시물의 여러 양태들에 따른, 가상 GPIO 인터페이스 (VGI) 를 구현하는 예시적인 범용 입력/출력 (GPIO) 네트워크 (1500) 의 블록도를 예시한다. 도 15 에 나타낸 바와 같이, GPIO 네트워크 (1500) 는 호스트 디바이스 (1502) (예컨대, 호스트 SoC) 및 주변장치 디바이스 (1504) 를 포함한다. 앞에서 설명한 바와 같이, VGI 는 풀 또는 하프-듀플렉스 모드에서 동작하는 동기적 또는 비동기적 직렬 링크를 통해서 외부 GPIO들, 내부 GPIO들 및 소프트-GPIO들/하드웨어 이벤트들 뿐만 아니라, 메시징을 통합하는 유한 상태 머신 (FSM) 지적 재산 (IP) 블록이다. 일 양태에서, 외부 GPIO 는 디바이스 (예컨대, 호스트 SoC 또는 주변장치 디바이스) 상의 핀을 통해서 물리적으로 액세스가능한 GPIO 일 수도 있다. 일 양태에서, 내부 GPIO 는 내부 I/O 맵의 부분이지만 종래의 방법에서의 물리 핀들을 통해서 액세스불가능한 GPIO 일 수도 있다. 일 양태에서, 소프트 GPIO/하드웨어 이벤트는 호스트 디바이스 (예컨대, 호스트 SoC) 또는 주변장치 디바이스 상의 내부 IP 블록 내 일반 레지스터 공간에 맵핑되는 GPIO 일 수도 있으며, 일반적으로 판독/기록 동작들을 위한 소프트웨어 또는 상태 머신 개입을 수반한다.
도 15 를 참조하면, 호스트 디바이스 (1502) 는 CPU (1506), VGI FSM (1508), VGI 물리 링크 (1510), 및 다수의 GPIO 레지스터들 (1526) 을 포함하는 GPIO 인터페이스 (1512) 를 포함한다. 도 15 의 양태에서, VGI FSM (1508) 은 GPIO 레지스터들 (1518) (예컨대, 내부 GPIO들) 로부터의 GPIO 신호들, 물리 핀들 (1514) (예컨대, 외부 GPIO들) 로부터의 GPIO 신호들, 및/또는 일반 IP 블록 (1516) (예컨대, 소프트 GPIO들) 으로부터의 GPIO 신호들을 전송하거나 또는 수신하도록 구성된다. 일 양태에서, VGI FSM (1508) 은 공유된 메시징 아키텍처를 구현하는 VGI 메시징 블록 (1520) 을 포함할 수도 있다. 이러한 양태에서, 호스트 디바이스 (1502) 및 주변장치 디바이스 (1504) 는 메시지들을 미리 정의된 레지스터 로케이션들로 그리고 그로부터 교환할 수도 있다. VGI 물리 링크 인터페이스 (1510) 는 VGI FSM (1508) 에 커플링되며 I/O 신호들 및 VGI 메시지들을 VGI 링크 인터페이스 (1522) 를 통해서 송신하고 수신하는 인터페이스로서 기능한다. 일 양태에서, VGI 링크 인터페이스 (1522) 는 2 와이어 또는 3 와이어 버스일 수도 있다. 예를 들어, 도 15 에 나타낸 바와 같은 3 와이어 버스의 경우, 상호접속부 (1546) 는 핀 (1534) 으로부터 핀 (1540) 으로의 신호들의 송신용으로 구성될 수도 있으며, 상호접속부 (1548) 는 핀 (1542) 으로부터 핀 (1536) 에서의 신호들의 수신용으로 구성될 수도 있으며, 핀들 (1538 및 1544) 에 커플링된 상호접속부 (1550) 는 클록 신호를 운반할 수도 있다. 일 양태에서, VGI 링크 인터페이스 (1522) 는 I3C (및/또는 I2C) 프로토콜들을 구현할 수도 있다. 주변장치 디바이스 (1504) 가 호스트 디바이스 (1502) 와 관련하여 앞에서 설명된 것들과 유사한 특징들을 포함하도록 구성된다는 것을 알 수 있을 것이다.
일 양태에서, 호스트 디바이스 (1502) 에서의 VGI 물리 링크 (1510) 는 주변장치 디바이스 (1504) 로부터 VGI 링크 인터페이스 (1522) 를 통해서 신호들을 송신하거나 및/또는 수신할 수도 있다. 예를 들어, VGI 물리 링크 (1510) 는 I3C (또는, I2C) 메시징 신호들을 전송하고 수신하도록 구성될 수도 있다. 본원에서 사용될 때, 어구 "메시징 신호들" 은 프로세서간 통신 (IPC) 또는 직렬 주변장치 인터페이스 (SPI) 프로토콜들에서 실행되는 것과 같은, 전용 송신 핀을 통해서 통상적으로 송신될 신호들을 지칭한다. 따라서, 메시징 신호들은 수신 프로세서가 수신된 메시징 신호를 적합한 레지스터로 라우팅할 수 있도록 어드레스를 포함할 수도 있다. 이에 반해, GPIO 신호들은 전용 핀들을 통해서 통상적으로 송신되고 수신되므로, 어떤 어드레스들도 GPIO 신호들과 연관될 필요가 없다. 본원에서 추가로 설명되는 바와 같이, VGI FSM (1508) 은 GPIO 신호들을 공통 송신 핀을 통해서 송신되는 직렬화된 가상 GPIO 신호들로 직렬화할 수도 있다. 예를 들어, 호스트 디바이스 (1502) (또는, 주변장치 디바이스 (1504)) 에서의 VGI FSM (1508) 은 송신 라인 (1546) 상에서 (예컨대, 호스트 디바이스 (1502) 로부터 주변장치 디바이스 (1504) 로의) 송신을 위해 GPIO 레지스터들 (1526) 의 하나 이상의 GPIO 신호들 (본원에서 가상 GPIO 신호들로서 지칭됨) 및/또는 메시징 신호들 (1528) 을 직렬화할 수도 있다. 수신과 관련하여, 호스트 디바이스 (1502) 에서의 VGI FSM (1508) 은 직렬화된 가상 GPIO 신호들 및 수신된 직렬화된 메시징 신호들을 비직렬화한다. 따라서, VGI FSM (1508) 은 가상 GPIO 신호들 및 메시징 신호들에 대해 직렬화기/비직렬화기로서 기능한다. 따라서, 2개의 디바이스들은 VGI FSM (1508) 을 각각 가질 수도 있으며 가상 GPIO 시그널링을 위한 구조 또는 포맷을 합의할 수도 있다. 송신 및 수신 VGI 인에이블형 디바이스 (예컨대, 호스트 디바이스 (1502) 또는 주변장치 디바이스 (1504)) 는 GPIO 신호를 가상 GPIO 신호들의 세트를 포함하는 VGI 패킷 내 그의 로케이션에 의해 식별할 수도 있다.
일 양태에서, VGI 물리 링크 (1510) 는 CPU 링크 (1552) 를 통해서 CPU (1506) 에 의해 구성될 수도 있다. 예를 들어, 구성 단계 동안, CPU (1506) 는 CPU 링크 (1552) 를 통해서, 슬루 레이트, 데이터 전송 속도, 등과 같은, VGI 물리 링크 (1510) 의 다양한 특성들을 구성할 수도 있다. 일 양태에서, VGI 물리 링크 (1510) 는 그후 CPU 링크 (1552) 를 통해서 수신된 구성에 기초하여 CPU (1506) 와 독립적으로 동작할 수도 있다.
일 양태에서, GPIO 네트워크 (1500) 는 (GPIO 신호들의 개수가 대칭적인 경우) 그렇지 않으면 그들 자신의 전용 GPIO 핀들의 쌍을 각각 필요로 할 가상 GPIO 신호들을 송신하고 수신하도록, 송신 핀 (1534) 및 수신 핀 (1536) 과 같은, 단지 2개의 핀들을 구현할 수도 있다. 예를 들어, 호스트 디바이스 (1502) 에서의 GPIO 레지스터들 (1526) 의 GPIO 신호 #1 은 주변장치 디바이스 (1504) 에서의 전용 GPIO 핀 (1519) 으로부터 전용 GPIO 핀 (1521) 으로 송신될 수도 있다. 따라서, 종래의 접근법들은 호스트 디바이스 (1502) 와 주변장치 디바이스 (1504) 사이에 GPIO 신호들을 통신하기 위해, 대응하는 상호접속부들 (1515) 과 함께, 호스트 디바이스 (1502) 및 주변장치 디바이스 (1504) 에서 다수의 물리 핀들 (1514) 을 필요로 할 것이다.
도 15 에 나타낸 바와 같이, VGI FSM (1508) 은 메시징 신호들 (1528) (예컨대, I3C 신호들) 을 수신하고 송신하는 것과 관련하여, 대응하는 프로세서 (예컨대, CPU (1506)) 와 직접 인터페이스할 수도 있다. 메시징 신호들 (1528) 이 GPIO 신호들이 아니므로, 이들은 GPIO 인터페이스들을 통해서 커플링하지 않는다. 일 양태에서, 각각의 VGI FSM (1508) 은 그의 전용 송신 핀 (1534) 및 수신 핀 (1536) 을 통해서 메시징 신호들 (1528) 을 송신하고 수신할 수도 있다. 따라서, 전용 송신 핀 (1534) 및 수신 핀 (1536) 이 가상 GPIO 신호들 (예컨대, VGI 링크 인터페이스 (1522) 를 통한 GPIO 레지스터들 (1526) 통신으로부터의 GPIO 신호들) 및 메시징 신호들 (1528) 양쪽에 사용될 수도 있다.
일 양태에서, GPIO 레지스터들 (1526) 로부터의 GPIO 신호들이 VGI 링크 인터페이스 (1522) 를 통해서 가상 GPIO 신호들로서 송신되거나 및/또는 수신될 때, 물리 핀들 (1514) 이 다른 목적들을 위해 할당될 수도 있음을 알 수 있을 것이다. 따라서, GPIO 네트워크 (1500) 는 GPIO 레지스터들 (1526) 의 GPIO 신호들이 그들 자신의 물리 핀을 각각 필요로 하는 종래의 GPIO 접근법에 비해, (예컨대, 호스트 디바이스 (1502) 및/또는 주변장치 디바이스 (1504) 상에서) 핀들의 현저한 감소를 달성할 수도 있다. 도 15 에 나타낸 바와 같이, VGI FSM (1508) 은 인터페이스 (1554) 를 통해서 GPIO 레지스터들 (1526) 에 대응하는 GPIO 신호들에 액세스할 수도 있다.
일 양태에서, 도 15 를 참조하면, GPIO 레지스터들 (1526) 의 GPIO 신호들이 GPIO 인터페이스 (1512) 를 통해서 VGI FSM (1508) 에 의해 독립적으로 액세스될 수도 있기 때문에, 호스트 디바이스 (1502) (및/또는 주변장치 디바이스) 에서의 VGI FSM (1508) 에 대응하는 CPU (1506) 는 휴지상태이거나 또는 다른 유형의 휴면 상태에 있을 수도 있으며, 그럼에도 불구하고 GPIO 레지스터들 (1526) 과 연관된 GPIO 신호들 뿐만 아니라 메시징 신호들 (1528) 을 수신할 수도 있다. 이러한 방식으로, GPIO 네트워크 (1500) 는 각각의 GPIO 인터페이스 (1512) 에 대한 핀들의 수를 유리하게 절약할 뿐만 아니라, 소비 전력을 감소시킨다.
CPU (1506) 는 GPIO 레지스터들 (1526) 과 연관된 GPIO 신호들에서의 변화들 또는 메시징 신호들 (1528) 에서의 변화들에 응답하여 인터럽트 신호를 수신할 필요가 있을 수도 있다. 가상 GPIO 신호들 (예컨대, GPIO 레지스터들 (1526) 의 직렬화된 GPIO 신호들) 및 메시징 신호들 (1528) 에 대해, 인터럽트 제어기 (1524) 는 인터럽트 구성 레지스터들 (미예시) 을 통해서 프로그래밍된 바와 같은 선택된 GPIO 신호들 또는 메시징 신호들을 모니터링한다. GPIO 레지스터들 (1526) 의 각각의 GPIO 신호는 대응하는 인터럽트 구성 레지스터를 가질 수도 있다. GPIO 레지스터들 (1526) 의 GPIO 신호가 그 신호 변화 상태에 응답하여 인터럽트를 발생시키도록 요구되면, 그에 따라서, 대응하는 구성 레지스터가 프로그래밍될 것이다. 이와 유사하게, GPIO 레지스터들 (1526) 의 GPIO 신호 또는 메시징 신호 (1528) 가 그 신호가 변화된 상태를 가지는지 여부에 관계없이 인터럽트를 발생시키지 않는 신호이면, 그에 따라서, 대응하는 인터럽트 구성 레지스터가 또한 프로그래밍될 것이다. 일부 양태들에서, 인터럽트 제어기 (1524) 는 또한 유한 상태 머신을 포함할 수도 있다. 따라서, VGI FSM (1508) 과 유사하게, 인터럽트 제어기 (1524) 는 저 전력 디바이스이며, 그의 CPU (1506) 가 슬립 모드 또는 어떤 다른 휴면 상태에 있는지 여부에 관계없이 활성화된다.
일 양태에서, 대응하는 VGI FSM (1508) 의 CPU (1506) 는 어드레스를 그 VGI FSM (1508) 에 할당할 수도 있다. 따라서, VGI FSM (1508) 은 주어진 메시징 신호 (1528) 가 대응하는 메시징 레지스터 (예컨대, 메시징 레지스터 (1530)) 에 저장될 수 있도록, 메시징 신호들 (1528) 내의 어드레스 필드 (1556) 를 디코딩하도록 구성될 수도 있다. 이들 메시징 레지스터들 (1530) 은 대응하는 CPU (예컨대, 호스트 디바이스에서 또는 주변장치 디바이스 (1504) 에서의 CPU (1506)) 에 대한 어드레스 공간 내 VGI FSM (1508) 에 대한 일반 어드레스의 일부 오프셋에 각각 맵핑된다. 인터럽트 제어기 (1524) 로부터의 인터럽트에 응답하여, CPU (1506) 는 그후 메시징 레지스터들 (1530) 에 액세스하여 적합한 메시징 신호들 (1528) 을 획득할 수도 있다. 앞에서 설명된 가상 GPIO 신호들과 유사하게, 메시징 신호들 (1528) 은 송신 세트 및 수신 세트로 세분될 수도 있다. 아키텍처가 대칭적인지 또는 비대칭적인지 여부에 관계없이, VGI FSM (1508) 에 의한 이들 송신 세트들의 결과적인 송신이 단일 송신 핀 (1534) 을 통해서 일어난다. 하나의 디바이스 (예컨대, 호스트 디바이스 (1502)) 로부터의 가상 GPIO 신호들의 송신 세트는 원격 디바이스 (예컨대, 주변장치 디바이스 (1504)) 에 대한 가상 GPIO 신호들의 수신 세트가 된다. 이와 유사하게, 메시징 신호들 (1528) 의 송신 세트는 원격 디바이스 (예컨대, 주변장치 디바이스 (1504)) 에 대한 메시징 신호들 (1528) 의 수신 세트가 된다. 원격 디바이스 (예컨대, 주변장치 디바이스 (1504)) 의 VGI FSM (1508) 은 그후 가상 GPIO 신호들의 수신 세트를, 이들이 원격 디바이스에서의 GPIO 인터페이스 (1512) 에 병렬로 제공되도록 비직렬화한다.
일 양태에서, 도 15 에서의 각각의 VGI FSM (1508) 은 가상 GPIO 신호들 (예컨대, GPIO 레지스터들 (1512) 의 직렬화된 GPIO 신호들) 의 송신 세트에 대한, 그리고 메시징 신호들 (1528) 에 대한, 이전 상태를 저장하는 구성 레지스터들 (예시의 용이를 위해 도 15 에서 생략됨) 을 포함할 수도 있다. 이러한 방식으로, 각각의 VGI FSM (1508) 은 GPIO 인터페이스 (1512) 로부터 수신되는 바와 같은 가상 GPIO 신호들의 송신 세트의 현재 상태를 모니터링하고, 단지 현재 상태가 이전 상태에 대해 변화된 경우에만 대응하는 송신 세트의 직렬 송신만을 트리거할 수도 있다. 다시 말해서, VGI FSM (1508) 은 단지 송신 세트 내 신호들 중 하나 이상이 구성 레지스터들에서의 이전 상태의 저장을 통해서 검출될 때 변화된 상태를 가지는 경우에만 송신 세트의 직렬 송신을 트리거할 수도 있다. 각각의 CPU (1506) 는 메시징 신호 레지스터들 (1530) 에 대한 어드레스들을 알 수 있으며, 따라서, 그들에 원하는 송신 세트를 기록할 수도 있으며 또한 수신 세트에서 임의의 변화들을 판독할 수도 있다. VGI FSM (1508) 은 메시징 신호들 (1528) 의 송신 세트가 이들의 이전 송신에 대해 변화되었는지 여부를 모니터링하고 그에 따라서 원격 프로세서로의 송신 세트의 송신을 트리거할 것이다. 인터럽트 제어기 (1524) 는 수신 세트들이 앞에서 설명한 바와 같이 변화되었는지 여부를 모니터링하고, 변화된 수신 세트가 프로세싱될 수 있도록 대응하는 CPU (1506) 를 인터럽트할 수도 있다.
집적 회로는 단지 하나의 VGI FSM (1508) 을 포함할 수도 있거나 또는 다수의 외부 시스템들과 인터페이스하는 복수의 이들 엘리먼트들을 포함할 수도 있다. 도 16a 는 호스트 디바이스 (1602) 가 자신의 VGI FSM (1616) 을 포함하는 원격 디바이스 (1604) 와 통신하기 위한 단일 VGI FSM (1616) 을 포함하는 GPIO 네트워크 (1600) 를 예시한다. 이에 반해, 도 16b 에 나타낸 호스트 디바이스 (1652) 는 디바이스들 (1654 및 1656) 에서의 원격 프로세서들과 각각 통신하기 위한 VGI FSM (1616A) 및 VGI FSM (1616B) 을 포함한다. 이와 관련하여, SoC 는 다른 SoC들과의 VGI 시그널링을 수용하는데 필요한 만큼의 VGI FSM들로 구성될 수도 있다. CPU 가 가질 수도 있는 VGI FSM들의 개수에 관계없이, 각각의 VGI FSM 은 도 16a 에 나타낸 바와 같이 그 자신의 전용 송신 핀 (1606) 및 수신 핀 (1608) 을 이용하여 통신한다.
위에서 설명한 바와 같이, 각각의 VGI FSM (1508) 은 각각의 송신 세트를 직렬화하고 각각의 수신 세트를 비직렬화하는 직렬화기/비직렬화기로서 기능한다. 도 17 은 이들 동작들을 더 잘 예시하기 위한 FSM (1508) 의 블록도이다. VGI FSM (1508) 은 멀티플렉싱 모듈 (1700) 을 통해서 대응하는 CPU (1506) 와 가상 GPIO 신호들 (1518) 및 메시징 신호들 (1528) 을 교환한다. 멀티플렉싱 모듈 (1700) 은 가상 GPIO 신호들 (1518) 에 대해 GPIO 인터페이스 (1512) 를 통해서 대응하는 CPU (1506) 와 인터페이스하며, 메시징 신호들 (1528) 에 대해서는 대응하는 CPU (1506) 와 직접 인터페이스한다. 일 실시형태에서, 각각의 VGI FSM (1508) 은 단지 송신 세트에서 변화가 있는 경우에만 송신 라인 (1546) 을 통한 가상 GPIO 신호들 (1518) 의 송신 세트 또는 메시징 신호들 (1528) 의 송신 세트의 송신을 인가할 로직 회로 (1702) 를 포함한다. 따라서, 로직 회로 (1702) 는 가상 GPIO 신호들 (1518) (또는, 메시징 신호들 (1528)) 의 송신 세트에 대한 현재의 상태를 대응하는 구성 레지스터들 (1704) 에 저장된 바와 같은 이 송신 신호들의 세트에 대한 이전 상태와 비교한다. 예를 들어, 로직 회로 (1702) 는 이 비교를 수행하기 위해 XOR 게이트 (1706) 를 포함할 수도 있다. 멀티플렉싱 모듈 (1700) 은 송신 세트를 병렬로 병렬입력 직렬출력 (PISO) 시프트 레지스터 (1708) 에 로드한다. XOR 게이트 (1706) 로부터의 인에이블 신호 (1709) 가 (송신 세트에 대한 현재의 상태와 이전 상태 사이의 변화를 표시하는) 하이로 되면, PISO 시프트 레지스터 (1708) 는 외부 클록 (1550) 의 사이클들에 응답하여 그의 콘텐츠를 송신 라인 (1546) 상으로 직렬로 시프트 아웃 (shift out) 하도록 인에이블된다.
VGI FSM (1508) 은 또한 직렬 입력-병렬 출력 (SIPO) 시프트 레지스터 (1710) 를 이용하여 유사한 방식으로 가상 GPIO 신호들 (1518) 또는 메시징 신호들 (1528) 의 수신 세트를 비직렬화한다. 가상 GPIO 신호들 (1518) 및 메시징 신호들 (1528) 의 수신 세트는 원격 CPU 에 의해 발생되어 원격 CPU 에 의해 수신 라인 (1548) 상으로 송신된다. 이 가상 GPIO 신호들 (1518) (또는, 메시징 신호들 (1528)) 의 수신 세트는 외부 클록 (1550) 의 사이클들에 응답하여 SIPO 시프트 레지스터 (1710) 로 연속적으로 시프트된다. VGI FSM (1508) 은 본원에서 추가로 설명된 바와 같이 별개의 시작 비트 및 최종 비트를 가지는 프레임들에서 가상 GPIO 신호들 (1518) 및 메시징 신호들 (1528) 의 송신 세트를 송신하고 수신 세트를 수신하도록 구성된다. 앞에서 설명된 프레임들은 미리 정의된 사이즈를 가질 수도 있다. 일 실시형태에서, 프레임 사이즈는 도 14a 와 관련하여 설명된 VGI 패킷 (1400) 에 대해 앞에서 설명된 바와 같이 헤더가 어떤 비트수 길이가 되도록 결정된다.
가상 GPIO 신호들 (1518) 또는 메시징 신호들 (1528) 의 수신 세트에 대한 완전한 프레임의 수신을 검출하기 위해, VGI FSM (1508) 은 프레임에 대한 시작 비트의 수신 후 외부 클록 (1550) 에 대한 필요한 사이클들의 개수를 카운트하는, 도 17 에 나타낸 바와 같은 로직 회로 (1712) 를 포함할 수도 있다. 예를 들어, 수신 세트가 외부 클록 (1550) 의 10개의 사이클들에 응답하여 수신되는 10개의 가상 GPIO 신호들 (1518) 을 포함한다고 가정하자. 시작 비트의 검출 및 외부 클록 (1550) 의 다른 10개의 사이클들을 대기한 후, 로직 회로 (1712) 는 최종 비트의 수신을 예상할 것이다. 그에 따라서 최종 비트가 검출되면, 로직 회로 (1712) 는 그후 SIPO 시프트 레지스터 (1710) 에 완전한 프레임으로서 시프트된 가상 GPIO 신호들 (1518) 의 수신 세트를 병렬로 수신하기 위해 출력 래치 (1714) 를 스트로브 (strobe) 할 수도 있다. 가상 GPIO 신호들의 래치된 수신 세트는 그후 멀티플렉싱 모듈 (1700) 을 통해서 GPIO 인터페이스 (1512) 에 제공될 수도 있다. 수신된 메시징 신호들 (1528) 의 세트의 래칭이 유사하게 일어나지만, 수신된 메시징 신호들의 세트가 GPIO 인터페이스 (1512) 를 통해서 라우팅되는 대신, 메시징 신호 레지스터들 (1528) 에 로드된다.
PISO 시프트 레지스터 (1708) 를 다시 참조하면, 이 레지스터가 시작 및 최종 비트들을 가진 가상 GPIO 신호들 (1518) 및 메시징 신호들 (1528) 의 송신 세트를 프레임하도록 구성된다는 것을 알 수 있다. 따라서, 가상 GPIO 신호들의 송신 세트가 시작 및 최종 비트들 (1404, 1410) 에 의해 구분되는 VGI 패킷 (14000) 으로 송신된다. 송신 프로세서에 대한 송신 세트가 원격 CPU 에 대한 수신 세트가 되므로, 그에 따라서 수신 세트가 또한 패키지된다. 이 패키징은 각각의 CPU 가 임의의 추가적인 전용 핀들을 요함이 없이 원격 CPU 의 상태 (health) 를 모니터링할 수 있다는 점에서 유리하다. 예를 들어, 각각의 VGI FSM (1508) 은 그의 전용 송신 핀 (예컨대, 호스트 디바이스 (1502) 에서의 핀 (1534) 또는 주변장치 디바이스 (1504) 에서의 핀 (1542)) 을 디폴트 상태 (가상 GPIO 신호들의 송신 세트에 대한 현재의 상태 대 이전 상태에서 어떤 변화도 없음) 동안 공급 전압까지 약하게 풀 (pull) 하도록 구성될 수도 있다. 이러한 일 실시형태의 경우 시작 비트는 VGI FSM (1508) 이 시작 비트의 송신을 위해 송신 라인 (1546) 을 접지시키도록 로직 제로일 것이다. 이러한 방식으로, 각각의 VGI FSM (1508) 은 수신 라인 (1548) 이 접지까지 풀되는 것을 검출함으로써 시작 비트의 수신을 용이하게 검출할 수도 있다. 일 실시형태에서, 시작 및 정지 비트들은 서로 논리 보수들 (logical complements) 이다. 따라서, 정지 비트는 시작 비트가 로직 제로이면, 로직 하이 값일 것이다. VGI 패킷의 페이로드는 그후 유형 비트로부터 패킷 최종 단부 (end) 를 한정하는 정지 비트 (1410) 로 확장할 수도 있다.
CPU 가 그의 송신 라인 (1546) 을 접지까지 부적절하게 풀하는데 실패할 가능성이 있다. 따라서, 원격 프로세서가 이것을 시작 비트로서 검출할 것이며 로직 회로 (1712) 가 그에 따라서 VGI 패킷의 끝을 향해 카운트하기 시작할 것이다. 그러나, 최종 비트가 로직 1 이면, 각각의 VGI FSM (1508) 은 프레임 송신의 종료를 시그널링하기 위해 송신 라인 (1546) 을 공급 전압까지 충전한다. 원격 VGI FSM (1508) 이 시작 비트로 간주되는 것을 검출하는데 CPU 가 실패하였으면, 로직 회로 (1712) 는 최종 비트를 검출하지 않을 것이며 그에 따라서 그의 프로세서에게 원격 프로세서의 고장을 통지할 것이다.
수신에 충분한 셋업 시간을 허용하기 위해, VGI 패킷 (1400) 의 송신이 제 1 클록 에지에 대해 발생해야 하며 수신이 나머지 클록 에지에 대해 발생해야 한다. 예를 들어, PISO 시프트 레지스터 (1708) 에서의 비트들은 외부 클록 (1550) 에 대한 하강 에지들 또는 음의 에지들에 응답하여 송신 라인 (1546) 상의 송신을 위해 시프트 아웃될 수도 있다. 반대로, 수신 라인 (1548) 상에서의 수신된 비트들은 클록 (1550) 의 상승 에지들 또는 양의 에지들에 응답하여 SIPO 시프트 레지스터 (1710) 로 시프트될 수도 있다.
하나의 프로세서가 원격 프로세서에서의 비활성 상태를 검출하기 위해, 각각의 VGI FSM (1508) 은 (어떤 송신할 프레임들도 없는) 디폴트 상태에서 그의 송신 라인을 하이로 약하게 풀하도록 구성될 수도 있다. 전술한 바와 같이, 시작 및 정지 비트들은 반대 로직 상태들을 갖는다. 따라서, 도 14a 의 VGI 패킷 (1400) 에 대한 시작 비트 (1404) 는 송신 라인 (1546) 이 그의 송신을 위해 로우로 풀되도록 로직 값 '0' (접지) 을 가질 수도 있으며, 반면 정지 비트 (1406) 는 송신 라인 (1546) 이 그의 송신을 위해 전원 전압까지 하이로 풀되도록 로직 값 '1' 일 수도 있다. 다시 도 17 을 참조하면, 로직 회로 (1712) 는 외부 클록 (1550) 상의 상승 에지들에 대해 수신 라인 (1548) 을 모니터링하도록 구성된다. 무프레임 (no-frame) 송신의 디폴트 로직 상태는 앞에서 설명된 바와 같은 그의 약한 풀-업 때문에 단순히 하이로 유지하는 수신 라인 (1548) 으로 표시된다. 로직 회로 (1712) 가 외부 클록 (1550) 에 대한 상승 에지들 중 하나에서, 수신 라인 (1548) 이 (시작 비트 (1404) 의 제로 값을 표시하는) 로우로 풀된다는 것을 검출하면, 로직 회로 (1712) 는 VGI 패킷 (1400) 의 미리 정의된 사이즈에 따라서 충분한 수의 클록 사이클들을 대기한 후, 정지 비트 (1410) 의 로직 하이 값을 검출한다. 정지 비트 (1410) 의 수신은 완전한 VGI 패킷 (1400) 이 SIPO 시프트 레지스터 (1710) 에 완전히 시프트되었다는 것을 로직 회로 (1712) 에 표시한다. 그 시점에서, 로직 회로 (1712) 는 수신된 프레임이 래치 (1714) 를 통해서 멀티플렉싱 모듈 (1700) 에 병렬로 제공되도록 SIPO 시프트 레지스터 (1710) 를 스트로브한다. 그에 따라서, 가상 GPIO 신호들 (또는, 메시징 신호들 (1528)) 의 수신 세트가 그후 GPIO 인터페이스 (1512) 를 통해서 프로세서 코어에 제공될 수도 있다.
32 KHz 슬립 (sleep) 클록과 같은, 상대적으로 느린 외부 클록 (1550) 이 IPC 의 시그널링 요건들에 충분할 수도 있다. 예를 들어, 가상 GPIO 신호들 (1518) 및 메시징 신호들 (1528) 의 송신을 위한 최소 셋업 및 유지 요건들이 각각 2 나노초이고 VGI FSM (1508) 에서의 외부 클록 (1550) 의 수신을 위한 최대 예상된 리드 (lead) 또는 지연이 6 나노초라고 가정한다. 외부 클록 (1550) 에 대한 결과적인 최대 주파수가 62 MHz 가 된다는 것을 쉽게 알 수 있다. 따라서, 이러한 일 실시형태의 경우, 예컨대, 슬립 클록으로부터의, 32 KHz 주파수는 아주 큰 안전의 마진들을 제공할 것이다.
도 18 은 예시적인 VGI 구현예들을 예시하는 다이어그램이다. 도 18 은 주변장치 디바이스 (1806) 에 커플링된 호스트 디바이스 (1804) (예컨대, 호스트 SoC) 를 포함하는 예시적인 구성 (1802) 을 나타낸다. 호스트 디바이스 (1804) 및 주변장치 디바이스 (1806) 는 저속 (LS) 인터페이스 (I/F) (1808) 를 통해서 신호들을 전송할 수도 있으며 N 개의 측파대 GPIO들을 전송할 수도 있다. 제 1 예시적인 VGI 구현예에서, 구성 (1812) 에 나타낸 바와 같이, 호스트 디바이스 및 주변장치 디바이스는 3-와이어 동기 풀 듀플렉스 VGI 구현예를 이용하여 커플링된다. 제 2 예시적인 VGI 구현예에서, 구성 (1814) 에 나타낸 바와 같이, 호스트 디바이스 및 주변장치 디바이스는 2-와이어 비동기 풀 듀플렉스 VGI 구현예를 이용하여 커플링된다. 구성 (1814) 에서, 호스트 디바이스 및 주변장치 디바이스 각각은 I3C 물리 링크와 같은 일반적인 물리 링크를 이용할 수 있는 VGI FSM 을 포함한다. 구성 (1814) 은 NRZ 메시징 (UART), 내장 GPIO들/인터럽트들, 및/또는 대역내 흐름-제어를 가능하게 할 수도 있다. 제 3 예시적인 VGI 구현예에서, 구성 (1816) 에 나타낸 바와 같이, 호스트 디바이스 및 주변장치 디바이스는 2 와이어 (2W) 동기 하프-듀플렉스 VGI 구현예를 이용하여 커플링된다. 구성 (1816) 에서, 호스트 디바이스 및 주변장치 디바이스 각각은 I3C 물리 링크와 같은 일반적인 물리 링크를 이용할 수 있는 VGI FSM 을 포함한다.
도 19 는 예시적인 범용 입력/출력 (GPIO) 네트워크 (1900) 의 블록도를 예시한다. 호스트 디바이스 (1902) (예컨대, 호스트 SoC) 는 복수의 n 개의 주변장치 디바이스들 (예컨대, 카메라 #1 (1904), 카메라 #2 (1906), 센서 #1 (1908), 터치 스크린 제어기 (1910), 및 주변장치 디바이스 #n (1912)) 상의 대응하는 GPIO 핀들과 인터페이스하기 위한 복수의 GPIO 핀들을 포함하며, 여기서, n 은 1 보다 큰 양의 정수이다. 일 양태에서, n 개의 주변장치 디바이스들의 각각은 도 19 에서의 대응하는 n 개의 주변장치 디바이스들에 할당된 어드레스들 (1914, 1916, 1918, 1920, 및 1920) 과 같은 할당된 어드레스를 가질 수도 있다. 예를 들어, 주변장치 디바이스 (1904) 는 어드레스 0x01 을 가질 수도 있으며 주변장치 디바이스 (1906) 는 어드레스 0x02 를 가질 수도 있다. 도 19 의 예시적인 구성에서, 카메라 #1 (1904) 은 호스트 디바이스 (1902) 로부터 3개의 GPIO 신호들을 수신할 수도 있다. 예를 들어, 그리고 도 19 에 나타낸 바와 같이, 카메라 #1 (1904) 은 호스트 디바이스 (1902) 의 핀 3 (1932), 핀 4 (1934), 및 핀 5 (1936) 로부터 대응하는 GPIO 신호들을 수신하기 위한 핀 1 (1938), 핀 2 (1940), 및 핀 3 (1942) 과 같은, 3개의 핀들을 갖는다. 도 19 의 예에서, 핀 1 (1938) 에서 수신된 GPIO 신호는 대기 신호일 수도 있으며, 핀 2 (1940) 에서 수신된 GPIO 신호는 리셋 신호일 수도 있으며, 핀 3 (1942) 에서 수신된 GPIO 신호는 플래시 신호일 수도 있다. 다른 예로서, 그리고 도 19 에 나타낸 바와 같이, 카메라 #2 (1906) 는 호스트 디바이스 (1902) 의 핀 6 (1948) 및 핀 7 (1936) 로부터 대응하는 GPIO 신호들을 수신하기 위한 핀 1 (1944) 및 핀 2 (1946) 와 같은 2개의 핀들을 갖는다. 도 19 의 예에서, 핀 1 (1944) 에서 수신된 GPIO 신호는 대기 신호일 수도 있으며, 핀 2 (1946) 에서 수신된 GPIO 신호는 리셋 신호일 수도 있다. 나머지 주변장치 디바이스들 (예컨대, 센서 #1 (190), 터치 스크린 제어기 (1910), 및 주변장치 #n (1912)) 은 도 19 에 나타낸 바와 같이 이들의 대응하는 핀들에서 호스트 디바이스 (1902) 로부터 GPIO 신호들을 유사하게 수신할 수도 있다. 도 19 에 있어서, 이러한 GPIO 신호들은 측파대 GPIO 신호들 (1930) 로서 일괄하여 지칭된다. 일 양태에서, 호스트 디바이스 (1902) 는 GPIO 입력 핀 1 (1952) 및 GPIO 출력 핀 2 (1954) 를 포함할 수도 있다. 호스트 디바이스 (1902) 는 I3C 버스 (1924) 를 통해서 n 개의 주변장치 디바이스들 (예컨대, 카메라 #1 (1904), 카메라 #2 (1906), 센서 #1 (1908), 터치 스크린 제어기 (1910), 및 주변장치 디바이스 #n (1912)) 에서의 대응하는 I3C 인터페이스들 (도 19 에 미도시) 로 통신하기 위한 I3C 인터페이스 (1928) (또한, I3C 포트로 지칭됨) 를 더 포함할 수도 있다. 일 양태에서, I3C 버스 (1924) 는 데이터 리드 (1926) 및 클록 리드 (1928) 를 포함할 수도 있다. 본 개시물의 양태에서, 호스트 디바이스 (1902) 상의 핀들 (예컨대, 핀들 3 내지 14) 과 연관된 하드웨어 이벤트들은 I3C 메시지들로 변환될 수도 있다. 도 20 을 참조하여 아래에서 설명되는 바와 같이, I/O 맵핑 테이블 (또한, 호스트 테이블으로 지칭됨) 은 하드웨어 이벤트들과 목적지 주변장치의 I/O 사이의 대응을 맵핑하도록 생성될 수도 있다.
도 20 은 호스트 디바이스의 I/O들을 주변장치들의 I/O들에 맵핑하기 위한 I/O 맵핑 테이블 (2000) 이다. 예를 들어, 도 20 에 나타낸 바와 같이, I/O 맵핑 테이블 (2000) 은 호스트 디바이스의 I/O들을 표시하는 제 1 칼럼 (2002), 호스트 디바이스에 대한 신호 전송 방향들 (예컨대, 출력 (O/P) 또는 입력 (I/P)) 을 표시하는 제 2 칼럼 (2004), 주변장치 디바이스들의 어드레스들을 표시하는 제 3 칼럼 (2006), 주변장치 디바이스들의 I/O 넘버들을 표시하는 제 4 칼럼 (2008), 주변장치 디바이스들의 I/O들에 대응하는 파라미터들을 표시하는 제 5 칼럼 (2010), 및 호스트 디바이스로부터의 브로드캐스트 출력 패킷들에서의 I/O들의 로케이션들을 표시하는 제 6 칼럼 (2012) 을 포함한다. 예를 들어, 호스트 디바이스의 I/O들은 도 19 에서의 호스트 디바이스 (1902) 의 핀들 1-14 일 수도 있다. 이러한 예에서, 주변장치 디바이스들의 I/O 넘버들을 표시하는 제 4 칼럼 (2008) 은 호스트 I/O들 1-14 에 대응하는 주변장치 디바이스들의 I/O들을 포함할 수도 있다. 따라서, I/O 맵핑 테이블 (2000) 의 I/O 맵핑은 호스트 디바이스의 I/O들과 주변장치 디바이스들의 I/O들 사이에 일 대 일 연관을 설정할 수도 있다. 호스트 디바이스 (예컨대, 호스트 디바이스 (1902)) 는 이 맵핑을 별개의 테이블로 유지할 수도 있다. 일 양태에서, I/O 맵핑 테이블 (2000) 은 호스트 디바이스와 주변장치 디바이스들 사이의 사설 계약에 의해 버스 (예컨대, I3C 버스) 상의 모든 주변장치 디바이스와 공유될 수도 있다. 일 양태에서, 입력들은 IBI 및 사설 계약 교환을 이용하여, 또는 다이렉트된 판독 동작에서 나타낸 바와 같은 판독 동작을 통해서 관리될 수도 있다.
도 21 은 예시적인 범용 입력/출력 (GPIO) 네트워크 (2100) 의 블록도를 예시한다. GPIO 네트워크 (2100) 는 호스트 디바이스 (2102) 및 주변장치 디바이스 (2104) 를 포함한다. 도 21 에 나타낸 바와 같이, 호스트 디바이스 (2102) 는 I3C 버스 (2116) 를 통해서 주변장치 디바이스 (2104) 와 통신한다. 예를 들어, I3C 버스 (2116) 는 데이터용 리드 및 클록 신호용 리드를 포함하는 2 와이어 버스일 수도 있다. 도 21 의 구성에서, 호스트 디바이스 (2102) 에서 유래하는 (예컨대, 영역 (2112) 에 "1", "2", 및 "3" 으로서 라벨링된) 하드웨어 이벤트들은 인터럽트 제어기 (2108) 에 의해 수신될 수도 있다. 예를 들어, 하드웨어 이벤트들 (2112) 은 내부 하드웨어 이벤트들 (예컨대, 내부 레지스터 액세스가능한 비트들) 일 수도 있다. 다른 양태들에서, 외부 하드웨어 이벤트들 (예컨대, 외부 액세스가능한 핀들) 이 가능하다. 인터럽트 제어기 (2108) 는 CPU 콤플렉스 (2110) 가 주변장치 디바이스 (2104) 로의 송신을 위해 레지스터 맵핑된 I3C 패킷들을 발생시킬 수 있도록 하드웨어 이벤트들을 CPU 콤플렉스 (2110) 로 통신할 수도 있다. 예를 들어, 이러한 레지스터 맵핑된 I3C 패킷들은 호스트 디바이스 (2102) 의 I3C IP 블록 (2106) 및 I3C 버스 (2116) 를 통해서 주변장치 디바이스 (2104) 로 송신될 수도 있다. 주변장치 디바이스 (2104) 는 I3C IP 블록 (2118) 에서 레지스터 맵핑된 I3C 패킷들을 수신할 수도 있으며, I3C IP 블록 (2118) 은 레지스터 맵핑된 I3C 패킷들을 MPU (2120) 로 제공할 수도 있다. MPU (2120) 는 그후 (예컨대, 영역 (2122) 에 "1", "2", 및 "3" 으로 라벨링된) 하드웨어 이벤트들을 식별할 수도 있다.
도 22 는 본 개시물의 여러 양태들에 따른, 예시적인 범용 입력/출력 (GPIO) 네트워크 (2200) 의 블록도를 예시한다. GPIO 네트워크 (2200) 는 호스트 디바이스 (2202) 및 주변장치 디바이스 (2204) 를 포함한다. 도 22 에 나타낸 바와 같이, 호스트 디바이스 (2202) 는 I3C 버스 (2216) 를 통해서 주변장치 디바이스 (2204) 와 통신한다. 도 22 의 구성에서, 호스트 디바이스 (2202) 에서 유래하는 (예컨대, 영역 (2212) 에 "1", "2", 및 "3" 로 라벨링된) 하드웨어 이벤트들은 VGI FSM (2208) 에 의해 수신될 수도 있다. 예를 들어, 하드웨어 이벤트들 (2212) 은 내부 하드웨어 이벤트들 (예컨대, 내부 레지스터 액세스가능한 비트들) 일 수도 있다. 다른 양태들에서, 외부 하드웨어 이벤트들 (예컨대, 외부 액세스가능한 핀들) 이 가능하다. VGI FSM (2208) 은 주변장치 디바이스 (2204) 로의 송신을 위해 하드웨어 이벤트들을 포함하는 VGI 패킷들을 발생시킬 수도 있다. 예를 들어, 이러한 VGI 패킷들은 호스트 디바이스 (2202) 의 I3C IP 블록 (2206) 및 I3C 버스 (2216) 를 통해서 주변장치 디바이스 (2204) 로 송신될 수도 있다. 주변장치 디바이스 (2204) 는 I3C IP 블록 (2218) 에서 VGI 패킷들을 수신할 수도 있으며, I3C IP 블록 (2218) 은 VGI 패킷들을 VGI FSM (2220) 에 제공할 수도 있다. VGI FSM (2220) 은 그후 (예컨대, 영역 (2222) 에서 "1", "2", 및 "3" 으로서 라벨링된) 하드웨어 이벤트들을 식별할 수도 있다. 도 22 의 구성에서, VGI FSM (2208) 은 호스트 디바이스 (2202) 에서의 CPU (2210) 의 개입 없이 (예컨대, VGI 패킷들을 발생시키기 위해 웨이크 업함이 없이) VGI 패킷들을 발생시켜 송신할 수도 있으며, 반면, 도 21 의 구성은 VGI 패킷들을 발생시켜 송신하기 위해 호스트 디바이스 (2102) 에서의 CPU (2110) 의 개입 (예컨대, VGI 패킷들을 발생시키기 위해 웨이크 업) 을 필요로 한다는 점에 유의해야 한다.
VGI 프로토콜 및 VGI 오버 I3C 프로토콜 (VGI over I3C protocol) 이 마스크된 및 비-마스크된 모드들에서 다이렉트된 및 브로드캐스트 구성들을 이용하여 I/O 상태 전송 피쳐들을 인에이블할 수도 있지만, 본원에서 설명하는 양태들은 (구동 강도, 극성, 슬루 레이트 등과 같은) I/O 핀에 대한 전기 구성들을 송신하기 위한 접근법들을 포함한다. 본원에서 설명할 때, 맵핑된 I/O들에 대한 다양한 I/O 구성 프로토콜들이 주어진 유즈 케이스에 대해 최소 레이턴시를 제공하는 패킷 구조의 이용가능성을 보장하도록 구현될 수도 있다. 일 양태에서, 그리고 본원에서 설명된 바와 같이, 별개의 구성 및 이벤트 메시지들이 구현될 수도 있다. 다른 양태들에서, 구성 신호들 및 이벤트 신호들 양쪽을 포함하는 병합된 메시지가 구현될 수도 있다. 예를 들어, I/O 전기 구성이 드물게 요구되는 상황들에서 별개의 메시지 프로토콜이 구현될 수도 있다. 다른 예에서, I/O 전기 구성들이 빈번하게 요망되는 상황들에서는 병합된 메시지 프로토콜이 구현될 수도 있다. 대부분의 경우들에서는 별개의 메시지 프로토콜이 I/O 전송 레이턴시에서의 현저한 감소를 제공할 수도 있지만, 병합된 프로토콜은 빈번한 I/O 구성 변화들이 요구될 때 레이턴시를 감소시킬 수도 있다.
VGI 메시징 접근법들
일 양태에서, 구성-전용 메시지가 구현될 수도 있다. 이것은 각각의 GPIO 핀과 연관된 특성들 또는 세팅들을 정의하기 위해 주변장치 레지스터에 저장된 메시지이다. 구성-전용 메시지는 호스트의 파워-업 시에 한번, 또는 호스트가 각각의 GPIO 핀과 연관된 특성들 또는 세팅들의 변경을 위해 주변장치 레지스터를 재구성하도록 요구할 때 마다 구현될 수도 있다. 다른 양태에서, 이벤트-전용 메시지가 구현될 수도 있다. 이벤트-전용 메시지는 단지 어드레스된 주변장치들의 GPIO 핀들의 이벤트 상태 (예컨대, 로직 '0' 또는 로직 '1' 과 같은 로직 값) 만을 식별하는 가상 GPIO 메시지이다. 일 양태에서, 이벤트-전용 메시지는 GPIO 핀의 로직 값이 변할 때 (또한, 이벤트 상태 변화로서 지칭됨) 마다 전송될 수도 있다. 다른 양태에서, 병합된 구성 및 이벤트 메시지가 구현될 수도 있다. 병합된 구성 및 이벤트 메시지 (또한, "플래튼된 (flattened)" 메시지로서 지칭됨) 는 직렬화된 구성 및 이벤트 정보를 메시지에 포함할 수도 있으며, 하나의 메시지에서 어드레스된 주변장치들의 GPIO 핀의 구성 및 이벤트 상태를 변경하기 위해 사용될 수 있다. 예를 들어, 병합된 구성 및 이벤트 메시지는 GPIO 핀의 이벤트 상태를 로직 '1' 로 변경하기 위해, 그리고 또한 GPIO 핀의 구동 강도를 20mA 로 변경하기 위해 사용될 수도 있다. 주변장치 디바이스는 메시지를, 그의 구성 테이블에서 주변장치 디바이스를 명령하는 호스트에 기초하여 병합된 구성 및 이벤트 메시지인 것으로 검출할 수도 있다. 다른 양태에서, 캡슐화된 메시지가 구현될 수도 있다. 이러한 양태에서, VGI I/O 또는 VGI 패킷은 임의의 일반적인 링크의 특정의 패킷 또는 프레임 구조 내에 내장될 수도 있다.
도 23 은 예시적인 I/O 구성들을 예시하는 다이어그램이다. 예를 들어, 도 23 에서의 I/O 구성들은 균일한 구성 레지스터 아키텍처에 기초한다. 디바이스 (예컨대, 주변장치 디바이스) 의 각각의 핀 (예컨대, 물리 핀 #0 (2302), 물리 핀 #1 (2304), 물리 핀 #N (2306)) 은 글로벌 핀 어드레스 (2308) 와 연관될 수도 있다. 예를 들어, 도 23 에서의 물리 핀 #0 (2302) 은 물리 핀 #0 베이스 어드레스 (2310) 와 연관될 수도 있다. 구성 레지스터 #0 (2312) 내지 구성 레지스터 #N (2316) 과 같은, 물리 핀 #0 (2312) 과 연관된 핀 구성 레지스터들은 (예컨대, 물리 핀 #0 베이스 어드레스 (2310) 에 대한 오프셋된) 오프셋 어드레스 로케이션들 (2314) 에 포함될 수도 있다. 도 23 의 양태에서, 구성 레지스터들 (예컨대, 구성 레지스터 (2312)) 은 8 비트 폭이다. 예를 들어, 이러한 8 비트는 대응하는 레지스터 비트들 (2318) 에서 비트들 D0 내지 D7 로서 표시된다. 그러나, 다른 양태들에서 구성 레지스터들은 8 보다 큰 비트 또는 8 보다 작은 비트를 가질 수도 있다. 더욱이, 글로벌 핀 어드레스들 (2308) 은 N-비트로 이루어질 수도 있으며, 여기서, N 은 구현예에 기초하여 선택되는 정수일 수도 있다. 도 23 에서, 물리 핀과 연관된 핀 상태 플롭은 대응하는 물리 핀의 이벤트 상태 (예컨대, 로직 '1' 또는 로직 '0') 를 저장할 수도 있다. 예를 들어, 물리 핀 #0 (2302) 과 연관된 물리 핀 구성 로직 및 I/O 셀 블록 (2320) 에서의 핀 상태 플롭 (2322) 은 물리 핀 #0 (2302) 의 이벤트 상태 (예컨대, 로직 '1' 또는 로직 '0') 를 저장할 수도 있다.
일 양태에서, 핀 상태 플롭에 저장된 바와 같은 물리 핀의 핀 상태 (예컨대, 이벤트 상태) 는 구성 레지스터의 특정의 비트에 미러링될 수도 있다. 아래에서 설명되는 바와 같이, 이러한 핀 상태의 미러링은 메시징의 상이한 모드들에 걸쳐서 가상 물리 핀 액세스를 편리하게 가능하게 할 수도 있다. 예를 들어, 도 23 을 참조하면, 핀 상태 플롭 (2322) 에 저장된 물리 핀 #0 (2302) 의 핀 상태는 (화살표 2326 으로 나타낸 바와 같이) 구성 레지스터 #N (2316) 의 비트 D7 (2324) 에 미러링될 수도 있다. 따라서, 구성 레지스터들은 물리 핀 구성 로직 및 I/O 셀 블록 (2320) 에서의 대응하는 물리 핀을 구성하기 위해 사용될 수도 있다. 도 23 에서의 나머지 물리 핀들 (예컨대, 물리 핀 #1 (2304) 내지 물리 핀 #N (2306)) 이 물리 핀 #0 (2302) 에 대해 위에서 설명한 방법과 유사한 방법으로 구성될 수도 있는 것으로 이해되어야 한다.
도 24 는 주변장치 디바이스의 물리 핀과 연관된 구성 레지스터들에 대한 예시적인 세팅들을 예시하는 다이어그램이다. 도 24 에서, 구성 레지스터 구조는 물리 핀 (2406) 을 구성하기 위한 2개의 8-비트 레지스터들 (예컨대, 구성 레지스터 A (2402) 및 구성 레지스터 B (2404)) 에 기초한다. 그러나, 다른 양태들에서는 상이한 개수의 구성 레지스터들이 구현될 수도 있는 것으로 이해되어야 한다. 더욱이, 다른 양태들에서, 구성 레지스터들의 각각은 8 보다 큰 비트 또는 8 보다 작은 비트를 포함할 수도 있다. 구성 레지스터 구조는 실리콘 레벨 구현 선택일 수도 있다. 일 예에서, 구성 레지스터 (2402) 는 도 23 의 구성 레지스터 #0 (2312) 에 대응할 수도 있으며, 구성 레지스터 (2404) 는 도 23 의 구성 레지스터 #N (2316) 에 대응할 수도 있으며, 물리 핀 (2406) 은 도 23 의 물리 핀 #0 (2302) 에 대응할 수도 있다. 도 23 의 양태에서, 구성 레지스터 B (2404) 의 비트 D7 은 도 23 에서의 구성 레지스터 #N (2316) 의 비트 D7 (2324) (또한, 핀-상태-미러 비트로서 지칭됨) 에 대응할 수도 있다.
도 24 를 참조하면, 예를 들어, 물리 핀 (2406) 의 구동 강도 (2408) 는 구성 레지스터 A (2402) 에서의 비트들 D0, D1, 및 D2 를 수정함으로써 제어될 수도 있다. 예를 들어, 및 도 24 에 나타낸 바와 같이, 2진 값 '000' 과 2진 값 '111' 사이의 8개의 2진 값들의 각각이 특정의 구동 강도 값을 표현하기 위해 만들어질 수도 있다. 따라서, 원하는 구동 강도 값에 대응하는 (예컨대, '000' 과 '111' 사이의) 2진 값에 따라서 구성 레지스터 A (2402) 에서의 비트들 D0, D1, 및 D2 를 설정함으로써, 호스트 디바이스는 주변장치 디바이스에서의 물리 핀 (2406) 의 구동 강도를 제어할 수도 있다. 물리 핀 (2406) 과 연관된 다른 특성들 및/또는 세팅들 (예컨대, 슬루 레이트, 인터럽트 인에이블/디스에이블, 에지/레벨 트리거된 인터럽트, I/O 전압 레벨, 등) 이 도 24 에 나타낸 바와 같이 구성 레지스터의 대응하는 비트들을 수정함으로써 제어될 수도 있음을 알 수 있다.
메시징 접근법들
메시징의 특정의 모드 내에서 최소 레이턴시를 달성하기 위해 상이한 유형들의 유즈 케이스들에 대해 상이한 메시징 접근법들이 구현될 수도 있다. 제 1 예의 경우, 물리 핀의 구성 (예컨대, I/O 전기 구성) 은 한번 또는 드물게 요구될 수도 있거나 및/또는 I/O (예컨대, 이벤트 상태들) 업데이트들은 더 빈번하게 요구될 수도 있다. 이러한 경우, I/O 전기 구성은 구성-전용 메시지들을 이용하여 수행될 수도 있다. 일 양태에서, I/O 전기 구성 후, 단지 I/O 상태만이 교환되도록 요구된다. I/O 상태 교환들은 다이렉트된 메시징, 브로드캐스트 메시징, 또는 다이렉트된 또는 브로드캐스트 접근법들을 이용한 마스크된 메시징과 같은 임의의 바람직한 접근법에 기초할 수도 있다. 제 2 예의 경우 (예컨대, 이벤트 상태 또는 I/O 메시징 전용), 물리 핀에 대한 전기 구성 설정을 요구하지 않기 때문에 내부 가상 I/O 대 내부 가상 I/O 접속이 구현될 수도 있다. 이것은 또한 전기 구성이 항상 고정되는 물리 핀 맵핑의 경우에 적용가능하다. 제 1 경우와 유사하게, I/O 상태 교환들은 제 1 경우와 관련하여 위에서 설명한 바와 같이 일어날 수도 있다. 제 3 예의 경우, 병합된 구성 및 이벤트 메시지가 구현될 수도 있다. I/O 이벤트 상태들 및 I/O 구성들 양쪽이 빈번하게 업데이트되어야 하는 상황에서, 이 접근법은 최적의 레이턴시 성능 (예컨대, 최저 레이턴시) 을 제공할 수도 있다. 일 양태에서, 이 접근법에서는 I/O 이벤트 상태 및 I/O 구성 정보가 패킷 (예컨대, 본원에서 개시된 바와 같은 VGI 패킷) 에 인터리브된다. 제 4 예의 경우, 캡슐화된 메시징이 구현될 수도 있다. 물리 계층 프로토콜이 그 자신의 고유한 헤더 구조를 가지면서 일반적인 페이로드를 허용하는 모든 인터페이스들에 대해, 캡슐화는 고려 중인 특정의 프로토콜의 페이로드 섹션 내에 VGI 패킷 구조를 내장하는 것을 가능하게 한다. 이 접근법은 낮은 복잡성을 가진 VGI FSM 의 사용을 가능하게 한다.
도 25 는 다이렉트 I/O 맵핑 레지스터를 예시하는 다이어그램이다. 도 25 에 나타낸 바와 같이, 다이렉트 I/O 맵핑 레지스터 (2508) 는 0x1111 과 같은 어드레스에 로케이트될 수도 있다. 도 25 의 양태에서, 다이렉트 I/O 맵핑 레지스터 (2508) 는 8 비트 (예컨대, D0 내지 D7) 를 포함할 수도 있다. 다른 양태들에서, 다이렉트 I/O 맵핑 레지스터 (2508) 의 사이즈 (예컨대, 비트 길이) 는 구현 의존적일 수도 있다. 도 25 에 나타낸 바와 같이, 물리 핀과 연관된 핀 상태 플롭은 대응하는 물리 핀의 이벤트 상태 (예컨대, 로직 '1' 또는 로직 '0') 를 저장할 수도 있다. 예를 들어, 물리 핀 #0 (2502) 과 연관된 물리 핀 구성 로직 및 I/O 셀 블록 (2512) 에서의 핀 상태 플롭 (2514) 은 물리 핀 #0 (2502) 의 이벤트 상태 (예컨대, 로직 '1' 또는 로직 '0') 를 저장할 수도 있다. 핀 상태 플롭 (2514) 에 저장된 물리 핀 #0 (2502) 의 핀 상태는 (화살표 2518 로 나타낸 바와 같이) 구성 레지스터 #N (2520) 의 비트 D7 (2516) 에 미러링될 수도 있으며, 핀 상태 플롭 (2522) 에 저장된 물리 핀 #1 (2504) 의 핀 상태는 구성 레지스터 #N (2526) 의 비트 D7 (2524) 에 미러링될 수도 있으며, 핀 상태 플롭 (2528) 에 저장된 최종 물리 핀 #N (2506) 의 핀 상태가 구성 레지스터 #N (2532) 의 비트 D7 (2530) 에 미러링될 때까지 기타 등등으로 미러링될 수도 있다. 다이렉트 I/O 맵핑 레지스터 (2508) 는 이벤트-전용 메시지로 하여금, 물리 핀들 (예컨대, 물리 핀 #0 (2502), 물리 핀 #1 (2504), 물리 핀 #N (2506)) 의 그룹에 대한 핀 상태 (예컨대, 이벤트 상태들) 를 조작가능하게 할 수도 있다. 일 양태에서, 각각의 물리 핀의 핀 상태는 다이렉트 I/O 맵핑 레지스터 (2508) 의 콘텐츠를 판독함으로 판독될 수도 있거나, 또는 각각의 물리 핀의 핀 상태는 다이렉트 I/O 맵핑 레지스터 (2508) 의 콘텐츠를 변경함으로써 (예컨대, 다이렉트 I/O 맵핑 레지스터 (2508) 에 기록하는 이벤트-전용 메시지를 구현함으로써) 수정될 수도 있다. 예를 들어, 물리 핀 #0 (2502) 의 핀 상태는 다이렉트 I/O 맵핑 레지스터 (2508) 의 비트 D0 을 판독함으로써 판독될 수도 있으며, 물리 핀 #1 (2504) 의 핀 상태는 다이렉트 I/O 맵핑 레지스터 (2508) 의 비트 D1 을 판독함으로써 판독될 수도 있으며, 물리 핀 #N (2506) 의 핀 상태는 다이렉트 I/O 맵핑 레지스터 (2508) 의 비트 D7 을 판독함으로써 판독될 수도 있다. 다른 예에서, 물리 핀 #0 (2502) 의 핀 상태는 다이렉트 I/O 맵핑 레지스터 (2508) 의 비트 D0 의 값을 변경함으로써 수정될 수도 있으며, 물리 핀 #1 (2504) 의 핀 상태는 다이렉트 I/O 맵핑 레지스터 (2508) 의 비트 D1 의 값을 변경함으로써 수정될 수도 있으며, 물리 핀 #N (2506) 의 핀 상태는 다이렉트 I/O 맵핑 레지스터 (2508) 의 비트 D7 의 값을 변경함으로써 수정될 수도 있다. 일 양태에서, 마스크된 기록 동작이 핀 상태 값들과 함께 마스크 패턴을 이용함으로써 허용될 수도 있다.
도 26a 는 마스크를 구현하는 메시지-전용 메시지 포맷 (2600) 의 일 예를 예시하는 다이어그램이다. 도 26a 의 양태에서, 레지스터 어드레스 (2602), 마스크 (2604), 및 값 (2606) 은 각각 8 비트 (예컨대, 비트들 D0 내지 D7) 이다. 일 양태에서, 이러한 메시지 포맷이 마스크를 포함한다는 것을 표시하기 위해 공통 지령 코드 (CCC) 가 사용될 수도 있다. 도 26b 는 마스크를 구현하지 않는 메시지-전용 포맷 (2650) 의 일 예를 예시하는 다이어그램이다. 도 26b 의 양태에서, 레지스터 어드레스 (2652) 및 값 (2654) 은 각각 8 비트 (예컨대, D0 내지 D7) 이다. 일 양태에서, 이러한 메시지 포맷이 마스크를 포함하지 않는다는 것을 표시하기 위해 공통 지령 코드 (CCC) 가 사용될 수도 있다.
도 27a 는 마스크를 구현하는 이벤트-전용 메시지 포맷 (2700) 의 일 예를 예시하는 다이어그램이다. 도 27a 의 양태에서, 레지스터 어드레스 (2702), 마스크 (2704), 및 값 (2706) 은 각각 8 비트 (예컨대, 비트들 D0 내지 D7) 이다. 일 양태에서, 이러한 메시지 포맷이 마스크를 포함한다는 것을 표시하기 위해 공통 지령 코드 (CCC) 가 사용될 수도 있다. 도 27b 는 마스크를 구현하지 않는 이벤트 전용 메시지 포맷 (2750) 의 일 예를 예시하는 다이어그램이다. 도 27b 의 양태에서, 레지스터 어드레스 (2752) 및 값 (2754) 은 각각 8 비트 (예컨대, 비트들 D0 내지 D7) 이다. 일 양태에서, 이러한 메시지 포맷이 마스크를 포함하지 않는다는 것을 표시하기 위해 공통 지령 코드 (CCC) 가 사용될 수도 있다.
병합된 구성 및 이벤트 메시지 포맷
도 28 은 본 개시물의 여러 양태들에 따른, 병합된 구성 및 이벤트 메시지 포맷 (2800) 의 일 예를 예시하는 다이어그램이다. 앞에서 설명한 바와 같이, 병합된 구성 및 이벤트 메시지는 주변장치 디바이스의 하나 이상의 핀들 (예컨대, GPIO 핀들) 에 대한 I/O 구성 정보 및 I/O 이벤트 상태 정보 (예컨대, 로직 값 '1' 또는 로직 값 '0' 과 같은 GPIO 핀 상태) 를 포함할 수도 있으며, 여기서, I/O 구성 정보 및 I/O 이벤트 상태 정보는 미리 정의된 맵핑 방식에 기초하여 패킷 (예컨대, 본원에서 개시된 바와 같은 VGI 패킷) 에 인터리브된다. 따라서, 일 양태에서, (또한, 병합된 패킷으로서 지칭되는) 병합된 구성 및 이벤트 메시지에서의 각각의 비트의 위치 및 아이덴티티가 주변장치 디바이스들에 제공될 수도 있어, 주변장치 디바이스들의 각각이 병합된 구성 및 이벤트 메시지들에서 그들로 다이렉트된 비트들을 식별할 수 있다. 예를 들어, 병합된 구성 및 이벤트 메시지에서의 각각의 비트의 위치 및 아이덴티티는 규정된 레지스터들에 저장될 수도 있는 메시지-전용 패킷들을 이용하여 호스트 디바이스 (예컨대, 호스트 SoC) 로부터 주변장치 디바이스들에 제공될 수도 있다. 일 양태에서, 호스트 디바이스는 적어도 I/O 맵핑 테이블 (예컨대, I/O 맵핑 테이블 (2000)) 의 관련된 부분을 주변장치 디바이스들의 각각에 제공할 수도 있다. 따라서, 본원에서 설명하는 양태들은 주변장치 디바이스들의 각각으로 하여금, 인입하는 비트 스트림 내 각각의 비트의 의미를 알 수 있게 할 수도 있다. 예를 들어, 도 20 에서의 I/O 맵핑 테이블 (2000) 및 도 28 에서의 인입하는 데이터 스트림의 맵핑된 비트들 (2801) 의 예시적인 세트를 참조하면, 비트 M1 (2802) 은 I/O 맵핑 테이블 (2000) 에서의 마스크 비트 (2014) 에 대응할 수도 있으며, 비트 (2804) 는 I/O 맵핑 테이블 (2000) 에서의 비트 값 (2016) 에 대응할 수도 있으며, 비트 M2 (2806) 는 I/O 맵핑 테이블 (2000) 에서의 마스크 비트 (2020) 에 대응할 수도 있으며, 비트 (2808) 는 I/O 맵핑 테이블 (2000) 에서의 비트 값 (2022) 에 대응할 수도 있으며, 계속해서, 비트 MN (2820) 이 I/O 맵핑 테이블 (2000) 에서의 마스크 비트 (2036) 에 대응할 수 있고 그리고 비트 (2822) 가 I/O 맵핑 테이블 (2000) 에서의 비트 값 (2038) 에 대응할 수 있을 때까지, 기타 등등에 대응할 수도 있다. 일 양태에서, 마스크 비트 (예컨대, 비트 M1 (2802)) 의 값은 바로 인접한 비트 (예컨대, 비트 b1 (2804)) 의 값이 변화된 상태를 가지는지 여부를 식별할 수도 있다. 예를 들어, 마스크 비트 (예컨대, 비트 M1 (2802)) 가 로직 값 '1' 로 설정되면, 주변장치는 바로 인접한 비트 (예컨대, 비트 b1 (2804)) 의 값이 (예컨대, 로직 값 '0' 으로부터 로직 값 '1' 로 변화되거나, 또는 로직 값 '1' 로부터 로직 값 '0' 으로 변화된) 변화된 상태를 갖는다고 검출할 수도 있다. 따라서, 이러한 예에서, 마스크 비트 (예컨대, 비트 M1 (2802)) 가 '0' 으로 설정되면, 주변장치는 바로 인접한 비트 (예컨대, 비트 b1 (2804)) 의 값이 변화된 상태를 가지지 않는다고 검출할 수도 있다. 이러한 마스크 비트에 대한 값들은 하나의 가능한 구현예를 나타내는 것으로 이해되어야 한다. 따라서, 다른 양태들에서, 마스크 비트는 바로 인접한 비트의 값이 변화된 상태를 가지는지 여부를 표시하기 위해 상기 예에 대해 상이한 값들로 설정될 수도 있다 (예컨대, 마스크 비트는 바로 인접한 비트의 값이 변화된 상태를 갖는다는 것을 표시하기 위해 로직 값 '0' 으로 설정되거나, 또는 바로 인접한 비트의 값이 변화된 상태를 갖지 않는다는 것을 표시하기 위해 로직 값 '1' 로 설정될 수도 있다).
따라서, 구성 및 이벤트 메시지 포맷 (2800) 이 외부 GPIO 핀의 이벤트 상태 (예컨대, 로직 값 '1' 또는 '0') 뿐만 아니라 디바이스의 외부 GPIO 핀에 대한 구성 정보 (예컨대, 외부 GPIO 핀의 세팅, 파라미터, 및/또는 특성을 구성하기 위한 정보, 외부 GPIO 핀이 입력 또는 출력인지 여부를 구성하기 위한 정보, 등) 를 단일 (예컨대, 병합된) 메시지에 포함할 수도 있다는 점에 유의해야 한다. 일 양태에서, 이러한 병합된 메시지 포맷이 병합된 패킷이라는 것을 표시하기 위해 공통 지령 코드 (CCC) 가 사용될 수도 있다. 외부 GPIO들은 개개의 전기 및 거동 구성 요구들, 예컨대, 구동 강도, 방향성, 개방된-드레인 동작, 인터럽트 구성 등을 가질 수도 있다. 이러한 구성들은 VGI 패킷이 모든 이러한 구성들을 처리하도록 VGI 공간에서, 또는 구성 정보가 정상 I3C 트랜잭션들을 통해서 전송되도록, I3C 공간에서 처리될 수도 있다. 일 양태에서, I/O들의 상태들은 전용 VGI_CCC 지령을 통해서 전송될 수도 있다.
일 예에서, 그리고 도 28 및 도 20 에서의 I/O 맵핑 테이블 (2000) 을 참조하면, 비트 b1 (2804) 은 어드레스 0x01 에서의 제 1 주변장치의 GPIO 핀 #1 의 이벤트 상태 (로직 '1' 또는 로직 '0') 를 설정할 수도 있으며, 비트 b2 (2808) 는 어드레스 0x01 에서의 제 1 주변장치의 GPIO 핀 #1 구동 강도를 (예컨대, 로직 '0' 으로 설정될 때 4mA 로 또는 로직 '1' 로 설정될 때 20mA 로) 설정할 수도 있으며, 비트 b3 (2810) 은 어드레스 0x01 에서의 제 1 주변장치의 GPIO 핀 #1 을, 로직 '0' 으로서 설정될 때 입력 핀으로서 또는 로직 '1' 로 설정될 때 출력 핀으로서 설정될 수도 있으며, 비트 b4 (2812) 는 제 1 주변장치의 GPIO 핀 #1 을, 로직 '0' 으로 설정될 때 개방된 드레인 (OD) 으로서 또는 로직 '1' 로 설정될 때 푸시-풀로서 설정할 수도 있으며, 비트 b5 (2814) 는 제 1 주변장치의 GPIO 핀 #1 을, 로직 '0' 으로 설정될 때 에지 트리거된 인터럽트로서 또는 로직 '1' 로 설정될 때 에지 트리거된 인터럽트로서 설정할 수도 있다. 이러한 예에서, 비트 b6 (2816) 은 제 1 주변장치의 GPIO 핀 #2 의 이벤트 상태를` 설정할 수도 있으며, 비트 b7 (2818) 은 제 1 주변장치의 GPIO 핀 #3 의 이벤트 상태를 설정할 수도 있다. 비트 b8 (2819) 은 어드레스 0x02 에서의 제 2 주변장치의 GPIO 핀 #1 의 이벤트 상태 (로직 '1' 또는 로직 '0') 를 설정할 수도 있다. 따라서, 이 예에서, 어드레스 0x02 에서의 제 2 주변장치가 맵핑된 비트들 (2801) 을 수신할 때, 제 2 주변장치는 I/O 맵핑 테이블 (2000) 에 기초하여 비트들 b1 (2804), b2 (2808), b3 (2810), b4 (2812), b5 (2814), b6 (2816), 및 b7 (2818) 을 무시할 수도 있으며, 비트 b8 (2819) (및 후속 비트 b9) 를 프로세싱할 수도 있다.
도 29 는 병합된 메시지를 이용한 기록 동작을 위한 브로드캐스트 메시징의 일 예를 예시하는 다이어그램이다. 도 29 의 예시적인 구성은 도 8 과 관련하여 앞에서 설명된 예시적인 브로드캐스트 프레임 (800) 을 나타낸다. 따라서, VGPIO 데이터 페이로드 (806) 는 I/O 맵핑 테이블 (2000) 에 기초한 맵핑된 비트들 (2900) 을 포함할 수도 있다. 일 양태에서, VGPIO 데이터 페이로드 (806) 에서의 각각의 비트 위치는 도 29 에 나타낸 I/O 맵핑 테이블 (2000) 에 나타낸 바와 같은, 주변장치 디바이스에서의 대응하는 GPIO 핀 넘버 (또한, 주변장치 I/O 넘버로서 지칭됨) 와 연관될 수도 있다. 예를 들어, 비트 b1 (2902) 은 어드레스 0x01 에서의 제 1 주변장치의 GPIO 핀 #1 의 이벤트 상태를 (예컨대, 핀 상태를 로직 '1' 또는 로직 '0' 으로) 설정할 수도 있다. 나머지 비트들 b2 (2904), b3 (2906), 및 b4 (2908) 내지 bN (2910) 은 GPIO 핀들의 이벤트 상태들을 설정할 수도 있거나, 또는 I/O 맵핑 테이블 (2000) 에서 나타낸 바와 같이 (그리고 앞에서 설명된 맵핑된 비트들 (2801) 과 유사하게) 주변장치 디바이스들에서의 GPIO 핀들을 구성할 수도 있다. 따라서, 일 예에서, 비트 bN (2910) 은 I/O 맵핑 테이블 (2000) 에 나타낸 바와 같이 어드레스 0x05 에서의 제 5 주변장치 디바이스의 GPIO 핀 #2 의 이벤트 상태를 (예컨대, 핀 상태를 로직 '1' 또는 로직 '0' 으로) 설정할 수도 있다. 일 양태에서, 맵핑된 비트들 (2900) 을 포함하는 예시적인 브로드캐스트 프레임 (800) 은 하나 이상의 주변장치 디바이스들로 브로드캐스트될 수도 있다.
기록 동작들을 위한 메시징
도 30 은 본 개시물의 여러 양태들에 따른, 마스크를 구현하는 병합된 메시지를 이용한 기록 동작을 위한 브로드캐스트 메시징의 일 예를 예시하는 다이어그램이다. 도 30 의 예시적인 구성은 도 9 와 관련하여 앞에서 설명된 예시적인 마스크된 브로드캐스트 프레임 (900) 을 나타낸다. 따라서, VGPIO 데이터 페이로드 (906) 는 I/O 맵핑 테이블 (2000) 에 기초한 맵핑된 비트들 (2900) 을 포함할 수도 있다. 일 양태에서, 맵핑된 비트들 (3000) 을 포함하는 마스크된 브로드캐스트 프레임 (900) 은 하나 이상의 주변장치 디바이스들로 브로드캐스트될 수도 있다. 도 30 에 나타낸 바와 같이, 맵핑된 비트들 (3000) 은 데이터 페이로드 (906) 에서의 비트 위치들을 예시한다. 예를 들어, 비트 M1 (3002) 은 I/O 맵핑 테이블 (2000) 에서의 마스크 비트 (2014) 에 대응할 수도 있으며, 비트 (3004) 는 I/O 맵핑 테이블 (2000) 에서의 비트 값 (2016) 에 대응할 수도 있으며, 비트 M2 (3006) 는 I/O 맵핑 테이블 (2000) 에서의 마스크 비트 (2020) 에 대응할 수도 있으며, 비트 (3008) 는 I/O 맵핑 테이블 (2000) 에서의 비트 값 (2022) 에 대응할 수도 있으며, 계속해서, 비트 MN (3014) 이 I/O 맵핑 테이블 (2000) 에서의 마스크 비트 (2036) 에 대응할 수 있고 그리고 비트 (3016) 가 I/O 맵핑 테이블 (2000) 에서의 비트 값 (2038) 에 대응할 수 있을 때까지, 기타 등등에 대응할 수도 있다. 일 양태에서, 마스크 비트 (예컨대, 비트 M1 (3002)) 의 값은 바로 인접한 비트 (예컨대, 비트 b1 (3004)) 의 값이 변화된 상태를 가지는지 여부를 식별할 수도 있다. 예를 들어, 마스크 비트 (예컨대, 비트 M1 (3002)) 가 로직 값 '1' 로 설정되면, 주변장치는 바로 인접한 비트 (예컨대, 비트 b1 (3004)) 의 값이 (예컨대, 로직 값 '0' 으로부터 로직 값 '1' 로 변화되거나, 또는 로직 값 '1' 로부터 로직 값 '0' 으로 변화된) 변화된 상태를 갖는다고 검출할 수도 있다. 따라서, 이러한 예에서, 마스크 비트 (예컨대, 비트 M1 (3002)) 가 '0' 으로 설정되면, 주변장치는 바로 인접한 비트 (예컨대, 비트 b1 (3004)) 의 값이 변화된 상태를 갖지 않는다고 검출할 수도 있다. 이러한 마스크 비트에 대한 값들은 하나의 가능한 구현예를 나타내는 것으로 이해되어야 한다. 따라서, 다른 양태들에서, 마스크 비트는 바로 인접한 비트의 값이 변화된 상태를 갖는지 여부를 표시하기 위해 상기 예에 대해 상이한 값들로 설정될 수도 있다 (예컨대, 마스크 비트는 바로 인접한 비트의 값이 변화된 상태를 갖는다는 것을 표시하기 위해 로직 값 '0' 으로 설정되거나, 또는 바로 인접한 비트의 값이 변화된 상태를 갖지 않는다는 것을 표시하기 위해 로직 값 '1' 로 설정될 수도 있다).
도 31 은 병합된 메시지를 이용한 기록 동작을 위한 다이렉트 메시징의 일 예를 예시하는 다이어그램이다. 도 31 의 예시적인 구성은 도 10 과 관련하여 앞에서 설명된 예시적인 다이렉트된 프레임 (1000) 을 나타낸다. 따라서, VGPIO 데이터 페이로드 (1012) 는 I/O 맵핑 테이블 (2000) 에 기초한 맵핑된 비트들 (3100) 을 포함할 수도 있으며, VGPIO 데이터 페이로드 (1018) 는 I/O 맵핑 테이블 (2000) 에 기초한 맵핑된 비트들 (3115) 을 포함할 수도 있다. 일 예에서, 슬레이브 어드레스 (1010) 는 제 1 주변장치 디바이스에 대응하는 어드레스 0x01 을 포함할 수도 있으며, 슬레이브 어드레스 (1016) 는 제 2 주변장치 디바이스에 대응하는 어드레스 0x02 를 포함할 수도 있다. 따라서, VGPIO 데이터 페이로드 (1012) 는 제 1 주변장치 디바이스로 다이렉트될 수도 있으며, VGPIO 데이터 페이로드 (1018) 는 제 2 주변장치 디바이스로 다이렉트될 수도 있다. 일 양태에서, VGPIO 데이터 페이로드 (1012) 에서의 각각의 비트 위치는 도 29 에 나타낸 I/O 맵핑 테이블 (2000) 에 표시된 바와 같은 제 1 주변장치 디바이스에서의 대응하는 GPIO 핀 넘버 (또한, 주변장치 I/O 넘버로서 지칭됨) 와 연관될 수도 있으며, VGPIO 데이터 페이로드 (1018) 에서의 각각의 비트 위치는 도 29 에 나타낸 I/O 맵핑 테이블 (2000) 에 표시된 바와 같은 제 2 주변장치 디바이스에서의 대응하는 GPIO 핀 넘버 (또한, 주변장치 I/O 넘버로서 지칭됨) 와 연관될 수도 있다. 예를 들어, 비트 b1 (3102) 은 비트 값 (2016) 에 대응할 수도 있으며 제 1 주변장치 디바이스의 GPIO 핀 #1 의 이벤트 상태를 (예컨대, 핀 상태를 로직 '1' 또는 로직 '0' 으로) 설정할 수도 있으며, 비트 b2 (3104) 는 I/O 맵핑 테이블 (2000) 에서의 비트 값 (2022) 에 대응할 수도 있으며 제 1 주변장치의 GPIO 핀 #1 의 구동 강도를 (예컨대, 로직 '0' 으로 설정될 때 4mA 또는 로직 '1' 로 설정될 때 20mA 로) 설정할 수도 있으며, 계속해서, 나머지 비트들 b2 (3104), b3 (3106), b4 (3108), b5 (3110), b6 (3112), 및 b7 (3114) 이 GPIO 핀들의 이벤트 상태들을 설정할 수 있거나 또는 I/O 맵핑 테이블 (2000) 에서 표시된 바와 같이 제 1 주변장치 디바이스에서의 GPIO 핀들을 구성할 수 있을 때까지, 기타 등등으로 설정할 수도 있다. 다른 예로서, 비트 b1 (3116) 은 비트 값 (2028) 에 대응할 수도 있으며 제 2 주변장치 디바이스의 GPIO 핀 #1 의 이벤트 상태를 (예컨대, 핀 상태를 로직 '1' 또는 로직 '0' 으로) 설정할 수도 있으며, 비트 b2 (3118) 는 I/O 맵핑 테이블 (2000) 에서의 비트 값 (2034) 에 대응할 수도 있으며 제 2 주변장치 디바이스의 GPIO 핀 #2 의 이벤트 상태를 (예컨대, 핀 상태를 로직 '1' 또는 로직 '0' 으로) 설정할 수도 있다. 일 양태에서, 맵핑된 비트들 (3100 및 3115) 을 포함하는 다이렉트된 프레임 (1000) 은 하나 이상의 주변장치 디바이스들로 송신될 수도 있다.
도 32 는 마스크를 구현하는 병합된 메시지를 이용한 기록 동작을 위한 다이렉트 메시징의 일 예를 예시하는 다이어그램이다. 도 32 의 예시적인 구성은 도 11 과 관련하여 앞에서 설명된 예시적인 다이렉트된 프레임 (1100) 을 나타낸다. 따라서, VGPIO 데이터 페이로드 (1112) 는 I/O 맵핑 테이블 (2000) 에 기초한 맵핑된 비트들 (3200) 을 포함할 수도 있다. 일 예에서, 슬레이브 어드레스 (1110) 는 제 1 주변장치 디바이스에 대응하는 어드레스 0x01 을 포함할 수도 있다. 따라서, VGPIO 데이터 페이로드 (1112) 는 제 1 주변장치 디바이스로 다이렉트될 수도 있다. 도 32 에 나타낸 바와 같이, 맵핑된 비트들 (3200) 은 데이터 페이로드 (1112) 에서의 비트 위치들을 예시한다. 예를 들어, 비트 M1 (3202) 은 I/O 맵핑 테이블 (2000) 에서의 마스크 비트 (2014) 에 대응할 수도 있으며, 비트 (3204) 는 I/O 맵핑 테이블 (2000) 에서의 비트 값 (2016) 에 대응할 수도 있으며, 비트 M2 (3206) 는 I/O 맵핑 테이블 (2000) 에서의 마스크 비트 (2020) 에 대응할 수도 있으며, 비트 (3208) 는 I/O 맵핑 테이블 (2000) 에서의 비트 값 (2022) 에 대응할 수도 있으며, 계속해서, 비트 My (3214) 가 I/O 맵핑 테이블 (2000) 에서의 마스크 비트 (2023) 에 대응할 수 있고 그리고 비트 (3216) 가 I/O 맵핑 테이블 (2000) 에서의 비트 값 (2025) 에 대응할 수 있을 때까지 기타 등등에 대응할 수도 있다. 따라서, VGPIO 데이터 페이로드 (1112) 에서의 맵핑된 비트들 (3200) 의 모두는 제 1 주변장치 디바이스에 대응한다. 일 양태에서, 마스크 비트 (예컨대, 비트 M1 (3202)) 의 값은 바로 인접한 비트 (예컨대, 비트 b1 (3204)) 의 값이 변화된 상태를 가지는지 여부를 식별할 수도 있다. 예를 들어, 마스크 비트 (예컨대, 비트 M1 (3202)) 가 로직 값 '1' 로 설정되면, 주변장치는 바로 인접한 비트 (예컨대, 비트 b1 (3204)) 의 값이 (예컨대, 로직 값 '0' 으로부터 로직 값 '1' 로 변화되거나, 또는 로직 값 '1' 로부터 로직 값 '0' 으로 변화된) 변화된 상태를 갖는다고 검출할 수도 있다. 따라서, 이러한 예에서, 마스크 비트 (예컨대, 비트 M1 (3202)) 가 '0' 으로 설정되면, 주변장치는 바로 인접한 비트 (예컨대, 비트 b1 (3204)) 의 값이 변화된 상태를 갖지 않는다고 검출할 수도 있다. 이러한 마스크 비트에 대한 값들은 하나의 가능한 구현예를 나타내는 것으로 이해되어야 한다. 따라서, 다른 양태들에서, 마스크 비트는 바로 인접한 비트의 값이 변화된 상태를 가지는지 여부를 표시하기 위해 상기 예에 대해 상이한 값들으로 설정될 수도 있다 (예컨대, 마스크 비트는 바로 인접한 비트의 값이 변화된 상태를 가진다는 것을 표시하기 위해 로직 값 '0' 으로 설정되거나, 또는 바로 인접한 비트의 값이 변화된 상태를 가지지 않는다는 것을 표시하기 위해 로직 값 '1' 로 설정될 수도 있다).
판독 동작들을 위한 메시징
도 33 은 병합된 메시지를 이용한 판독 동작을 위한 다이렉트 메시징의 일 예를 예시하는 다이어그램이다. 도 33 의 예시적인 구성은 도 10 과 관련하여 앞에서 설명된 예시적인 다이렉트된 프레임 (1000) 을 나타낸다. 따라서, VGPIO 데이터 페이로드 (1012) 는 I/O 맵핑 테이블 (2000) 에 기초한 맵핑된 비트들 (3300) 을 포함할 수도 있으며, VGPIO 데이터 페이로드 (1018) 는 I/O 맵핑 테이블 (2000) 에 기초한 맵핑된 비트들 (3311) 을 포함할 수도 있다. 일 예에서, 슬레이브 어드레스 (1010) 는 제 1 주변장치 디바이스에 대응하는 어드레스 0x01 을 포함할 수도 있으며, 슬레이브 어드레스 (1016) 는 제 2 주변장치 디바이스에 대응하는 어드레스 0x02 를 포함할 수도 있다. 따라서, VGPIO 데이터 페이로드 (1012) 는 제 1 주변장치 디바이스로부터의 데이터를 포함할 수도 있으며, VGPIO 데이터 페이로드 (1018) 는 제 2 주변장치 디바이스로부터의 데이터를 포함할 수도 있다. 일 양태에서, VGPIO 데이터 페이로드 (1012) 에서의 각각의 비트 위치는 도 29 에 나타낸 I/O 맵핑 테이블 (2000) 에 표시된 바와 같은 제 1 주변장치 디바이스에서의 대응하는 GPIO 핀 넘버 (또한, 주변장치 I/O 넘버로서 지칭됨) 와 연관될 수도 있으며, VGPIO 데이터 페이로드 (1018) 에서의 각각의 비트 위치는 도 20 에 나타낸 I/O 맵핑 테이블 (2000) 에 표시된 바와 같은 제 2 주변장치 디바이스에서의 대응하는 GPIO 핀 넘버 (또한, 주변장치 I/O 넘버로서 지칭됨) 와 연관될 수도 있다. 예를 들어, 비트 b1 (3302) 은 비트 값 (2016) 에 대응할 수도 있으며 제 1 주변장치 디바이스의 GPIO 핀 #1 의 이벤트 상태를 (예컨대, 핀 상태를 로직 '1' 또는 로직 '0' 으로) 설정할 수도 있으며, 비트 b2 (3304) 는 I/O 맵핑 테이블 (2000) 에서의 비트 값 (2022) 에 대응할 수도 있으며 제 1 주변장치의 GPIO 핀 #1 의 구동 강도를 (예컨대, 로직 '0' 으로 설정될 때 4mA 또는 로직 '1' 로 설정될 때 20mA 로) 설정할 수도 있으며, 계속해서, 나머지 비트들 b3 (3306) 및 b4 (3308) 내지 by (3310) 이 GPIO 핀들의 이벤트 상태들을 포함할 수 있거나 또는 I/O 맵핑 테이블 (2000) 에 표시된 바와 같은 제 1 주변장치 디바이스에서의 GPIO 핀들의 구성 정보를 포함할 수 있을 때까지, 기타 등등으로 설정할 수도 있다. 다른 예로서, 비트 b1 (3312) 은 비트 값 (2028) 에 대응할 수도 있으며 제 2 주변장치 디바이스의 GPIO 핀 #1 의 이벤트 상태를 (예컨대, 핀 상태를 로직 '1' 또는 로직 '0' 으로서) 포함할 수도 있으며, 비트 bx (3314) 는 I/O 맵핑 테이블 (2000) 에서의 비트 값 (2034) 에 대응할 수도 있으며 제 2 주변장치 디바이스의 GPIO 핀 #2 의 이벤트 상태를 (예컨대, 핀 상태를 로직 '1' 또는 로직 '0' 으로서) 포함할 수도 있다. 일 양태에서, 맵핑된 비트들 (3300 및 3311) 을 포함하는 다이렉트된 프레임 (1000) 은 하나 이상의 주변장치 디바이스들로부터 호스트 디바이스로 송신될 수도 있다.
도 34 는 마스크를 구현하는 병합된 메시지를 이용한 판독 동작을 위한 다이렉트 메시징의 일 예를 예시하는 다이어그램이다. 도 34 의 예시적인 구성은 도 14b 와 관련하여 앞에서 설명된 예시적인 다이렉트된 프레임 (1440) 을 나타낸다. 따라서, 캡슐화된 VGI 패킷 (1452) 은 I/O 맵핑 테이블 (2000) 에 기초한 맵핑된 비트들 (3400) 을 포함할 수도 있다. 일 예에서, 슬레이브 어드레스 (1450) 는 제 1 주변장치 디바이스에 대응하는 어드레스 0x01 을 포함할 수도 있다. 따라서, 캡슐화된 VGI 패킷 (1452) 은 제 1 주변장치 디바이스로부터의 데이터를 포함할 수도 있다. 도 34 에 나타낸 바와 같이, 맵핑된 비트들 (3400) 은 캡슐화된 VGI 패킷 (1452) 에 포함될 수도 있는 비트 위치들을 예시한다. 예를 들어, 비트 M1 (3402) 은 I/O 맵핑 테이블 (2000) 에서의 마스크 비트 (2014) 에 대응할 수도 있으며, 비트 (3404) 는 I/O 맵핑 테이블 (2000) 에서의 비트 값 (2016) 에 대응할 수도 있으며, 비트 M2 (3406) 는 I/O 맵핑 테이블 (2000) 에서의 마스크 비트 (2020) 에 대응할 수도 있으며, 비트 (3408) 는 I/O 맵핑 테이블 (2000) 에서의 비트 값 (2022) 에 대응할 수도 있으며, 계속해서, 비트 My (3416) 가 I/O 맵핑 테이블 (2000) 에서의 마스크 비트 (2023) 에 대응할 수 있고 그리고 비트 (3418) 가 I/O 맵핑 테이블 (2000) 에서의 비트 값 (2025) 에 대응할 수 있을 때까지 기타 등등에 대응할 수도 있다. 따라서, 캡슐화된 VGI 패킷 (1452) 에서의 맵핑된 비트들 (3400) 의 모두는 제 1 주변장치 디바이스에 대응한다. 일 양태에서, 마스크 비트 (예컨대, 비트 M1 (3402)) 의 값은 바로 인접한 비트 (예컨대, 비트 b1 (3404)) 의 값이 변화된 상태를 가지는지 여부를 식별할 수도 있다. 예를 들어, 마스크 비트 (예컨대, 비트 M1 (3402)) 가 로직 값 '1' 로 설정되면, 주변장치는 바로 인접한 비트 (예컨대, 비트 b1 (3404)) 의 값이 (예컨대, 로직 값 '0' 으로부터 로직 값 '1' 로 변화되거나, 또는 로직 값 '1' 로부터 로직 값 '0' 으로 변화된) 변화된 상태를 갖는다고 검출할 수도 있다. 따라서, 이러한 예에서, 마스크 비트 (예컨대, 비트 M1 (3402)) 가 '0' 으로 설정되면, 주변장치는 바로 인접한 비트 (예컨대, 비트 b1 (3404)) 의 값이 변화된 상태를 갖지 않는다고 검출할 수도 있다. 이러한 마스크 비트에 대한 값들은 하나의 가능한 구현예를 나타내는 것으로 이해되어야 한다. 따라서, 다른 양태들에서, 마스크 비트는 바로 인접한 비트의 값이 변화된 상태를 가지는지 여부를 표시하기 위해 상기 예에 대해 상이한 값들로 설정될 수도 있다 (예컨대, 마스크 비트는 바로 인접한 비트의 값이 변화된 상태를 갖는다는 것을 표시하기 위해 로직 값 '0' 으로 설정되거나, 또는 바로 인접한 비트의 값이 변화된 상태를 갖지 않는다는 것을 표시하기 위해 로직 값 '1' 로 설정될 수도 있다). 일 양태에서, 맵핑된 비트들 (3400) 을 포함하는 다이렉트된 프레임 (1440) 은 하나 이상의 주변장치 디바이스들로부터 호스트 디바이스로 송신될 수도 있다.
상이한 마스크 구성들이 도 28, 도 30, 32, 및/또는 도 34 에서 설명된 마스크 비트들에 대해 구현될 수도 있다는 점에 유의해야 한다. 예를 들어, 도 35 는 다수의 바로 인접한 비트 값들과 연관된 마스크 비트들을 포함하는 맵핑된 비트들 (3501) 을 나타낸다. 일 양태에서, 마스크 비트 (3502) 는 비트들 b1 (3504), b2 (3506), b3 (3508) 과 연관될 수도 있으며, 마스크 비트 (3510) 는 비트들 b4 (3512), b5 (3514), b6 (3516), 및 b7 (3518) 과 연관될 수도 있으며, 마스크 비트 (3524) 는 비트 bN (3526) 과 연관될 수도 있다. 이러한 양태에서, 예를 들어, 마스크 비트 (3502) 를 로직 '1' 로 설정함으로써 비트들 b1 (3504), b2 (3506), b3 (3508) 중 적어도 하나의 상태에서의 변화가 표시될 수도 있다. 다른 예로서, 마스크 비트 (3510) 를 로직 '0' 로 설정함으로써, 어떤 비트들 b4 (3512), b5 (3514), b6 (3516), 및 b7 (3518) 중 적어도 하나의 상태에서의 변화도 표시되지 않을 수도 있다.
도 36 은 본 개시물의 여러 양태들에 따른, VGI FSM (예컨대, 도 15 에서의 VGI FSM (1508)) 의 예시적인 구성을 나타낸다. 도 36 에 나타낸 바와 같이, VGI FSM (3602) 은 I/O 맵퍼 및 메시지 포맷터 로직 회로 (3604), I/O 집성 블록 (3606), 및 전력 관리 유닛 (3608) 을 포함한다. I/O 맵퍼 및 메시지 포맷터 로직 회로 (3604) 는 앞에서 설명된 바와 같이 GPIO 신호들 (또한, I/O 신호들로서 지칭됨) 을 가상 GPIO 페이로드에서의 비트 위치들로 맵핑되도록 구성될 수도 있다. 도 36 의 구성에서 VGI FSM (3602) 은 VGI FSM (3602) 이 CPU (예시의 용이를 위해 도 36 에 미도시) 와는 독립적으로 VGI 인터페이스를 통한 하나 이상의 주변장치 디바이스들로부터의 통신들을 검출하거나 및/또는 CPU 와는 독립적으로 VGI 인터페이스를 통한 하나 이상의 주변장치 디바이스들로의 통신들을 획득 및 송신할 수 있게, 상시 온 도메인에서 동작하도록 구성된다. 다시 말해서, VGI FSM (3602) 은 CPU 의 낮은 전력 또는 휴면 상태에도 불구하고 동작하도록 구성될 수도 있다. 일 양태에서, VGI FSM (3602) 은 VGI 송신들이 이루어질 필요가 있을 때 또는 VGI 통신들이 검출될 때 VGI FSM (3602) 에서의 회로들 및 디바이스들 (예컨대, 메시지 포맷터 로직 회로 (3604) 및/또는 I/O 집성 블록 (3606)) 을 웨이크 업하는 (예컨대, 인에이블하는) 전력 관리 유닛 (3608) 을 구현하도록 구성될 수도 있다.
제 1 예시적인 디바이스 및 방법
도 37 은 본 개시물의 적어도 하나의 예에 따른, 장치 (3700) 의 선택 컴포넌트들을 예시하는 블록도이다. 장치 (3700) 는 외부 버스 인터페이스 (또는, 통신 인터페이스 회로) (3702), 저장 매체 (3704), 사용자 인터페이스 (3706), 메모리 디바이스 (3708), 및 프로세싱 회로 (3710) 를 포함한다. 프로세싱 회로 (3710) 는 외부 버스 인터페이스 (3702), 저장 매체 (3704), 사용자 인터페이스 (3706), 및 메모리 디바이스 (3708) 의 각각에 커플링되거나 또는 그와 전기 통신된다.
외부 버스 인터페이스 (3702) 는 외부 버스 (3712) 에 장치 (3700) 의 컴포넌트들에 대한 인터페이스를 제공한다. 외부 버스 인터페이스 (3702) 는 예를 들어, 신호 드라이버 회로들, 신호 수신기 회로들, 증폭기들, 신호 필터들, 신호 버퍼들, 또는 시그널링 버스 또는 다른 유형들의 시그널링 매체들과 인터페이스하는데 사용되는 다른 회로부 중 하나 이상을 포함할 수도 있다. 일 양태에서, 외부 버스 (3712) 는 VGI 신호들 및/또는 I3C 신호들을 송신하고 수신하기 위한 3개의 물리적인 상호접속 라인들 (예컨대, 도 15 에 나타낸 상호접속부들 (1546, 1548, 및 1550)) 을 포함할 수도 있다.
프로세싱 회로 (3710) 는 데이터를 획득, 프로세싱, 및/또는 전송하고, 데이터 액세스 및 저장을 제어하고, 지령들을 발하고, 그리고 다른 원하는 동작들을 제어하도록 배열된다. 프로세싱 회로 (3710) 는 적어도 하나의 예에서 적합한 매체들에 의해 제공되는 원하는 프로그래밍을 구현하도록 적응된 회로부를 포함할 수도 있다. 일부의 경우, 프로세싱 회로 (3710) 는 프로그램을 구현하거나 또는 구현함이 없이, 원하는 기능을 수행하도록 적응된 회로부를 포함할 수도 있다. 일 예로서, 프로세싱 회로 (3710) 는 하나 이상의 프로세서들, 하나 이상의 제어기들, 및/또는 실행가능한 프로그래밍을 실행하거나 및/또는 원하는 기능을 수행하도록 구성된 다른 구조로서 구현될 수도 있다. 프로세싱 회로 (3710) 의 예들은 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적회로 (ASIC), 필드 프로그래밍가능 게이트 어레이 (FPGA) 또는 다른 프로그래밍가능 로직 컴포넌트, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들 또는 본원에서 설명된 기능들을 수행하도록 설계된 이들의 임의의 조합을 포함할 수도 있다. 범용 프로세서는 임의의 종래의 프로세서뿐만 아니라 마이크로프로세서, 제어기, 마이크로제어기, 또는 상태 머신을 포함할 수도 있다. 프로세싱 회로 (3710) 는 또한 DSP 와 마이크로프로세서의 조합과 같은 컴퓨팅 컴포넌트들의 조합, 다수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, ASIC 및 마이크로프로세서, 또는 임의의 다른 다수의 가변 구성들로서 구현될 수도 있다. 이들 프로세싱 회로 (3710) 의 예들은 예시를 위한 것이며 본 개시물의 범위 내의 다른 적합한 구성들이 또한 고려된다.
프로세싱 회로 (3710) 는 저장 매체 (3704) 상에 저장될 수도 있는 프로그래밍의 실행을 포함한 프로세싱을 위해 적응된다. 본원에서 사용될 때, 용어들 "프로그래밍" 또는 "명령들" 은 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어, 또는 기타로 지칭되든, 명령 세트들, 명령들, 코드, 코드 세그먼트들, 프로그램 코드, 프로그램들, 프로그래밍, 서브프로그램들, 소프트웨어 모듈들, 애플리케이션들, 소프트웨어 애플리케이션들, 소프트웨어 패키지들, 루틴들, 서브루틴들, 오브젝트들, 실행가능한 것들 (executables), 실행의 쓰레드들, 프로시저들, 함수들, 등을 제한 없이 포함하도록 넓게 해석되어야 한다.
일부의 경우, 프로세싱 회로 (3710) 는 GPIO 및 구성 신호 획득 회로/모듈 (3714), 맵핑 회로/모듈 (3716), 마스크 신호 획득 회로/모듈 (3718), 송신 회로/모듈 (3720), 가상 GPIO 패킷 획득 회로/모듈 (3722), 상태 변화 집성 회로/모듈 (3724), 또는 I3C 프레임 수신 회로/모듈 (3725) 중 하나 이상을 포함할 수도 있다.
GPIO 및 구성 신호 획득 회로/모듈 (3714) 은 하나 이상의 주변장치 디바이스들에 대한 GPIO 신호들의 세트를 중앙 처리 유닛과는 독립적으로 획득하고, 그리고 하나 이상의 주변장치 디바이스들의 하나 이상의 GPIO 핀들을 구성하기 위한 구성 신호들의 세트를 중앙 처리 유닛과는 독립적으로 획득하도록 적응된 회로부 및/또는 명령들 (예컨대, 저장 매체 (3704) 상에 저장된 GPIO 및 구성 신호 획득 명령들 (3726)) 을 포함할 수도 있다.
맵핑 회로/모듈 (3716) 은 맵핑 테이블에 기초하여 적어도 하나 이상의 주변장치 디바이스들에 대한 GPIO 신호들의 세트를 제 1 가상 GPIO 패킷에서의 미리 결정된 제 1 비트 위치들에, 또는 맵핑 테이블에 기초하여 구성 신호들의 세트를 제 2 가상 GPIO 패킷에서의 미리 결정된 제 2 비트 위치들에 맵핑하도록 적응된 회로부 및/또는 명령들 (예컨대, 저장 매체 (3704) 상에 저장된 맵핑 명령들 (3728)) 을 포함할 수도 있다. 일 양태에서, 맵핑 회로/모듈 (3716) 은 맵핑 테이블에 기초하여 GPIO 신호들의 세트 및 구성 신호들의 세트를 가상 GPIO 패킷에서의 미리 결정된 비트 위치들에 맵핑하거나 또는 적어도 하나의 제 1 GPIO 신호의 변화된 상태를 결정하기 위해 맵핑 테이블에 기초하여 가상 GPIO 패킷 내의 제 1 가상 GPIO 페이로드를 맵핑하도록 적응된 회로부 및/또는 명령들 (예컨대, 저장 매체 (3704) 상에 저장된 맵핑 명령들 (3728)) 을 포함할 수도 있다.
마스크 신호 획득 회로/모듈 (3718) 은 GPIO 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하거나, 구성 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하거나, GPIO 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하거나, 또는 구성 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하도록 적응된 회로부 및/또는 명령들 (예컨대, 저장 매체 (3704) 상에 저장된 마스크 신호 획득 명령들 (3730)) 을 포함할 수도 있으며, 여기서, 상기 GPIO 신호들의 세트와 연관된 마스크 신호들의 세트는 제 1 가상 GPIO 패킷에 포함되며, 상기 구성 신호들의 세트와 연관된 마스크 신호들의 세트는 제 2 가상 GPIO 패킷에 포함되며, 상기 GPIO 신호들의 세트와 연관된 마스크 신호들의 세트는 가상 GPIO 패킷에 포함되며, 구성 신호들의 세트와 연관된 마스크 신호들의 세트는 가상 GPIO 패킷에 포함된다.
송신 회로/모듈 (3720) 은 중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 제 1 가상 GPIO 패킷을 하나 이상의 주변장치 디바이스들로 송신하거나, 중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 제 2 가상 GPIO 패킷을 하나 이상의 주변장치 디바이스들로 송신하거나, 중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 가상 GPIO 패킷을 하나 이상의 주변장치 디바이스들로 송신하거나, 또는 I3C 버스를 통해서 제 2 I3C 프레임을 제 2 주변장치 디바이스로 송신하도록 적응된 회로부 및/또는 명령들 (예컨대, 저장 매체 (3704) 상에 저장된 송신 명령들 (3732)) 을 포함할 수도 있으며, 여기서, 제 2 I3C 프레임은 적어도 하나의 제 2 GPIO 신호의 변화된 상태를 시그널링하는 제 2 가상 GPIO 페이로드를 포함한다.
가상 GPIO 패킷 획득 회로/모듈 (3722) 은 중앙 처리 유닛과는 독립적으로 GPIO 신호들의 세트를 포함하는 제 1 가상 GPIO 패킷을 획득하거나, 또는 중앙 처리 유닛과는 독립적으로 구성 신호들의 세트를 포함하는 제 2 가상 GPIO 패킷을 획득하도록 적응된 회로부 및/또는 명령들 (예컨대, 저장 매체 (3704) 상에 저장된 가상 GPIO 패킷 획득 명령들 (3734)) 을 포함할 수도 있다. 일 양태에서, 가상 GPIO 패킷 획득 회로/모듈 (3722) 은 GPIO 신호들의 세트 및 구성 신호들의 세트를 포함하는 가상 GPIO 패킷을 획득하거나 또는 제 1 I3C 프레임으로부터 가상 GPIO 패킷을 획득하도록 적응된 회로부 및/또는 명령들 (예컨대, 저장 매체 (3704) 상에 저장된 가상 GPIO 패킷 획득 명령들 (3734)) 을 포함할 수도 있다.
상태 변화 집성 회로/모듈 (3724) 은 적어도 하나의 제 1 GPIO 신호의 변화된 상태를 적어도 하나의 제 2 GPIO 신호의 변화된 상태로 집성하도록 적응된 회로부 및/또는 명령들 (예컨대, 저장 매체 (3704) 상에 저장된 상태 변화 집성 명령들 (3736)) 을 포함할 수도 있다.
I3C 프레임 수신 회로/모듈 (3725) 은 제 1 주변장치 디바이스로부터 I3C 버스를 통해서 가상 GPIO 패킷을 포함하는 제 1 I3C 프레임을 수신하도록 적응된 회로부 및/또는 명령들 (예컨대, 저장 매체 (3704) 상에 저장된 I3C 프레임 수신 명령들 (3738)) 을 포함할 수도 있으며, 여기서, 가상 GPIO 패킷은 I3C 프레임에 캡슐화된다.
저장 매체 (3704) 는 프로그래밍, 전자 데이터, 데이터베이스들 또는 다른 디지털 정보를 저장하기 위한 하나 이상의 프로세서-판독가능 디바이스들을 나타낼 수도 있다. 저장 매체 (3704) 는 프로그래밍을 실행할 때 프로세싱 회로 (3710) 에 의해 조작되는 데이터를 저장하기 위하여 또한 이용될 수도 있다. 저장 매체 (3704) 는 휴대형 또는 고정된 저장 디바이스들, 광학 저장 디바이스들 및 프로그래밍을 저장, 포함 및/또는 운반할 수 있는 여러 다른 매체들을 포함한 프로세싱 회로 (3710) 에 의해 액세스될 수 있는 임의의 가용 매체들일 수도 있다. 비한정적인 일 예로서, 저장 매체 (3704) 는 자기 저장 디바이스 (예컨대, 하드 디스크, 플로피 디스크, 자기 스트립), 광학 스토리지 매체 (예컨대, 컴팩트 디스크 (CD), 디지털 다기능 디스크 (DVD)), 스마트 카드, 플래시 메모리 디바이스 (예컨대, 카드, 스틱, 키 드라이브), 랜덤 액세스 메모리 (RAM), 판독전용 메모리 (ROM), 프로그래밍가능 ROM (PROM), 소거가능한 PROM (EPROM), 전기적으로 소거가능한 PROM (EEPROM), 레지스터, 착탈식 디스크 및/또는 프로그래밍을 저장하기 위한 다른 매체들 뿐만 아니라 이들의 임의의 조합과 같은, 프로세서-판독가능 저장 매체를 포함할 수도 있다. 따라서, 일부 구현예들에서, 저장 매체는 비일시성 (예컨대, 유형의) 저장 매체일 수도 있다.
저장 매체 (3704) 는, 프로세싱 회로 (3710) 가 저장 매체 (3704) 로부터 정보를 판독하고 저장 매체 (506) 에 정보를 기입할 수 있도록, 프로세싱 회로 (3710) 에 커플링될 수도 있다. 즉, 저장 매체 (3704) 는 저장 매체 (3704) 가 프로세싱 회로 (3710) 에 통합되는 예들 및/또는 저장 매체 (3704) 가 프로세싱 회로 (3710) 로부터 분리되는 예들을 포함하여, 저장 매체 (3704) 가 적어도 프로세싱 회로 (3710) 에 의해 액세스가능하도록 프로세싱 회로 (3710) 에 커플링될 수 있다.
저장 매체 (3704) 에 의해 저장된 프로그래밍/명령들은, 프로세싱 회로 (3710) 에 의해 실행될 때, 프로세싱 회로 (3710) 로 하여금 본원에서 설명되는 여러 기능들 및/또는 프로세스 단계들 중 하나 이상을 수행가능하게 한다. 예를 들어, 저장 매체 (3704) 는 GPIO 및 구성 신호 획득 명령들 (3726), 맵핑 명령들 (3728), 마스크 신호 획득 명령들 (3730), 송신하는 명령들 (3732), 가상 GPIO 패킷 획득 명령들 (3734), 상태 변화 집성 명령들 (3736), 또는 I3C 프레임 수신 명령들 (3738) 중 하나 이상을 포함할 수도 있다. 따라서, 본 개시물의 하나 이상의 양태들에 따르면, 프로세싱 회로 (3710) 는 본원에서 설명되는 장치들 중 임의의 장치 또는 모두에 대한 프로세스들, 기능들, 단계들, 및/또는 루틴들 중 임의의 것 또는 모두를 (저장 매체 (3704) 와 관련하여) 수행하도록 적응된다. 본원에서 사용될 때, 프로세싱 회로 (3710) 와 관련하여 용어 "적응된" 은 프로세싱 회로 (3710) 가, 본원에서 설명되는 여러 특징들에 따라 특정의 프로세스, 기능, 단계 및/또는 루틴을 수행하도록 (저장 매체 (3704) 와 결합하여) 구성되거나, 채용되거나, 구현되거나 그리고/또는 프로그래밍되는 것 중 하나 이상을 지칭할 수도 있다.
메모리 디바이스 (3708) 는 하나 이상의 메모리 디바이스들을 나타낼 수도 있으며, 위에서 나열된 메모리 기술들 중 임의의 기술 또는 임의의 다른 적합한 메모리 기술을 포함할 수도 있다. 메모리 디바이스 (3708) 는 장치 (3700) 의 컴포넌트들 중 하나 이상에 의해 사용되는 정보를 저장할 수도 있다. 메모리 디바이스 (3708) 는 또한 프로세싱 회로 (3710) 또는 장치 (3700) 의 어떤 다른 컴포넌트에 의해 조작되는 데이터를 저장하는데 사용될 수도 있다. 일부 구현예들에서, 메모리 디바이스 (3708) 및 저장 매체 (3704) 는 공통 메모리 컴포넌트로서 구현된다.
사용자 인터페이스 (3706) 는 사용자로 하여금 장치 (3700) 와 상호작용가능하게 하는 기능을 포함한다. 예를 들어, 사용자 인터페이스 (3706) 는 하나 이상의 사용자 출력 디바이스들 (예컨대, 디스플레이 디바이스, 등) 및 하나 이상의 사용자 입력 디바이스들 (예컨대, 키보드, 촉각 입력 디바이스, 등) 과 인터페이스할 수도 있다.
상기 사항을 고려하여, 개시된 양태들에 따른 동작들의 예들이 도 38 내지 도 40 의 플로우차트들과 함께 좀더 자세히 설명될 것이다. 편의를 위해, 도 38 의 동작들 (또는, 본원에서 설명되거나 또는 교시되는 임의의 다른 동작들) 은 특정의 컴포넌트들에 의해 수행되는 것으로 설명될 수도 있다. 그러나, 다양한 구현예들에서, 이들 동작들은 다른 유형들의 컴포넌트들에 의해 수행될 수도 있으며, 상이한 개수의 컴포넌트들을 이용하여 수행될 수도 있는 것으로 이해되어야 한다. 또한, 본원에서 설명되는 동작들 중 하나 이상이 주어진 구현예에서 채용되지 않을 수도 있는 것으로 이해되어야 한다.
(도 38a 및 도 38b 를 포함하는) 도 38 은 집적 회로 (예컨대, VGI FSM (1508)) 에 대한 방법을 예시하는 플로우차트 (3800) 이다. 파선들로 표현된 도 38 에서의 동작들은 옵션적인 동작들을 나타내는 것으로 이해되어야 한다.
집적 회로는 하나 이상의 주변장치 디바이스들에 대한 GPIO 신호들의 세트를 획득한다 (3802). 집적 회로는 맵핑 테이블에 기초하여 하나 이상의 주변장치 디바이스들에 대한 GPIO 신호들의 세트를 제 1 가상 GPIO 패킷에서의 미리 결정된 제 1 비트 위치들에 맵핑한다 (3804). 집적 회로는 GPIO 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하며, 여기서, GPIO 신호들의 세트와 연관된 마스크 신호들의 세트는 제 1 가상 GPIO 패킷에 포함된다 (3806). 집적 회로는 중앙 처리 유닛과는 독립적으로, GPIO 신호들의 세트를 포함하는 제 1 가상 GPIO 패킷을 획득한다 (3808). 집적 회로는 중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 제 1 가상 GPIO 패킷을 하나 이상의 주변장치 디바이스들로 송신한다 (3810). 집적 회로는 하나 이상의 주변장치 디바이스들의 하나 이상의 GPIO 핀들을 구성하기 위한 구성 신호들의 세트를 획득한다 (3812). 집적 회로는 맵핑 테이블에 기초하여 구성 신호들의 세트를 제 2 가상 GPIO 패킷에서의 미리 결정된 제 2 비트 위치들에 맵핑한다 (3814). 집적 회로는 구성 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하며, 여기서, 구성 신호들의 세트와 연관된 마스크 신호들의 세트는 제 2 가상 GPIO 패킷에 포함된다 (3816). 집적 회로는 중앙 처리 유닛과는 독립적으로 구성 신호들의 세트를 포함하는 제 2 가상 GPIO 패킷을 획득한다 (3818). 집적 회로는 중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 제 2 가상 GPIO 패킷을 하나 이상의 주변장치 디바이스들로 송신한다 (3820).
도 39 는 집적 회로 (예컨대, VGI FSM (1508)) 에 대한 방법을 예시하는 플로우차트 (3900) 이다. 파선들로 표현된 도 39 에서의 동작들은 옵션적인 동작들을 나타내는 것으로 이해되어야 한다.
집적 회로는 중앙 처리 유닛과는 독립적으로 하나 이상의 주변장치 디바이스들에 대한 GPIO 신호들의 세트를 획득한다 (3902). 집적 회로는 GPIO 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하며, 여기서, GPIO 신호들의 세트와 연관된 마스크 신호들의 세트는 가상 GPIO 패킷에 포함된다 (3904). 집적 회로는 중앙 처리 유닛과는 독립적으로 하나 이상의 주변장치 디바이스들의 하나 이상의 GPIO 핀들을 구성하기 위한 구성 신호들의 세트를 획득한다 (3906). 집적 회로는 구성 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하며, 여기서, 구성 신호들의 세트와 연관된 마스크 신호들의 세트는 가상 GPIO 패킷에 포함된다 (3908). 집적 회로는 맵핑 테이블에 기초하여 GPIO 신호들의 세트 및 구성 신호들의 세트를 가상 GPIO 패킷에서의 미리 결정된 비트 위치들에 맵핑한다 (3910). 집적 회로는 GPIO 신호들의 세트 및 구성 신호들의 세트를 포함하는 가상 GPIO 패킷을 획득한다 (3912). 집적 회로는 중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 가상 GPIO 패킷을 하나 이상의 주변장치 디바이스들로 송신한다 (3914).
도 40 은 집적 회로 (예컨대, VGI FSM (1508)) 에 대한 방법을 예시하는 플로우차트 (4000) 이다. 집적 회로는 제 1 주변장치 디바이스로부터 I3C 버스를 통해서 가상 GPIO 패킷을 포함하는 제 1 I3C 프레임을 수신하며, 여기서, 가상 GPIO 패킷은 I3C 프레임에 캡슐화된다 (4002). 집적 회로는 제 1 I3C 프레임으로부터 가상 GPIO 패킷을 획득하고 (4004), 적어도 하나의 제 1 GPIO 신호의 변화된 상태를 결정하기 위해 맵핑 테이블에 기초하여 가상 GPIO 패킷 내의 제 1 가상 GPIO 페이로드를 맵핑하고 (4006), 적어도 하나의 제 1 GPIO 신호의 변화된 상태를 적어도 하나의 제 2 GPIO 신호의 변화된 상태로 집성하고 (4008), 그리고 I3C 버스를 통해서 제 2 I3C 프레임을 제 2 주변장치 디바이스로 송신하며, 여기서, 제 2 I3C 프레임은 적어도 하나의 제 2 GPIO 신호의 변화된 상태를 시그널링하는 제 2 가상 GPIO 페이로드를 포함한다 (4010). 일 양태에서, 제 2 I3C 프레임은 브로드캐스트 I3C 프레임으로서 제 2 주변장치 디바이스로 송신된다. 일 양태에서, 브로드캐스트 I3C 프레임은 마스크된 브로드캐스트 I3C 프레임을 포함한다. 일 양태에서, 제 2 I3C 프레임은 다이렉트된 I3C 프레임으로서 제 2 주변장치 디바이스로 송신된다. 일 양태에서, 다이렉트된 I3C 프레임은 마스크된 다이렉트된 I3C 프레임을 포함한다. 일 양태에서, 집적 회로는 적어도 하나의 제 1 GPIO 신호의 변화된 상태에 응답하여 호스트 프로세서를 인터럽트할 수도 있다.
제 2 예시적인 디바이스 및 방법
도 41 은 본 개시물의 적어도 하나의 예에 따른, 장치 (4100) 의 선택 컴포넌트들을 예시하는 블록도이다. 장치 (4100) 는 외부 버스 인터페이스 (또는, 통신 인터페이스 회로) (4102), 저장 매체 (4104), 사용자 인터페이스 (4106), 메모리 디바이스 (4108), 및 프로세싱 회로 (4110) 를 포함한다. 프로세싱 회로 (4110) 는 외부 버스 인터페이스 (4102), 저장 매체 (4104), 사용자 인터페이스 (4106), 및 메모리 디바이스 (4108) 의 각각에 커플링되거나 그와 전기 통신된다.
외부 버스 인터페이스 (4102) 는 외부 버스 (4112) 에 장치 (4100) 의 컴포넌트들에 대한 인터페이스를 제공한다. 외부 버스 인터페이스 (4102) 는 예를 들어, 신호 드라이버 회로들, 신호 수신기 회로들, 증폭기들, 신호 필터들, 신호 버퍼들, 또는 시그널링 버스 또는 다른 유형들의 시그널링 매체들과 인터페이스하는데 사용되는 다른 회로부 중 하나 이상을 포함할 수도 있다. 일 양태에서, 외부 버스 (4112) 는 VGI 신호들 및/또는 I3C 신호들을 송신하고 수신하기 위한 3개의 물리적인 상호접속 라인들 (예컨대, 도 15 에 나타낸 상호접속부들 (1546, 1548, 및 1550)) 을 포함할 수도 있다.
프로세싱 회로 (4110) 는 데이터를 획득, 프로세싱, 및/또는 전송하고, 데이터 액세스 및 저장을 제어하고, 지령들을 발하고, 그리고 다른 원하는 동작들을 제어하도록 배열된다. 프로세싱 회로 (4110) 는 적어도 하나의 예에서 적합한 매체들에 의해 제공되는 원하는 프로그래밍을 구현하도록 적응된 회로부를 포함할 수도 있다. 일부의 경우, 프로세싱 회로 (4110) 는 프로그램을 구현하거나 또는 구현함이 없이, 원하는 기능을 수행하도록 적응된 회로부를 포함할 수도 있다. 일 예로서, 프로세싱 회로 (4110) 는 하나 이상의 프로세서들, 하나 이상의 제어기들, 및/또는 실행가능한 프로그래밍을 실행하거나 및/또는 원하는 기능을 수행하도록 구성된 다른 구조로서 구현될 수도 있다. 프로세싱 회로 (4110) 의 예들은 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적회로 (ASIC), 필드 프로그래밍가능 게이트 어레이 (FPGA) 또는 다른 프로그래밍가능 로직 컴포넌트, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들 또는 본원에서 설명된 기능들을 수행하도록 설계된 이들의 임의의 조합을 포함할 수도 있다. 범용 프로세서는 임의의 종래의 프로세서뿐만 아니라 마이크로프로세서, 제어기, 마이크로제어기, 또는 상태 머신을 포함할 수도 있다. 프로세싱 회로 (4110) 는 또한 DSP 와 마이크로프로세서의 조합과 같은 컴퓨팅 컴포넌트들의 조합, 다수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, ASIC 및 마이크로프로세서, 또는 임의의 다른 다수의 가변 구성들로서 구현될 수도 있다. 프로세싱 회로 (4110) 의 이들 예들은 예시를 위한 것이며 본 개시물의 범위 내의 다른 적합한 구성들이 또한 고려된다.
프로세싱 회로 (4110) 는 저장 매체 (4104) 상에 저장될 수도 있는 프로그래밍의 실행을 포함한 프로세싱을 위해 적응된다. 본원에서 사용될 때, 용어들 "프로그래밍", "명령들" 은 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어, 또는 기타 등등으로 지칭되든, 명령 세트들, 명령들, 코드, 코드 세그먼트들, 프로그램 코드, 프로그램들, 프로그래밍, 서브프로그램들, 소프트웨어 모듈들, 애플리케이션들, 소프트웨어 애플리케이션들, 소프트웨어 패키지들, 루틴들, 서브루틴들, 오브젝트들, 실행가능한 것들 (executables), 실행의 쓰레드들, 프로시저들, 함수들, 등을 한정없이 포함하는 것으로 넓게 해석되어야 한다.
일부의 경우, 프로세싱 회로 (4110) 는 맵핑 테이블 수신 회로/모듈 (4114), I3C 프레임 수신 회로/모듈 (4116), 가상 GPIO 패킷 획득 회로/모듈 (4118), GPIO 및 구성 신호 식별 회로/모듈 (4120), 또는 GPIO 및 구성 신호 획득 회로/모듈 (4122) 중 하나 이상을 포함할 수도 있다.
맵핑 테이블 수신 회로/모듈 (4114) 은 프로세싱 회로 (4110) 의 구성 단계 동안 호스트 디바이스로부터 I3C 버스를 통해서 맵핑 테이블을 수신하도록 적응된 회로부 및/또는 명령들 (예컨대, 저장 매체 (4104) 상에 저장된 맵핑 테이블 수신 명령들 (4126)) 을 포함할 수도 있다.
I3C 프레임 수신 회로/모듈 (4116) 은 중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 호스트 디바이스로부터 가상 범용 입력/출력 패킷을 포함하는 I3C 프레임을 수신하도록 적응된 회로부 및/또는 명령들 (예컨대, 저장 매체 (4104) 상에 저장된 I3C 프레임 수신 명령들 (4128)) 을 포함할 수도 있으며, 여기서, 가상 범용 입력/출력 패킷은 I3C 프레임에 포함된다.
가상 GPIO 패킷 획득 회로/모듈 (4118) 은 중앙 처리 유닛과는 독립적으로 집적 회로와 연관된 GPIO 신호들의 세트 및 구성 신호들의 세트를 포함하는 가상 GPIO 패킷을 획득하도록 적응된 회로부 및/또는 명령들 (예컨대, 저장 매체 (4104) 상에 저장된 가상 GPIO 패킷 획득 명령들 (4130)) 을 포함할 수도 있다.
GPIO 및 구성 신호 식별 회로/모듈 (4120) 은 맵핑 테이블에 기초하여 가상 GPIO 패킷에서의 미리 결정된 비트 위치들에서 GPIO 신호들의 세트 및 구성 신호들의 세트를 식별하거나, 변화된 상태를 갖는 것으로 마스크 비트로 표시되는 GPIO 신호들의 세트의 각각을 식별하거나, 또는 변화된 상태를 갖는 것으로 마스크 비트로 표시되는 구성 신호들의 세트의 각각을 식별하도록 적응된 회로부 및/또는 명령들 (예컨대, 저장 매체 (4104) 상에 저장된 GPIO 및 구성 신호 식별 명령들 (4132)) 을 포함할 수도 있다.
GPIO 및 구성 신호 획득 회로/모듈 (4122) 은 GPIO 신호들의 세트 및 구성 신호들의 세트를 획득하도록 적응된 회로부 및/또는 명령들 (예컨대, 저장 매체 (4104) 상에 저장된 GPIO 및 구성 신호 획득 명령들 (4134)) 을 포함할 수도 있다.
저장 매체 (4104) 는 프로그래밍, 전자 데이터, 데이터베이스들 또는 다른 디지털 정보를 저장하기 위한 하나 이상의 프로세서-판독가능 디바이스들을 나타낼 수도 있다. 저장 매체 (4104) 는 프로그래밍을 실행할 때 프로세싱 회로 (4110) 에 의해 조작되는 데이터를 저장하기 위하여 또한 이용될 수도 있다. 저장 매체 (4104) 는 휴대형 또는 고정된 저장 디바이스들, 광학 저장 디바이스들 및 프로그래밍을 저장, 포함 및/또는 운반할 수 있는 여러 다른 매체들을 포함한 프로세싱 회로 (4110) 에 의해 액세스될 수 있는 임의의 가용 매체들일 수도 있다. 비한정적인 일 예로서, 저장 매체 (4104) 는 자기 저장 디바이스 (예컨대, 하드 디스크, 플로피 디스크, 자기 스트립), 광학 스토리지 매체 (예컨대, 컴팩트 디스크 (CD), 디지털 다기능 디스크 (DVD)), 스마트 카드, 플래시 메모리 디바이스 (예컨대, 카드, 스틱, 키 드라이브), 랜덤 액세스 메모리 (RAM), 판독전용 메모리 (ROM), 프로그래밍가능 ROM (PROM), 소거가능한 PROM (EPROM), 전기적으로 소거가능한 PROM (EEPROM), 레지스터, 착탈식 디스크 및/또는 프로그래밍을 저장하기 위한 다른 매체들 뿐만 아니라 이들의 임의의 조합과 같은, 프로세서-판독가능 저장 매체를 포함할 수도 있다. 따라서, 일부 구현예들에서, 저장 매체는 비일시성 (예컨대, 유형의) 저장 매체일 수도 있다.
저장 매체 (4104) 는, 프로세싱 회로 (4110) 가 저장 매체 (4104) 로부터 정보를 판독하고 저장 매체 (506) 에 정보를 기입할 수 있도록, 프로세싱 회로 (4110) 에 커플링될 수도 있다. 즉, 저장 매체 (4104) 는 저장 매체 (4104) 가 프로세싱 회로 (4110) 에 통합되는 예들 및/또는 저장 매체 (4104) 가 프로세싱 회로 (4110) 로부터 분리되는 예들을 포함하여, 저장 매체 (4104) 가 적어도 프로세싱 회로 (4110) 에 의해 액세스가능하도록 프로세싱 회로 (4110) 에 커플링될 수 있다.
저장 매체 (4104) 에 의해 저장된 프로그래밍/명령들은, 프로세싱 회로 (4110) 에 의해 실행될 때, 프로세싱 회로 (4110) 로 하여금 본원에서 설명되는 여러 기능들 및/또는 프로세스 단계들 중 하나 이상을 수행가능하게 한다. 예를 들어, 저장 매체 (4104) 는 맵핑 테이블 수신 명령들 (4126), I3C 프레임 수신 명령들 (4128), 가상 GPIO 패킷 획득 명령들 (4130), GPIO 및 구성 신호 식별 명령들 (4132), GPIO 및 구성 신호 획득 명령들 (4134) 중 하나 이상을 포함할 수도 있다. 따라서, 본 개시물의 하나 이상의 양태들에 따르면, 프로세싱 회로 (4110) 는 본원에서 설명되는 장치들 중 임의의 장치 또는 모두에 대한 프로세스들, 기능들, 단계들, 및/또는 루틴들 중 임의의 것 또는 모두를 (저장 매체 (4104) 와 관련하여) 수행하도록 적응된다. 본원에서 사용될 때, 프로세싱 회로 (4110) 와 관련하여 용어 "적응된" 은 프로세싱 회로 (4110) 가, 본원에서 설명되는 여러 특징들에 따라 특정의 프로세스, 기능, 단계 및/또는 루틴을 수행하도록 (저장 매체 (4104) 와 결합하여) 구성되거나, 채용되거나, 구현되거나 그리고/또는 프로그래밍되는 것 중 하나 이상을 지칭할 수도 있다.
메모리 디바이스 (4108) 는 하나 이상의 메모리 디바이스들을 나타낼 수도 있으며, 위에 리스트된 메모리 기술들 중 임의의 기술 또는 임의의 다른 적합한 메모리 기술을 포함할 수도 있다. 메모리 디바이스 (4108) 는 장치 (4100) 의 컴포넌트들 중 하나 이상에 의해 사용되는 정보를 저장할 수도 있다. 메모리 디바이스 (4108) 는 또한 프로세싱 회로 (4110) 또는 장치 (4100) 의 어떤 다른 컴포넌트에 의해 조작되는 데이터를 저장하는데 사용될 수도 있다. 일부 구현예들에서, 메모리 디바이스 (4108) 및 저장 매체 (4104) 는 공통 메모리 컴포넌트로서 구현된다.
사용자 인터페이스 (4106) 는 사용자로 하여금 장치 (4100) 와 상호작용가능하게 하는 기능을 포함한다. 예를 들어, 사용자 인터페이스 (4106) 는 하나 이상의 사용자 출력 디바이스들 (예컨대, 디스플레이 디바이스, 등) 및 하나 이상의 사용자 입력 디바이스들 (예컨대, 키보드, 촉각 입력 디바이스, 등) 과 인터페이스할 수도 있다.
상기 사항을 고려하여, 개시된 양태들에 따른 동작들의 예들이 도 42 의 플로우차트와 함께 좀더 자세히 설명될 것이다. 편의를 위해, 도 42 의 동작들 (또는, 본원에서 설명되거나 또는 교시되는 임의의 다른 동작들) 은 특정의 컴포넌트들에 의해 수행되는 것으로 설명될 수도 있다. 그러나, 다양한 구현예들에서, 이들 동작들은 다른 유형들의 컴포넌트들에 의해 수행될 수도 있으며, 상이한 개수의 컴포넌트들을 이용하여 수행될 수도 있는 것으로 이해되어야 한다. 또한, 본원에서 설명되는 동작들 중 하나 이상이 주어진 구현예에서 채용되지 않을 수도 있는 것으로 이해되어야 한다.
도 42 는 집적 회로 (예컨대, 주변장치 디바이스 (1504) 에서의 VGI FSM (1508)) 에 대한 방법을 예시하는 플로우차트 (4200) 이다. 파선들로 표현된 도 42 에서의 동작들은 옵션적인 동작들을 나타내는 것으로 이해되어야 한다.
집적 회로는 집적 회로의 구성 단계 동안 호스트 디바이스로부터 I3C 버스를 통해서 맵핑 테이블을 수신한다 (4202). 집적 회로는 중앙 처리 유닛과는 독립적으로 호스트 디바이스로부터 I3C 버스를 통해서 가상 GPIO 패킷을 포함하는 I3C 프레임을 수신하며, 가상 GPIO 패킷은 I3C 프레임에 캡슐화된다 (4204). 집적 회로는 중앙 처리 유닛과는 독립적으로 집적 회로와 연관된 GPIO 신호들의 세트 및 구성 신호들의 세트를 포함하는 가상 GPIO 패킷을 획득한다 (4206). 집적 회로는 맵핑 테이블에 기초하여 가상 GPIO 패킷에서의 미리 결정된 비트 위치들에서 GPIO 신호들의 세트 및 구성 신호들의 세트를 식별한다 (4208). 집적 회로는 변화된 상태를 갖는 것으로 마스크 비트로 표시되는 GPIO 신호들의 세트의 각각을 식별한다 (4210). 집적 회로는 변화된 상태를 갖는 것으로 마스크 비트로 표시되는 구성 신호들의 세트의 각각을 식별한다 (4212). 집적 회로는 GPIO 신호들의 세트 및 구성 신호들의 세트를 획득한다 (4214).
도 43 은 시스템 온 칩 (SoC) 디바이스 및 주변장치 디바이스들을 포함하는 예시적인 시스템을 예시한다. 시스템 (4300) 은 도 7 과 관련하여 앞에서 설명된 호스트 디바이스 (702) (예컨대, SoC 디바이스) 및 예시적인 주변장치 디바이스들 (704, 706, 및 708) 을 포함한다. 예를 들어, 시스템 (4300) 은 셀룰러폰, 스마트 폰, 개인 휴대정보 단말기, 태블릿 컴퓨터, 랩탑 컴퓨터, 디지털 카메라, 핸드헬드 게이밍 디바이스, 등일 수도 있다. 호스트 디바이스 (702) 는 메모리 (4320) (예컨대, DRAM 디바이스) 에, 그리고 디스플레이 제어기 (4325) 에 또한 커플링하는 시스템 버스 (4315) (예컨대, I3C 버스) 를 통해서 주변장치 디바이스들 (704, 706, 및 708) 과 통신한다. 결국, 디스플레이 제어기 (4325) 는 디스플레이 (4335) 를 구동하는 비디오 프로세서 (4330) 에 커플링한다.
따라서, 본원에서 설명하는 양태들은 하드웨어 기반의 교환들에서 CPU 개입을 회피하면서도 호스트 디바이스에서 전력 절감들을 달성하는 메커니즘을 제공한다. 측파대 시그널링에 관련된 물리적인 I/O 는 물리적인 I/O 핀들을 제거하기 위해 효과적으로 가상화될 수도 있다. I3C 메시지들에의 GPIO들/하드웨어 이벤트 측파대들의 가상화는 VGI FSM 지원에 의한 I3C 주변장치들에 대한 호스트 디바이스에서의 여분의 GPIO들의 요구를 제거할 수도 있거나, 호스트 디바이스와 주변장치 디바이스들 사이의 I/O들의 맵핑을 가능하게 할 수도 있거나, 전체 하드웨어 이벤트 레이턴시를 감소시킬 수도 있거나, 및/또는 호스트 디바이스에서의 프로세싱 전력을 감소시킬 수도 있다.
도면들에 예시된 컴포넌트들, 단계들, 특징들 및/또는 기능들 중 하나 이상은 단일 컴포넌트, 단계, 특징, 또는 기능으로 재배열되고 및/또는 결합되거나, 또는 여러 컴포넌트들, 단계들, 또는 기능들로 구현될 수도 있다. 추가적인 엘리먼트들, 컴포넌트들, 단계들, 및/또는 기능들이 또한 본원에서 개시된 신규한 특징들로부터 일탈함이 없이 추가될 수도 있다. 도면들에서 예시된 장치, 디바이스들, 및/또는 컴포넌트들은 본원에서 설명된 방법들, 특징들, 또는 단계들 중 하나 이상을 수행하도록 구성될 수도 있다. 본원에서 설명되는 신규한 알고리즘들은 또한 효율적으로 소프트웨어에서 구현되고 그리고/또는 하드웨어에 내장될 수도 있다.
개시된 방법들에서의 단계들의 특정의 순서 또는 계층은 예시적인 프로세스들의 예시인 것으로 이해되어야 한다. 설계 선호사항들에 기초하여, 방법들에서의 단계들의 특정의 순서 또는 계층이 재순서정렬될 수도 있음을 알 수 있다. 수반하는 방법 청구항들은 여러 단계들의 엘리먼트들을 실례 순서로 제시되며, 달리 언급되지 않는 한, 제시되는 특정의 순서 또는 계층에 한정되는 것으로 의도되지 않는다. 추가적인 엘리먼트들, 컴포넌트들, 단계들 및/또는 기능들이 또한 본 개시물로부터 일탈함이 없이 추가되거나 이용되지 않을 수도 있다.
본 개시물의 특징들이 어떤 구현예들 및 도면들과 관련하여 설명되었을 수도 있지만, 본 개시물의 모든 구현예들은 본원에서 설명된 유리한 특징들 중 하나 이상을 포함할 수 있다. 다시 말해서, 하나 이상의 구현예들이 어떤 유리한 특징들을 가진 것으로 설명되었을 수도 있지만, 이러한 특징들의 하나 이상이 본원에서 설명된 여러 구현예들 중 임의의 구현예에 따라서 또한 사용될 수도 있다. 유사한 방식으로, 예시적인 구현예들이 디바이스, 시스템 또는 방법 구현예들로서 본원에서 설명되었을 수도 있지만, 이러한 예시적인 구현예들은 여러 디바이스들, 시스템들 및 방법들로 구현될 수 있는 것으로 이해되어야 한다.
또한, 적어도 일부 구현예들은 플로우차트, 흐름도, 구조 다이어그램 또는 블록도로 도시된 프로세스로 설명되었다는 것에 주의한다. 플로우차트가 동작들을 순차적인 프로세스로서 설명할 수도 있지만, 동작들 중 많은 것들이 병렬로 또는 병행으로 수행될 수 있다. 게다가, 동작들의 순서는 재-배열될 수도 있다. 프로세스는 그의 동작들이 완료되면 종료된다. 일부 양태들에서, 프로세스는 메소드 (method), 함수, 프로시저, 서브루틴, 서브프로그램 등에 대응할 수도 있다. 프로세스가 함수에 대응할 때, 프로세스의 종료는 호출 함수 또는 메인 함수로의 함수의 반환에 대응한다. 본원에서 설명되는 여러 방법들 중 하나 이상은 머신-판독가능, 컴퓨터-판독가능, 및/또는 프로세서-판독가능 저장 매체에 저장되고 하나 이상의 프로세서들, 머신들 및/또는 디바이스들에 의해 실행될 수도 있는 프로그래밍 (예컨대, 명령들 및/또는 데이터) 에 의해 부분적으로 또는 전적으로 구현될 수도 있다.
당업자들은 본원에서 개시된 구현예들과 관련하여 설명되는 여러가지 예시적인 로직 블록들, 모듈들, 회로들 및 알고리즘 단계들이 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드 또는 이들의 임의의 조합으로서 구현될 수도 있음을 또한 알 수 있을 것이다. 이 상호 교환가능성을 명확히 예시하기 위하여, 이상에서는, 여러 예시적인 컴포넌트들, 블록들, 모듈들, 회로들 및 단계들을 그들의 기능의 관점에서 일반적으로 설명되었다. 이런 기능이 하드웨어 또는 소프트웨어로 구현되는지 여부는 특정의 애플리케이션 및 전체 시스템에 부과되는 설계 제한 사항들에 의존한다.
본 개시물 내에서, 단어 "예시적인" 은 "일 예, 사례, 또는 예시로서 기능하는 것" 을 의미하도록 사용된다. 본원에서 "예시적인" 으로 설명하는 임의의 구현예 또는 양태는 본 개시물의 다른 양태들에 보다 바람직하거나 또는 유리한 것으로 반드시 해석되지는 않는다. 이와 유사하게, 용어 "양태들" 은 본 개시물의 모든 양태들이 설명하는 동작의 특성, 이점 또는 모드를 포함하도록 요구하지 않는다. 용어 "커플링된" 은 2개의 오브젝트들 사이의 직접 또는 간접 커플링을 본원에서 지칭하기 위해 사용된다. 예를 들어, 오브젝트 A 가 오브젝트 B 와 물리적으로 접촉하고, 그리고 오브젝트 B 가 오브젝트 C 와 접촉하면, 오브젝트들 A 및 C 는 그들이 서로 직접 물리적으로 접촉하지 않더라도, 서로 커플링된 것으로 여전히 간주될 수도 있다. 예를 들어, 제 1 다이가 제 2 다이와 전혀 직접 물리적으로 접촉하지 않지만, 제 1 다이는 패키지에서 제 2 다이에 커플링될 수도 있다. 용어들 "회로" 및 "회로부" 는, 접속되고 구성될 때, 전자 회로들의 유형에 관한 제한 없이, 본 개시물에서의 설명된 기능들의 실행을 가능하게 하는 전기 디바이스들 및 도체들 양자의 하드웨어 구현들뿐만 아니라, 프로세서에 의해 실행될 때, 본 개시물에서의 설명된 기능들의 실행을 가능하게 하는 정보 및 명령들의 소프트웨어 구현예들을 포함하도록, 넓게 사용되고 의도된다.
본원에서 사용될 때, 용어 "결정하는 것" 은 매우 다양한 액션들을 포괄한다. 예를 들어, "결정하는 것" 은 계산하는 것, 컴퓨팅하는 것, 프로세싱하는 것, 도출하는 것, 연구하는 것, 탐색하는 것 (예컨대, 테이블, 데이터베이스 또는 또 다른 데이터 구조에서 탐색하는 것), 확인하는 것 (ascertaining) 등을 포함할 수도 있다. 또한, "결정하는 것" 은 수신하는 것 (예컨대, 정보를 수신하는 것), 액세스하는 것 (예컨대, 메모리 내 데이터에 액세스하는 것) 등을 포함할 수도 있다. 또한, "결정하는 것" 은 결심하는 것 (resolving), 선택하는 것 (selecting), 선정하는 것 (choosing), 확립하는 것 (establishing) 등을 포함할 수도 있다. 본원에서 사용될 때, 용어 "획득하는 것" 은 수신하는 것, 발생시키는 것, 결정하는 것, 또는 이들의 임의의 조합을 포함하지만, 이에 한정되지 않는 하나 이상의 액션들을 포함할 수도 있다.
당업자들은 이제 알 수 있을 것이며, 당면한 특정의 애플리케이션에 따라서, 다수의 변경들, 치환들 및 변형들이 본 개시물의 디바이스들의 재료들, 장치, 구성들 및 사용법들에서 그리고 그에 대해 그 정신 및 범위로부터 일탈함이 없이 이루어질 수 있다. 이를 고려하여, 이들이 단지 본 발명의 일부 예들이므로, 본 발명의 범위는 본원에서 예시되고 설명된 특정 실시형태들의 범위에, 한정되지 않아야 하며, 오히려, 이하 첨부된 청구항들 및 이들의 기능적 균등물들의 범위와 완전히 상응해야 한다.

Claims (30)

  1. 집적 회로로서,
    하나 이상의 주변장치 디바이스들과 통신하도록 구성된 통신 인터페이스; 및
    상기 통신 인터페이스에 커플링된 프로세싱 회로를 포함하며,
    상기 프로세싱 회로는,
    상기 하나 이상의 주변장치 디바이스들에 대한 범용 입력/출력 신호들의 세트를 획득하고;
    중앙 처리 유닛과는 독립적으로 상기 범용 입력/출력 신호들의 세트를 포함하는 제 1 가상 범용 입력/출력 패킷을 획득하고; 그리고
    상기 중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 상기 제 1 가상 범용 입력/출력 패킷을 상기 하나 이상의 주변장치 디바이스들로 송신하도록 구성된, 집적 회로.
  2. 제 1 항에 있어서,
    상기 프로세싱 회로는, 상기 범용 입력/출력 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하도록 더 구성되며,
    상기 범용 입력/출력 신호들의 세트와 연관된 상기 마스크 신호들의 세트는 상기 제 1 가상 범용 입력/출력 패킷에 포함되는, 집적 회로.
  3. 제 1 항에 있어서,
    상기 프로세싱 회로는,
    상기 하나 이상의 주변장치 디바이스들의 하나 이상의 범용 입력/출력 핀들을 구성하기 위한 구성 신호들의 세트를 획득하고;
    상기 중앙 처리 유닛과는 독립적으로 상기 구성 신호들의 세트를 포함하는 제 2 가상 범용 입력/출력 패킷을 획득하고; 그리고
    상기 중앙 처리 유닛과는 독립적으로 상기 I3C 버스를 통해서 상기 제 2 가상 범용 입력/출력 패킷을 상기 하나 이상의 주변장치 디바이스들로 송신하도록 더 구성되는, 집적 회로.
  4. 제 3 항에 있어서,
    상기 프로세싱 회로는, 상기 구성 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하도록 더 구성되며,
    상기 구성 신호들의 세트와 연관된 상기 마스크 신호들의 세트는 상기 제 2 가상 범용 입력/출력 패킷에 포함되는, 집적 회로.
  5. 제 1 항에 있어서,
    상기 제 1 가상 범용 입력/출력 패킷은 상기 하나 이상의 주변장치 디바이스들에서의 다이렉트 입력/출력 맵핑 레지스터의 어드레스를 더 포함하며,
    상기 다이렉트 입력/출력 맵핑 레지스터의 각각의 비트는 상기 하나 이상의 주변장치 디바이스들의 대응하는 범용 입력/출력 핀의 핀 상태를 제어하는, 집적 회로.
  6. 제 3 항에 있어서,
    상기 제 2 가상 범용 입력/출력 패킷은 상기 하나 이상의 주변장치 디바이스들에서의 구성 레지스터의 어드레스를 더 포함하는, 집적 회로.
  7. 제 3 항에 있어서,
    상기 구성 신호들의 세트는,
    상기 하나 이상의 주변장치 디바이스들의 상기 하나 이상의 범용 입력/출력 핀들의 하나 이상의 전기 특성들을 설정하도록 구성되는, 집적 회로.
  8. 제 3 항에 있어서,
    상기 프로세싱 회로는,
    맵핑 테이블에 기초하여 적어도 상기 하나 이상의 주변장치 디바이스들에 대한 상기 범용 입력/출력 신호들의 세트를 상기 제 1 가상 범용 입력/출력 패킷에서의 미리 결정된 제 1 비트 위치들에, 또는 상기 맵핑 테이블에 기초하여 상기 구성 신호들의 세트를 상기 제 2 가상 범용 입력/출력 패킷에서의 미리 결정된 제 2 비트 위치들에 맵핑하도록 더 구성되는, 집적 회로.
  9. 집적 회로로서,
    하나 이상의 주변장치 디바이스들과 통신하도록 구성된 통신 인터페이스; 및
    상기 통신 인터페이스에 커플링된 프로세싱 회로를 포함하며,
    상기 프로세싱 회로는,
    중앙 처리 유닛과는 독립적으로 상기 하나 이상의 주변장치 디바이스들에 대한 범용 입력/출력 신호들의 세트를 획득하고;
    상기 중앙 처리 유닛과는 독립적으로 상기 하나 이상의 주변장치 디바이스들의 하나 이상의 범용 입력/출력 핀들을 구성하기 위한 구성 신호들의 세트를 획득하고;
    맵핑 테이블에 기초하여 상기 범용 입력/출력 신호들의 세트 및 상기 구성 신호들의 세트를 가상 범용 입력/출력 패킷에서의 미리 결정된 비트 위치들에 맵핑하고;
    상기 범용 입력/출력 신호들의 세트 및 상기 구성 신호들의 세트를 포함하는 상기 가상 범용 입력/출력 패킷을 획득하고; 그리고
    상기 중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 상기 가상 범용 입력/출력 패킷을 상기 하나 이상의 주변장치 디바이스들로 송신하도록 구성되는, 집적 회로.
  10. 제 9 항에 있어서,
    상기 프로세싱 회로는, 상기 범용 입력/출력 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하도록 더 구성되며,
    상기 범용 입력/출력 신호들의 세트와 연관된 상기 마스크 신호들의 세트는 상기 가상 범용 입력/출력 패킷에 포함되는, 집적 회로.
  11. 제 9 항에 있어서,
    상기 프로세싱 회로는, 상기 구성 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하도록 더 구성되며,
    상기 구성 신호들의 세트와 연관된 상기 마스크 신호들의 세트는 상기 가상 범용 입력/출력 패킷에 포함되는, 집적 회로.
  12. 제 9 항에 있어서,
    상기 미리 결정된 비트 위치들은 상기 맵핑 테이블에 기초하여 상기 하나 이상의 주변장치 디바이스들의 어드레스들에 대응하는, 집적 회로.
  13. 제 9 항에 있어서,
    상기 구성 신호들의 세트는 상기 하나 이상의 범용 입력/출력 핀들의 하나 이상의 전기 특성들을 설정하도록 구성되는, 집적 회로.
  14. 제 9 항에 있어서,
    상기 범용 입력/출력 신호들의 세트의 각각은 상기 하나 이상의 주변장치 디바이스들의 대응하는 범용 입력/출력 핀의 핀 상태를 제어하는, 집적 회로.
  15. 제 9 항에 있어서,
    상기 하나 이상의 주변장치 디바이스들에 대한 상기 범용 입력/출력 신호들의 세트는, 상기 범용 입력/출력 신호들의 세트를 저장하도록 구성된 범용 입력/출력 신호 인터페이스, 또는 지적 재산 블록으로부터 획득되는, 집적 회로.
  16. 집적 회로에서 동작하는 방법으로서,
    중앙 처리 유닛과는 독립적으로 하나 이상의 주변장치 디바이스들에 대한 범용 입력/출력 신호들의 세트를 획득하는 단계;
    상기 중앙 처리 유닛과는 독립적으로 상기 하나 이상의 주변장치 디바이스들의 하나 이상의 범용 입력/출력 핀들을 구성하기 위한 구성 신호들의 세트를 획득하는 단계;
    맵핑 테이블에 기초하여 상기 범용 입력/출력 신호들의 세트 및 상기 구성 신호들의 세트를 가상 범용 입력/출력 패킷에서의 미리 결정된 비트 위치들에 맵핑하는 단계;
    상기 범용 입력/출력 신호들의 세트 및 상기 구성 신호들의 세트를 포함하는 상기 가상 범용 입력/출력 패킷을 획득하는 단계; 및
    상기 중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 상기 가상 범용 입력/출력 패킷을 상기 하나 이상의 주변장치 디바이스들로 송신하는 단계를 포함하는, 집적 회로에서 동작하는 방법.
  17. 제 16 항에 있어서,
    상기 범용 입력/출력 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하는 단계를 더 포함하며,
    상기 범용 입력/출력 신호들의 세트와 연관된 상기 마스크 신호들의 세트는 상기 가상 범용 입력/출력 패킷에 포함되는, 집적 회로에서 동작하는 방법.
  18. 제 16 항에 있어서,
    상기 구성 신호들의 세트와 연관된 마스크 신호들의 세트를 획득하는 단계를 더 포함하며,
    상기 구성 신호들의 세트와 연관된 상기 마스크 신호들의 세트는 상기 가상 범용 입력/출력 패킷에 포함되는, 집적 회로에서 동작하는 방법.
  19. 제 16 항에 있어서,
    상기 미리 결정된 비트 위치들은, 상기 맵핑 테이블에 기초하여 상기 하나 이상의 주변장치 디바이스들의 어드레스들에 대응하는, 집적 회로에서 동작하는 방법.
  20. 제 16 항에 있어서,
    상기 구성 신호들의 세트는 상기 하나 이상의 범용 입력/출력 핀들의 하나 이상의 전기 특성들을 설정하도록 구성되는, 집적 회로에서 동작하는 방법.
  21. 제 16 항에 있어서,
    상기 범용 입력/출력 신호들의 세트의 각각은, 상기 하나 이상의 주변장치 디바이스들의 대응하는 범용 입력/출력 핀의 핀 상태를 제어하는, 집적 회로에서 동작하는 방법.
  22. 제 16 항에 있어서,
    상기 하나 이상의 주변장치 디바이스들에 대한 상기 범용 입력/출력 신호들의 세트는, 상기 범용 입력/출력 신호들의 세트를 저장하도록 구성된 범용 입력/출력 신호 인터페이스, 또는 지적 재산 블록으로부터 획득되는, 집적 회로에서 동작하는 방법.
  23. 집적 회로로서,
    호스트 디바이스와 통신하도록 구성된 통신 인터페이스; 및
    상기 통신 인터페이스에 커플링된 프로세싱 회로를 포함하며,
    상기 프로세싱 회로는,
    중앙 처리 유닛과는 독립적으로 I3C 버스를 통해서 상기 호스트 디바이스로부터 가상 범용 입력/출력 패킷을 포함하는 I3C 프레임을 수신하는 것으로서, 상기 가상 범용 입력/출력 패킷은 상기 I3C 프레임에 캡슐화되는, 상기 수신하고;
    상기 중앙 처리 유닛과는 독립적으로 상기 집적 회로와 연관되는 구성 신호들의 세트 및 범용 입력/출력 신호들의 세트를 포함하는 상기 가상 범용 입력/출력 패킷을 획득하고;
    맵핑 테이블에 기초하여 상기 가상 범용 입력/출력 패킷에서의 미리 결정된 비트 위치들에서 상기 범용 입력/출력 신호들의 세트 및 상기 구성 신호들의 세트를 식별하고; 그리고
    상기 범용 입력/출력 신호들의 세트 및 상기 구성 신호들의 세트를 획득하도록 구성되는, 집적 회로.
  24. 제 23 항에 있어서,
    상기 프로세싱 회로는 상기 집적 회로의 구성 단계 동안 호스트 디바이스로부터 상기 I3C 버스를 통해서 상기 맵핑 테이블을 수신하도록 더 구성되는, 집적 회로.
  25. 제 23 항에 있어서,
    상기 프로세싱 회로는 변화된 상태를 갖는 것으로 마스크 비트로 표시되는 상기 범용 입력/출력 신호들의 세트의 각각을 식별하도록 더 구성되는, 집적 회로.
  26. 제 23 항에 있어서,
    상기 프로세싱 회로는 변화된 상태를 갖는 것으로 마스크 비트로 표시되는 상기 구성 신호들의 세트의 각각을 식별하도록 더 구성되는, 집적 회로.
  27. 제 23 항에 있어서,
    상기 구성 신호들의 세트는,
    상기 집적 회로의 하나 이상의 범용 입력/출력 핀들의 하나 이상의 전기 특성들을 설정하도록 구성되는, 집적 회로.
  28. 제 27 항에 있어서,
    상기 하나 이상의 범용 입력/출력 핀들의 상기 하나 이상의 전기 특성들은 적어도 구동 강도, 슬루 레이트, 전압 레벨, 출력 유형, 또는 인터럽트 트리거 유형을 포함하는, 집적 회로.
  29. 제 23 항에 있어서,
    상기 I3C 프레임은 브로드캐스트 I3C 프레임 또는 다이렉트된 I3C 프레임인, 집적 회로.
  30. 제 29 항에 있어서,
    상기 I3C 프레임은 상기 I3C 프레임을 상기 브로드캐스트 I3C 프레임 또는 상기 다이렉트된 I3C 프레임으로서 식별하는 지령 코드를 포함하는, 집적 회로.
KR1020187009928A 2015-09-10 2016-08-22 멀티-노드 네트워크에서의 입력/출력 신호 브릿징 및 가상화 KR20180050728A (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201562216891P 2015-09-10 2015-09-10
US62/216,891 2015-09-10
US201562265612P 2015-12-10 2015-12-10
US62/265,612 2015-12-10
US201662349609P 2016-06-13 2016-06-13
US62/349,609 2016-06-13
US15/242,368 2016-08-19
US15/242,368 US10140242B2 (en) 2015-09-10 2016-08-19 General purpose input/output (GPIO) signal bridging with I3C bus interfaces and virtualization in a multi-node network
PCT/US2016/048082 WO2017044301A1 (en) 2015-09-10 2016-08-22 Input/output signal bridging and virtualization in a multi-node network

Publications (1)

Publication Number Publication Date
KR20180050728A true KR20180050728A (ko) 2018-05-15

Family

ID=58236893

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187009928A KR20180050728A (ko) 2015-09-10 2016-08-22 멀티-노드 네트워크에서의 입력/출력 신호 브릿징 및 가상화

Country Status (7)

Country Link
US (1) US10140242B2 (ko)
EP (1) EP3347824A1 (ko)
JP (1) JP2018533120A (ko)
KR (1) KR20180050728A (ko)
CN (1) CN108027791A (ko)
BR (1) BR112018004665A2 (ko)
WO (1) WO2017044301A1 (ko)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9727506B2 (en) 2015-10-01 2017-08-08 Sony Corporation Communication system, communication system control method, and program
US10872049B2 (en) * 2016-01-29 2020-12-22 Analog Devices, Inc. GPIO-to-GPIO communication on a multi-node daisy-chained network
US10769084B2 (en) * 2016-12-22 2020-09-08 Intel Corporation Out-of band interrupt mapping in MIPI improved inter-integrated circuit communication
US10467154B2 (en) * 2017-02-10 2019-11-05 Qualcomm Incorporated Multi-port multi-sideband-GPIO consolidation technique over a multi-drop serial bus
CN108628798B (zh) * 2017-03-20 2020-10-20 大唐移动通信设备有限公司 一种板卡、芯片加载配置信息的方法及fpga
US10482055B2 (en) 2017-05-10 2019-11-19 Qualcomm Incorporated Hardware event priority sensitive programmable transmit wait-window for virtual GPIO finite state machine
US20180329837A1 (en) * 2017-05-10 2018-11-15 Qualcomm Incorporated Input/output direction decoding in mixed vgpio state exchange
DE102017110890A1 (de) * 2017-05-18 2018-11-22 Basler Ag Vorrichtung und Verfahren zur Übertragung einer Steuerinformation innerhalb einer Datenkommunikation über eine serielle Schnittstelle
US11132323B2 (en) * 2017-06-20 2021-09-28 Intel Corporation System, apparatus and method for extended communication modes for a multi-drop interconnect
US20190050366A1 (en) * 2017-08-14 2019-02-14 Qualcomm Incorporated Device, event and message parameter association in a multi-drop bus
US10515044B2 (en) 2017-11-01 2019-12-24 Qualcomm Incorporated Communicating heterogeneous virtual general-purpose input/output messages over an I3C bus
CN108255776B (zh) * 2017-12-01 2020-07-03 广东高云半导体科技股份有限公司 一种兼容apb总线的i3c主设备、主从系统及通信方法
US10511397B2 (en) 2018-01-24 2019-12-17 Qualcomm Incorporated Virtual general purpose input/output (GPIO) (VGI) over a time division multiplex (TDM) bus
US10579581B2 (en) * 2018-02-28 2020-03-03 Qualcomm Incorporated Multilane heterogeneous serial bus
US20190317911A1 (en) * 2018-04-17 2019-10-17 Qualcomm Incorporated General purpose input output triggered interface message
US10733121B2 (en) * 2018-05-10 2020-08-04 Qualcomm Incorporated Latency optimized I3C virtual GPIO with configurable operating mode and device skip
US10713185B2 (en) * 2018-07-16 2020-07-14 Logitech Europe S.A. Wireless communication with peripheral device
US11880314B1 (en) * 2018-07-27 2024-01-23 Dialog Semiconductor B.V. Microcontroller for driving an external device
US10496562B1 (en) * 2018-08-13 2019-12-03 Qualcomm Incorporated Low latency virtual general purpose input/output over I3C
US10725949B2 (en) * 2018-08-28 2020-07-28 Qualcomm Incorporated Slave-to-slave direct communication
LU100947B1 (en) * 2018-09-27 2020-03-27 Nanopower As Device connection system and method of operation
US10684723B2 (en) * 2018-10-23 2020-06-16 Getac Technology Corporation Touch device and control method thereof
US20200195759A1 (en) * 2018-12-18 2020-06-18 Texas Instruments Incorporated Protocol auto-detection
KR20200093106A (ko) * 2019-01-25 2020-08-05 삼성전자주식회사 반도체 집적 회로 및 그것의 동작 방법
DE102019201533A1 (de) * 2019-02-07 2020-08-13 Robert Bosch Gmbh Systemkomponente mit konfigurierbarem Kommunikationsverhalten und Verfahren zum Betreiben einer solchen Systemkomponente
GB201909270D0 (en) * 2019-06-27 2019-08-14 Nordic Semiconductor Asa Microcontroller system with GPIOS
CN110489212B (zh) * 2019-08-20 2022-08-02 东软集团股份有限公司 一种通用型输入输出口虚拟化的方法、装置及车机
TW202117932A (zh) * 2019-10-15 2021-05-01 瑞昱半導體股份有限公司 積體電路及動態腳位控制方法
EP3869742B1 (en) * 2020-02-20 2023-06-07 Nxp B.V. Network node
CN111538692B (zh) * 2020-04-20 2022-03-18 深圳市汇川技术股份有限公司 变频器系统及其控制方法
CN111562946B (zh) * 2020-05-06 2023-09-08 青岛信芯微电子科技股份有限公司 一种数据处理方法及芯片
US11513991B2 (en) * 2020-10-01 2022-11-29 Qualcomm Incorporated Batch operation across an interface
CN117178517A (zh) * 2021-04-07 2023-12-05 索尼半导体解决方案公司 通信装置、通信系统和通信方法
US11438122B2 (en) 2021-06-14 2022-09-06 Ultralogic 6G, Llc Custom downlink search-spaces for low-complexity 5G/6G messaging
US11546111B2 (en) 2021-06-24 2023-01-03 Ultralogic 6G, Llc Demarking the start and end of 5G/6G downlink messages
WO2023085317A1 (ja) 2021-11-12 2023-05-19 合同会社Kosumi ストリームインターフェースを持つプロセッサ及びシステム
CN115080191B (zh) * 2022-08-18 2023-01-06 苏州浪潮智能科技有限公司 一种管理i2c链路的方法、装置、设备及可读介质

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5291391A (en) 1992-03-20 1994-03-01 Cincinnati Milacron Inc. Fast programmable scan logic controller method and apparatus
US5455911A (en) 1993-04-05 1995-10-03 Allen-Bradley Company, Inc. Communications protocol for use in transferring data over a serial bus
US6020760A (en) * 1997-07-16 2000-02-01 Altera Corporation I/O buffer circuit with pin multiplexing
JP2001175584A (ja) 1999-12-16 2001-06-29 Ricoh Co Ltd オプション機器の制御方法
WO2003019391A2 (en) 2001-08-24 2003-03-06 Intel Corporation A general input/output architecture protocol and related methods to manage data integrity
US20030115513A1 (en) * 2001-08-24 2003-06-19 David Harriman Error forwarding in an enhanced general input/output architecture and related methods
US7099318B2 (en) 2001-12-28 2006-08-29 Intel Corporation Communicating message request transaction types between agents in a computer system using multiple message groups
US7373111B2 (en) * 2004-02-19 2008-05-13 Marvell International Ltd. Communication access apparatus, systems, and methods
TWI255404B (en) 2004-12-03 2006-05-21 Hon Hai Prec Ind Co Ltd System and method for dynamically allocating addresses to devices connected to an integrated circuit bus
US20060143348A1 (en) 2004-12-29 2006-06-29 Wilson Matthew T System, method, and apparatus for extended serial peripheral interface
FR2885710B1 (fr) 2005-05-11 2007-08-03 Stmicroelectronics Maroc Selection d'adresse pour bus i2c
CN101499053A (zh) * 2008-01-31 2009-08-05 上海普芯达电子有限公司 实现微控制器可配置性的方法和可配置的微控制器
US8205017B2 (en) 2009-11-17 2012-06-19 Aptina Imaging Corporation Systems and methods for addressing and synchronizing multiple devices
US8959253B2 (en) * 2009-12-23 2015-02-17 Intel Corporation Virtualizing a powered down input/output device
US8228038B2 (en) * 2009-12-23 2012-07-24 Intel Corporation Power management control system and method
US8725915B2 (en) 2010-06-01 2014-05-13 Qualcomm Incorporated Virtual buffer interface methods and apparatuses for use in wireless devices
CN102650975B (zh) * 2012-03-31 2014-10-29 中国人民解放军国防科学技术大学 用于多硬件平台飞腾服务器的i2c总线的实现方法
US8806025B2 (en) * 2012-06-25 2014-08-12 Advanced Micro Devices, Inc. Systems and methods for input/output virtualization
US9129072B2 (en) * 2012-10-15 2015-09-08 Qualcomm Incorporated Virtual GPIO
US9148147B2 (en) 2013-06-03 2015-09-29 Maxim Integrated Products, Inc. Programmable mixed-signal input/output (IO)
CN104346275A (zh) * 2013-08-07 2015-02-11 鸿富锦精密工业(深圳)有限公司 内存测试系统及方法
US9747244B2 (en) 2013-11-22 2017-08-29 Qualcomm Incorporated Clockless virtual GPIO
US9417801B2 (en) 2014-03-27 2016-08-16 Intel Corporation Virtual general-purpose I/O controller
US10241955B2 (en) * 2014-06-18 2019-03-26 Qualcomm Incorporated Dynamically adjustable multi-line bus shared by multi-protocol devices
US9880965B2 (en) * 2014-09-11 2018-01-30 Qualcomm Incorporated Variable frame length virtual GPIO with a modified UART interface
US10241953B2 (en) * 2015-08-07 2019-03-26 Qualcomm Incorporated Dynamic data-link selection over common physical interface

Also Published As

Publication number Publication date
BR112018004665A2 (pt) 2018-09-25
JP2018533120A (ja) 2018-11-08
WO2017044301A1 (en) 2017-03-16
US10140242B2 (en) 2018-11-27
CN108027791A (zh) 2018-05-11
US20170075852A1 (en) 2017-03-16
EP3347824A1 (en) 2018-07-18

Similar Documents

Publication Publication Date Title
US10140242B2 (en) General purpose input/output (GPIO) signal bridging with I3C bus interfaces and virtualization in a multi-node network
CN107278299B (zh) 经由可重配置的虚拟交换机实现次级总线功能性的方法、装置和系统
CN106209695B (zh) 给加载/存储通信协议提供低功率物理单元
KR101695712B1 (ko) 상이한 상호접속 프로토콜을 위한 하나의 상호접속 프로토콜의 열거 및/또는 구성 메커니즘의 레버리징
US9880965B2 (en) Variable frame length virtual GPIO with a modified UART interface
CN105700732B (zh) 用于传输触摸传感器信息的装置、系统和方法
EP3844628B1 (en) Slave-to-slave direct communication
US20180181507A1 (en) Out-of-band interrupt mapping in mipi improved inter-integrated circuit communication
JP2018512775A (ja) 可変フレーム長を備えた2線式インターフェースシステムに対するインピーダンスに基づくフロー制御
US11669487B2 (en) Secondary device detection using a synchronous interface
US11907718B2 (en) Loop execution in a reconfigurable compute fabric using flow controllers for respective synchronous flows
US11436176B2 (en) Semiconductor integrated circuit and operation method thereof
US20060184708A1 (en) Host controller device and method
WO2017171997A1 (en) A method, apparatus and system for communicating between multiple protocols
US11650876B2 (en) Payload parity protection for a synchronous interface
US20190286606A1 (en) Network-on-chip and computer system including the same
US11675713B2 (en) Avoiding deadlock with a fabric having multiple systems on chip
US20230056665A1 (en) Mechanism to provide reliable receipt of event messages
US20220291733A1 (en) Methods and apparatus to reduce display connection latency
US20240028206A1 (en) Methods and systems for communications between hardware components
US10803008B2 (en) Flexible coupling of processor modules
CN117421268A (zh) 一种互联系统、设备及网络
JP4642398B2 (ja) 共有バス調停システム