KR20230164152A - 심리스하게 집적된 마이크로컨트롤러 칩 - Google Patents

심리스하게 집적된 마이크로컨트롤러 칩 Download PDF

Info

Publication number
KR20230164152A
KR20230164152A KR1020237037556A KR20237037556A KR20230164152A KR 20230164152 A KR20230164152 A KR 20230164152A KR 1020237037556 A KR1020237037556 A KR 1020237037556A KR 20237037556 A KR20237037556 A KR 20237037556A KR 20230164152 A KR20230164152 A KR 20230164152A
Authority
KR
South Korea
Prior art keywords
die
bridge
cpu
bus
interconnect
Prior art date
Application number
KR1020237037556A
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 KR20230164152A publication Critical patent/KR20230164152A/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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
    • 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/4027Coupling between buses using bus bridges
    • 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/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/76Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0062Bandwidth consumption reduction during transfers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/40Bus coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2103Challenge-response
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Information Transfer Systems (AREA)
  • Microcomputers (AREA)
  • Bus Control (AREA)

Abstract

CPU 다이 및 하나 이상의 외부 혼합 모드(아날로그) 칩을 포함하는 시스템에서와 같은 전자 시스템에서의 기법은, 시스템 설계, 성능, 비용, 효율성 및 프로그래밍 가능성 중 하나 이상에서 개선 이점을 제공할 수 있다. 일 실시예에서, CPU 다이는, 적어도 하나의 CPU가 이들이 단일 칩 마이크로컨트롤러로 설계된 것처럼 아날로그 칩에 대해 완전하고 투명적인 연결을 갖는 것을 가능하게 하는 적어도 하나의 마이크로컨트롤러 CPU 및 회로부를 포함하는 한편, 둘 사이의 인터페이스 설계는 극도로 효율적이고 와이어의 수가 제한되지만, 기능 또는 소프트웨어 모델에 영향을 주지 않고 개선된 성능을 제공할 수 있다.

Description

심리스하게 집적된 마이크로컨트롤러 칩
마이크로컨트롤러 CPU, 메모리, 및 별개의 프로세스 노드에 상주하는 아날로그 디바이스를 포함하는, 심리스하게 집적된 마이크로컨트롤러 칩에서의 다이 간 신호의 통신이 설명된다. 이 집적된 시스템은, 성능의 눈에 띄는 손실 없이 심리스한 집적을 유지하면서, 감소된 비용 또는 복잡성, 더 높은 효율, 더 짧은 시장 출시 시간을 제공한다.
공개적으로 또는 잘 알려진 것으로 명시적으로 식별되지 않는 한, 문맥, 정의, 또는 비교 목적을 포함하여, 본 명세서에서의 기법 및 개념에 대한 언급은, 그러한 기법 및 개념이 이전에 공개적으로 알려져 있거나 이와 달리 선행기술의 일부라는 것을 인정하는 것으로 해석되어서는 안 된다. 특허, 특허 출원, 및 공개를 포함하여 본 명세서에 인용된 참조(있는 경우에)는, 특별히 통합되었는지 여부와 관계없이 모든 목적을 위해 그 전체가 참조로서 여기에 통합된다.
마이크로컨트롤러와 마이크로컴퓨터의 세계에서, 우리는 다양한 환경과 기능에 적응하는 I/O 주변 장치와 시스템을 효과적으로 개발하고 집적하는 과제에 직면한다. 한 산업에 대해 작동하는 해결책이 모든 산업에 대해 작동하는 것은 아니며 수정될 필요가 있다. 이러한 과제는 결국 거의 모든 제어 기능에 대해 ASIC 디바이스가 수정될 필요가 있는 대규모 스케일링 이슈를 생성한다.
기존 해결책은 CPU, 메모리 및 주변 장치 액세스를 단일 다이에 집적한다. I/O 주변 장치와 CPU, 클록 및 메모리 액세스 사이의 인터페이스는 원하는 성능을 달성하기 위해 긴밀하게 결합되고 관리된다.
다이 내의 I/O 또는 임의의 다른 요소의 변경은, 다이에 대한 외부 인터페이스 및 성능을 유지하기 위해 새로운 하드웨어 및 소프트웨어 설계를 수반할 수 있다. CPU에서의 변경은 동일한 결과를 초래할 것이다.
추가적으로, CPU 로직 및 메모리와 같은 일부 컴포넌트는 하나의 제조 프로세스에서 더 잘 구현될 수 있고, 고전압 및 정밀 아날로그와 같은 다른 컴포넌트는 상이한 제조 프로세스에서 더 잘 구현될 수 있다. 동일한 다이 상에 모든 컴포넌트를 구현하는 것은, 각 컴포넌트가 그 필요에 더 적합한 제조 프로세스에서 구현될 경우 달성될 수 있는 것에 비해 비용이 증가하고 성능이 저하될 수 있다.
버스, 인터럽트, 직접 메모리 액세스(Direct Memory Access; DMA) 및 클록 사이의 긴밀한 관계와 연관된 상호 작용으로 인해 CPU와 I/O 사이의 디커플링은 어렵다.
이러한 이슈를 극복하기 위해, 기존 해결책은 외부 인터페이스가 시스템을 관리할 수 있도록 다이에 많은 수의 와이어(입력/출력)를 제공한다. 또는 일부 해결책은 CPU와 주변 장치 사이를 독립형 ASIC(때때로 아날로그 ASIC)으로 분리하며, 이는 시스템 설계자 및 프로그래머에게 복잡한 인터페이스 문제를 생성한다. CPU와 ASIC의 분리는, 이 둘을 함께 적층할 때 (또는 나란히 둘 때) 프로그래밍 과제를 해결하지 않는다.
다이 대 다이 인터페이스에 대한 프로그래밍 복잡성은, 원격 다이 상의 주변 장치 상에서 논리 연산을 수행하기 위해 많은 수의 CPU 명령어를 사용해야 하는 것을 포함한다. 게다가, 인터럽트 서비스 요청 및 직접 메모리 액세스 요청과 같은 일반적인 인터페이스의 변경은, 소프트웨어가 폴링 메커니즘을 사용하여 그러한 기능을 관리해야 하는 것 또는 이러한 피처에 대한 상호 연결을 위해 개별적인 범용 입력/출력을 제공하는 결과를 초래할 수 있다. 버스 트랜잭션의 보안 관리, 버스 트랜잭션에 대한 주변 장치 데이터 흐름 제어, 트랜잭션 오류 보고 및 데이터 블록 전송과 같은 특정 피처는 소프트웨어에 의해 직접 관리되는 것이 요구될 수 있는 반면, 단일 다이 접근 방식에서는 이들이 하드웨어에서 처리될 수 있다. 원격 다이 상에 위치될 수 있는 전력 관리와 CPU 사이의 자동 PMU 상태 전파를 제공하는 것과 유사한 같은 다른 피처는 또한, 소프트웨어에 의해 관리되어야 할 수 있거나, 표준 신호를 직접 전송하기 위해 전용 상호연결부가 제공되어야 할 수 있다.
따라서, 다이 간 통신 인터페이스를 최소화하는 것으로 이어지는 논리적 구조로 훨씬 더 많은 수의 와이어를 대체하면서 전체 버스 더하기 인터럽트 더하기 DMA 및 다른 원하는 구조를 브리징하고, 일반적인 완전 병렬 신호 세트로 동일한 다이 상에서 구현된 경우 발생하였을 것과 논리적으로 동등한 거동을 각 다이의 컴포넌트에 제공하는 것을 허용하는 다이 간 하드웨어 아키텍처에 대한 필요성이 존재한다. CPU와는 상이한 다이 상에 위치된 주변 장치가, 완전한 기능을 갖춘(full-featured) 표준 버스 인터페이스로 구현되는 것을 허용하는 인터페이스는, 이들이 궁극적으로 CPU와 동일한 다이 상에 위치되는지 또는 상이한 다이 상에 위치되는지에 관계없이 주변 장치가 애그노스틱 설계되는 것을 허용한다. 또한, ASIC 부분 상에 주변 장치를 추가하는 것/ASIC 부분으로부터 주변 장치를 제거하는 것 또는 CPU와 ASIC 다이 사이에서 컴포넌트를 이동시키는 것은, 인터페이스에 영향을 미치지 않으므로, 이는 다양한 시스템 및 그들의 특정 필요와 연관된 설계를 빠르게 변경하는 것을 가능하게 한다. 그리고 인터페이스 자체가 일반적인 포맷인 경우, 이들 두 다이가 모두 이 특정 배열을 위해 설계되지 않았더라도 CPU를 포함하는 임의의 다이가 주변 장치를 포함하는 임의의 다이에 결합될 수 있다. CPU 다이가 다수의 설계(CPU 다이 설계가 완료되었을 때 원래 예상하지 못했던 설계를 포함함)에 걸쳐 사용될 수 있다. 또는 비-CPU 다이가 다수의 상이한 CPU 다이와 쌍을 이루게 되어 공통 주변 장치에 대한 공통 설계를 사용하여 프로세싱 능력에서의 변화를 효율적으로 구현할 수 있다.
시스템이 설명된다. 이 시스템은, 중앙 프로세싱 유닛(central processing unit; CPU) 및 제1 브리지를 갖는 제1 다이; 제2 브리지를 갖는 제2 다이를 포함할 수 있고, 여기서 제2 다이는 제2 CPU를 배제하거나 제1 브리지 및 제2 브리지와 관련되지 않은 제3 CPU를 갖는다. 더욱이, 시스템은 제1 브리지 및 제2 브리지에 전기적으로 결합된 다이 대 다이(die-to-die) 상호연결부를 포함하고, 여기서 다이 대 다이 상호연결부는 제1 다이 내의 제1 버스 및 제2 다이 내의 제2 버스보다 더 적은 수의 신호 라인을 포함한다. 게다가, 제1 브리지 및 제2 브리지는 다이 대 다이 상호연결부의 존재를 마스킹하여, (CPU와 같은) 제1 다이 상의 마스터에게 제2 다이의 기능이 제1 다이 상에서 구현되는 것처럼 보이도록 한다.
제1 다이는 다수의 디바이스를 포함할 수 있고, 다수의 디바이스 중 하나 이상의 디바이스는, 다이 대 다이 상호연결부를 통해 제2 다이 상의 버스 슬레이브에 대한 버스 트랜잭션에 관여하는 버스 마스터로서 역할을 할 수 있다는 것에 유의한다.
더욱이, 제2 브리지는 제1 다이 상의 버스 마스터에 의한 트랜잭션을 일시 중지하여, 제1 버스 마스터에 의한 일시 중지된 트랜잭션을 완료하기 전에 다이 대 다이 상호연결부를 통해 제1 다이 또는 제2 다이 상의 제2 버스 마스터에 의한 트랜잭션이 발생하도록 서비스하는 것을 허용할 수 있다.
게다가, 제2 다이는 다수의 디바이스를 포함할 수 있으며, 다수의 디바이스 중 하나 이상의 디바이스는 제1 브리지 및 제2 브리지에 대해 버스 슬레이브로서 역할을 할 수 있다.
추가적으로, 제1 다이는 제2 다이의 단일 인스터스만 구현될 때 단일의 더 넓은 대역폭 상호연결부를 제공할 수 있고, 제2 다이의 두 개의 인스턴스가 있는 구현에 대해서는 더 낮은 두 개의 대역폭 연결을 허용한다.
일부 실시예에서, 제1 다이 상에서 구현된 소프트웨어 모델이 단일 다이 시스템 상에서 구현된 것과 동일하다.
제1 버스 및 제2 버스는 공통 포맷을 가질 수 있다는 것에 유의한다. 예를 들어, 포맷은, ARM 어드밴스드 마이크로컨트롤러 버스 아키텍처(Advanced Microcontroller Bus Architecture; AHB), AHBLite 또는 AHB5를 포함할 수 있다. 대안적으로 또는 추가적으로, 포맷은 Wishbone 아키텍처를 포함할 수 있다.
더욱이, 시스템은, 제2 다이 상의 제3 버스에 전기적으로 결합된 제2 다이 상의 제2 버스 마스터 및 버스 슬레이브로서 제3 버스에 전기적으로 결합된 제3 브리지; 제1 다이 상의 제4 버스에 전기적으로 결합된 제1 다이 상의 제2 버스 슬레이브, 및 버스 마스터로서 제4 버스에 전기적으로 결합된 제4 브리지; 및 제3 브리지와 제4 브리지 사이에서 제2 신호를 전달하는 제2 다이 대 다이 상호연결부를 포함할 수 있고, 제2 다이 대 다이 상호연결부의 수는 제2 버스 마스터와 제3 브리지 사이의 신호 라인의 수보다 적다. 제1 브리지, 제2 브리지, 및 다이 대 다이 상호연결부는, 버스 트랜잭션이 단일 다이 시스템에서 발생하는 것과 동일한 방식으로 버스 슬레이브와의 버스 트랜잭션에 버스 마스터가 관여하는 것을 가능하게 할 수 있다.
게다가, 제2 다이 상의 버스 슬레이브에 액세스하기 위한 CPU 명령어는 버스 슬레이브가 제1 다이 상에서 구현된 것과 동일할 수 있다.
추가적으로, 제1 브리지 및 제2 브리지는 커맨드 전송에 이어서 선택적 데이터 전송을 위해 다이 대 다이 상호연결부를 순차적으로 사용할 수 있다. 일부 실시예에서, 커맨드 전송은 단일 클록 사이클에서 통신된다. 대안적으로, 커맨드 전송은 제1 다이에 대해 투명적(transparent)이면서 또는 제1 다이 상의 소프트웨어 모델에 대해 투명적이면서 다수의 클록 사이클에 걸쳐 직렬화될 수 있다. 더욱이, 직렬화를 위한 직렬화 길이는 적어도 부분적으로 커맨드 콘텐츠에 기초하여 가변적일 수 있다.
커맨드 전송은, 시스템이 제1 브리지 또는 제2 브리지 없이 단일 다이 상에 구현된 경우와 동일한 클록 사이클을 유지할 수 있다는 점에 유의한다.
게다가, 데이터 단계(phase)는 다이 대 다이 상호연결부 중 하나 이상에 대해 상이한 데이터 방향을 가질 수 있다. 예를 들어, 데이터 방향은 커맨드 콘텐츠로부터 디코딩될 수 있다. 추가적으로, 데이터 전송은 단일 클록 사이클에서 통신될 수도 있고, 다수의 클록 사이클에 걸쳐 직렬화될 수도 있다. 데이터 전송 직렬화 길이는 이전 커맨드 콘텐츠로부터 디코딩될 수 있다.
일부 실시예에서, 다이 대 다이 상호연결부는 다음 단계가 커맨드 단계인지 또는 데이터 단계인지에 대한 단계 표시를 제1 다이로부터 제2 다이로 제공할 수 있다. 예를 들어, 단계 표시는 단일 커맨드 전송에 대해 하나보다 많은 데이터 전송을 제공하는 데 사용될 수 있다.
더욱이, 제2 다이 상의 버스 주소(bus address)는 이전 커맨드 단계 동안 제공된 명령어에 따라 각 데이터 단계에 대해 업데이트될 수 있다.
게다가, 제1 브리지는 제1 버스 상의 버스트 표시에 응답하여 다수의 데이터 단계를 수행할 수 있다.
일부 실시예에서, 제1 브리지는 제1 버스 상의 순차적인 액세스 주소의 검출에 응답하여 다수의 데이터 단계를 수행할 수 있다. 대안적으로 또는 추가적으로, 제1 브리지는 직접 메모리 액세스(DMA) 컨트롤러 표시에 응답하여 다수의 데이터 단계를 수행할 수 있다.
다이 대 다이 상호연결부는 제1 버스 또는 제2 버스와 관련되지 않은 트랜잭션을 구현할 수 있음에 유의한다.
더욱이, 관련되지 않은 커맨드는 커맨드 단계 동안 코딩에 의해 표시될 수 있다.
또 다른 실시예는 제1 다이를 제공한다.
또 다른 실시예는 제2 다이를 제공한다.
또 다른 실시예는, 제1 다이, 제2 다이 및 다이 대 다이 상호연결부를 포함하는 전자 디바이스를 제공한다.
또 다른 실시예는, 제1 브리지를 갖는 제1 다이 및 제2 브리지를 갖는 제2 다이 사이에서 통신하기 위한 방법을 제공한다. 이 방법은 제1 다이 및 제2 다이에 의해 수행되는 동작 중 적어도 일부를 포함한다.
이 요약은 본 명세서에 설명된 주제의 일부 양태에 대한 기본적인 이해를 제공하기 위해 일부 예시적인 실시예를 예시하는 목적을 위해 제공된다. 따라서, 위에서 설명된 피처는 예시이고, 본 명세서에 설명된 주제의 범위나 정신을 어떤 방식으로든 좁히는 것으로 해석되어서는 안 된다는 점이 이해될 것이다. 본 명세서에 설명된 주제의 다른 피처, 양태 및 이점은 다음의 상세한 설명, 도면 및 청구항으로부터 명백해질 것이다.
도 1은 단일 다이 시스템을 예시하는 블록 다이어그램이다.
도 2a는 단일 다이 시스템의 실시예의 선택된 세부사항을 예시하는 블록 다이어그램이다.
도 2b는 CPU 다이, ASIC 칩 및 선택된 내부 아키텍처를 포함하는 2-다이 시스템의 실시예의 선택된 세부사항을 예시하는 블록 다이어그램이다.
도 3은 2-다이 시스템의 실시예의 선택된 세부사항을 예시하는 블록 다이어그램이다.
도 4는 감소된 와이어 세트를 갖는 2-다이 시스템 사이의 인터페이스의 실시예의 선택된 세부사항을 예시하는 블록 다이어그램이다.
도 5는 버스 트랜잭션의 실시예의 선택된 세부사항을 예시하는 도면이다.
도 6은 버스 오류 전파 및 보안 버스 액세스의 실시예의 선택된 세부사항을 예시하는 도면이다.
도 7은 다양한 버스트를 처리하는 실시예의 선택된 세부사항을 예시하는 도면이다.
도 8은 ASIC 다이 상의 인터럽트 소스와 CPU 다이 상의 인터럽트 컨트롤러 사이의 인터럽트 브리징의 실시예의 선택된 세부사항을 예시하는 도면이다.
도 9는 ASIC-다이 DMA 활성화된 버스 슬레이브와 CPU-다이 DMA 컨트롤러 사이의 DMA 요청 동기화를 보여주는 시퀀스 다이어그램의 실시예의 선택된 세부사항을 예시하는 도면이다.
도 10a는 2-다이 시스템에 대한 구성 및 발견(discovery) 프로세스의 실시예를 예시하는 흐름 다이어그램이다.
도 10b는 고정된 ASIC-다이 능력을 갖는 2-다이 시스템에 대한 구성 및 발견 프로세스의 실시예를 예시하는 흐름 다이어그램이다.
유사한 참조 번호는 도면 전체에 걸쳐 대응하는 부분을 지칭한다는 점에 유의한다. 더욱이, 동일한 부분의 다수의 사례는 사례 번호로부터 대시에 의해 구분된 공통 접두사에 의해 지정된다.
개시된 통신 기법은, 예를 들어, 프로세스, 제조 물품, 장치, 시스템, 물질의 구성, 및 컴퓨터 판독 가능 저장 매체(예를 들어, 디스크와 같은 광학 및/또는 자기 대용량 저장 디바이스 내의 매체, 플래시 저장소와 같은 비휘발성 저장소를 갖는 집적 회로)와 같은 컴퓨터 판독 가능 매체, 또는 광학 또는 전자 통신 링크를 통해 프로그램 명령어가 전송되는 컴퓨터 네트워크로서, 다양한 방식으로 구현 가능하다. 이하에서 보다 상세하게 논의되는 바와 같이, 본 개시는 위에서 식별된 분야에서 보안, 비용, 수익성, 성능, 효율성 및/또는 사용의 유용성 중 하나 이상과 같은 인자로 개선을 가능하게 할 수 있는 개시된 통신 기법의 하나 이상의 실시예에 대한 설명을 제공한다. 상세한 설명은 상세한 설명의 나머지의 이해를 용이하게 하기 위한 도입부를 포함한다. 도입부는 본 명세선에 설명된 개념에 따른 시스템, 방법, 제조 물품, 컴퓨터 판독 가능 매체 중 하나 이상의 예시적인 실시예를 포함한다. 아래에서 보다 상세히 논의되는 바와 같이, 개시된 통신 기법은 등록된 청구항의 범위 내에서 가능한 많은 수정 및 변형을 포함한다.
개시된 통신 기법은 최종 사용자에게 투명적인 방식으로 멀티-다이 마이크로컨트롤러 구현을 허용하는 다이 대 다이 인터페이스/브리지를 제공한다. 두 다이 사이에 몇몇 표준 마이크로컨트롤러 인터페이스를 브리징함으로써, 주변 장치는 두 다이 중 어느 다이에 구현되는지에 대체로 애그노스틱하도록 구현될 수 있다. 실제로, 사용자는 단일 마이크로컨트롤러 유닛을 경험할 것이다. 브리징은 사소하지 않으며 기존 기술에서 누락된 요소에 대한 해결책을 제공할 수 있다.
기존 버스 확장은 단일 다이 마이크로컨트롤러에서 전형적인 피처와 거동을 지원하지 않는다. 하나의 다이를 다수의 다이로 분할할 때 원칙적으로 모든 와이어를 연결할 수 있다고 순진하게 생각할 수 있다. 전형적으로, 이것은 이론적으로만 작동하며, 모든 내부 인터페이스에 대해 물리적 라인 연결이 종종 요구된다.
“모든 와이어를 연결"하는 접근 방식은, 단순히 모두 동일한 다이에 연결하는 것이 더 쉬울 것이기 때문에 말이 되지 않는다. 우리가 찾고 있는 것은 복수의 원격 다이와 합리적으로 복잡한 상호 작용을 가능하게 하면서도 상호연결부 카운트를 최소화하는 것이다. 개시된 통신 기법은 전통적인 외부 버스 확장(예컨대, I2C, SPI, 병렬 메모리 버스 등)보다 우수할 수 있다. 특히, 통신 기법은 다음과 같은 이점을 제공할 수 있다:
단일 다이 집적에 대해서와 동일한 소프트웨어 프로그래밍 모델. 원격 다이 상의 버스 주변 장치는 CPU 버스 메모리 매핑된 액세스에 직접 응답한다.
더 적은 상호연결부 카운트에도 불구하고 원격 다이 상의 주변 장치에 대한 액세스에 대한 대기 시간(latency)이 더 낮다. 일부 실시예에서, 이것은 현실적인 구성으로 사실상 제로인 추가적인 대기 시간이 될 수 있다.
각 원격 주변 장치 액세스 동작에 대해 소프트웨어에 의해 실행되는 옵코드 수를 줄임으로써, 또한 옵코드 수는 단일 다이에 대해서와 동일하지만, 다른 외부 버스 확장과 같은 것이 사용되었을 때보다 적다.
원격 슬레이브가 데이터 전달(판독 또는 기록)을 위한 준비가 되지 않은 때의 투명적 슬레이브 스톨링(흐름 제어); 트랜잭션 오류 보고; 보안 피처, 예컨대, 액세스 권한/보안에 대한 지원; 다수 버스 마스터(예컨대, CPU 및 DMA) 간의 원격 슬레이브의 자동 중재; 및/또는 버스트 모드 전송을 포함하여, CPU 다이의 마스터와 원격 다이 상의 슬레이브를 위한 일반적인 표준화된 인터페이스를 사용하여 일반적인 버스 피처를 제공한다.
잠재적으로 많은 수의 주변 장치로부터 개별화된 인터럽트 요청 능력을 일반적인 방식, 예컨대, 엔드 포인트에 투명한 방식으로 제공한다. 일반적인 방식으로 주변 장치로부터 개별화된 DMA 요청 능력을 제공한다. 예를 들어, 버스 전송 데이터 스테이지에 동기화된 DMA 데이터 전송 동안 DMA 요청 디어서션(de-assertion).
투명적인 방식으로 전력 관리 피처를 위한 다이 간 동기화를 가능하게 한다.
디버그 포트 액세스와 같은 버스 액세스 권한 이외의 CPU 다이와 ASIC 다이 간의 투명적인 보안 기능 피처를 가능하게 한다.
CPU 다이에 독립적인 원격 다이 설계 및 제조 - 또한 CPU 다이 또는 소프트웨어 모델에 영향을 주지 않고 원격 다이 상에서 인터페이스/주변 장치를 최후의 순간에 추가하거나 재설계하는 것을 가능하게 한다.
(예컨대, 프로세스 기술이 호환되지 않음으로 인해) CPU 다이 상에 집적이 불가능하거나 비현실적인 컴포넌트가 이러한 컴포넌트를 구현하는 원격 다이와 쌍을 이룰 수 있는 멀티 다이 제품을 가능하게 하고, 동시에 두 다이 상의 컴포넌트 인터페이스 사양 및 프로그래머 모델에 투명적일 수 있다.
부팅 시간 발견/주변 다이의 매핑을 가능하게 한다.
런타임 조정 가능한 상호연결부 카운트는, 원격 다이 상의 소프트웨어 모델 또는 주변 컴포넌트 설계를 변경하지 않고, 단일 CPU 다이를 상이한 상호연결부 카운트를 갖는 다수의 상이한 ASIC 다이와 쌍을 이루는 것을 가능하게 할 수 있다.
개시된 통신 기법의 하나 이상의 실시예에 대한 상세한 설명이, 개시된 통신 기법의 선택된 세부 사항을 예시하는 첨부된 도면과 함께 아래에 제공된다. 개시된 통신 기법은 실시예와 관련하여 설명된다. 본 명세서의 실시예는 단지 예시적인 것으로 이해된다. 개시된 통신 기법은 본 명세서의 실시예 중 임의의 것 또는 전부에 의해 또는 이것으로 특별히 제한되지 않으며, 개시된 통신 기법은 수많은 조합, 대안, 수정 및 균등물을 포한한다. 설명의 단조로움을 피하기 위해, 다양한 단어 라벨(예: 최초의, 마지막의, 특정한(certain), 다양한, 추가의, 다른, 특정한(particular), 선택, 일부 및 주목할 만한)이 별도의 실시예 세트에 적용될 수 있으며, 본 명세서에서 사용된 바와 같이 이러한 라벨은 품질 또는 임의의 형태의 선호 또는 편견을 특별히 전달하려는 것이 아니라, 단지 개별 세트 간에 편리하게 구별하기 위한 것이다. 개시된 프로세스의 일부 동작의 순서는 개시된 통신 기법의 범위 내에서 변경 가능하다. 다수의 실시예가 프로세스, 시스템 및/또는 프로그램 명령어 피처의 변형을 설명하는 역할을 할 때마다, 미리 결정되거나 동적으로 결정된 기준에 따라 복수의 다수 실시예에 각각 대응하는 복수의 동작 모드 중 하나의 정적 및/또는 동적 선택을 수행하는 다른 실시예가 고려된다. 개시된 통신 기법에 대한 완전한 이해를 제공하기 위해, 수많은 구체적인 세부 사항이 이하의 설명에 제시된다. 세부 사항은 예시의 목적으로 제공되며, 발명은 세부 사항의 일부 또는 전부 없이 청구항에 따라 실시될 수 있다. 명확화의 목적을 위해, 개시된 통신 기법이 불필요하게 모호해지지 않도록 개시된 통신 기법과 관련된 기술 분야에서 알려진 기술 자료는 상세히 설명되지 않았다.
마이크로컨트롤러는 매우 다양한 시스템 및 디바이스에 사용된다. 디바이스는 종종 디바이스 내에서 함께 작동하여 그들 각자의 작업을 처리하는 다수의 마이크로컨트롤러를 활용한다.
마이크로컨트롤러는 디바이스 또는 더 큰 시스템에서 단일 기능 또는 제한된 수의 기능을 제어하는 데 사용되는 임베딩된 그리고 실시간 디바이스이다. 그것의 중앙 프로세서(central processor; CPU) 및 메모리를 사용하여 그 주변 장치로부터 수신한 데이터를 해석함으로써 이를 수행한다. 주변 장치는 집적될 수 있으며(예컨대, 마이크로 컨트롤러에 집적된 온도 센서 또는 무선 통신 인터페이스), 아날로그 I/O 인터페이스(예컨대, 아날로그-디지털 컨버터 또는 LCD 드라이버) 또는 디지털 인터페이스(예컨대, 범용 개별 입력/출력 신호 드라이버 또는 SPI 통신 인터페이스)일 수 있다. 마이크로컨트롤러가 수신하는 임시 정보는 그것의 데이터 메모리에 저장되며, 여기서 프로세서는 그것에 액세스하고 그것의 프로그램 메모리에 저장된 명령어를 사용하여 들어오는 데이터를 판독하고 적용한다. 그 다음 I/O 주변 장치를 사용하여 적절한 액션을 통신 및/또는 실행한다.
예를 들어, 자동차는 안티록(anti-lock) 브레이킹 시스템, 트랙션(traction) 제어, 연료 분사 또는 서스펜션 제어와 같은 다양한 개별 시스템을 제어하는 많은 마이크로컨트롤러를 가질 수 있다. 이러한 마이크로컨트롤러는 아날로그 또는 디지털 컴포넌트를 감지하고 제어하는 것과 같은 이러한 시스템을 구현하는 하드웨어와의 상호 작용에 책임이 있을 수 있다. 게다가, 이러한 마이크로컨트롤러는 종종 통신 인터페이스를 사용하여 서로 통신하여 그들의 액션을 조정한다. 일부는 자동차 내의 더 복잡한 중앙 컴퓨터와 통신할 수도 있고, 다른 것들은 다른 마이크로컨트롤러와만 통신할 수도 있다.
도 1은 소스(115)를 갖는 클록 곱셈기 및 다중화기(mux)(110), 복수의 CPU 및 선택적 DMA 컨트롤러(120), AHB 버스(125)와 인터페이싱하는 기본 ASIC 기능(145), 인터럽트 관리를 위한 복수의 인터럽트 요청 신호(Interrupt Request signals; IRQs)(160), 자동화된 DMA 서비스를 위한 복수의 DMA 요청 신호(DMA Request signals; DRQs)(130), 전력 관리 유닛(Power Management Unit; PMU) 인터페이스(135), 및 디버그 액세스 포트 인터페이스(140)를 통해 CPU 중 하나 이상 또는 다른 내부 컴포넌트와 상호 작용하는 디버그 액세스 포트(Debug Access Port; DAP)(150)를 포함하는, 단일 다이 마이크로컨트롤러(100) 아키텍처를 높은 레벨에서 예시하고 있다. (어드밴스드 고성능 버스 또는 AHB는, 시스템 온 칩(SoC) 설계에서 기능 블록의 연결 및 관리를 위한 개방형 표준 온칩 상호연결부 사양인 ARM 어드밴스드 마이크로컨트롤러 버스 아키텍처(Advanced Microcontroller Bus Architecture; AMBA)에 정의된 버스 아키텍처라는 점에 유의한다. AMBA의 다른 버스 포맷은 APB 및 AXI를 포함한다.) 도 1은 단일 다이 설계로부터 개시된 통신 기법의 멀티-다이 설계로 이동하면서 더 상세히 논의할 기능 및 내부 인터페이스 중 일부를 묘사하고 있다. 이 개시 전반에 걸쳐, 우리는 일 실시예에서와 같이 AHB 125를 사용할 수 있다. 개시된 통신 기법은 AHB 버스 설계의 특정 특성으로 제한되지 않으며, 이 알려진 기술을 구현 예시로서 사용한다. 추가적으로, AHB 인터페이스(125)는 하나 이상의 APB 버스와 같은 ASIC 기능(145) 내부의 추가 버스 티어를 포함할 수 있으므로, ASIC 기능(145) 내부의 버스 슬레이브는 AHB 인터페이스(125)를 통해 부착될 수 있지만 직접 부착되지는 않을 수 있다.
마이크로컨트롤러는 전형적으로 저비용을 위해 계산력(computation power)을 교환하도록 프로비저닝된다. 감지/반응 시퀀스의 실시간 측면으로 인해, 마이크로컨트롤러의 계산 성능은 전형적으로 감지/반응 시퀀스를 제한하여 시스템의 결합된 대기 시간을 제한하는 데 최적화된다. 이 전체 시퀀스를 실행하는 데 걸리는 시간은 종종 밀리초의 일부로 측정될 수 있다. 이는 훨씬 더 높고 더 가변적인 대기 시간을 수용할 수 있지만 잠재적으로 더 많은 수의 관련 없는 작업을 처리할 수 있고 훨씬 더 큰 시간 규모에 대한 평균화된 성능에 최적화된 계산 프로세서와는 다르다. 결과적으로, CPU와 그것의 주변 리소스를 연결하는 아키텍처가 더욱 긴밀하게 결합된다. 전형적으로, 마이크로컨트롤러 CPU는 주변 장치 및 메인 메모리의 동일한 주파수(또는 일부 작은 배수)에서 실행되며, CPU가, 단어(그 특정한 시스템의 네이티브 단어 비트 사이즈) 레벨에서 또는 CPU 자체 메인 버스(또는 일부 상이한 포맷 버스로 브리징된) 상에서 이러한 컴포넌트와 상호 작용할 것으로 예상된다. 타겟이 액세스 지연을 부과하는 각 단어 액세스는 그 지연 동안 프로세서 실행이 스톨(stall)되는 것을 초래한다. 계산 프로세서는, 전형적으로 로컬 캐시 메모리와 상호작용하는 대신, 캐시가 원하는 데이터를 포함하지 않을 때에 유용한 작업을 계속할 수 있는 다양한 완화 전략을 갖는다. 이러한 프로세서에서, 프로세서는 주로 캐시를 통해 캐시가 아닌 컴포넌트에 연결된다. 또한 이 경우, 느린 주변 장치 액세스는 전형적으로 누락된 데이터가 전송 동안 블록 트랜잭션 또는 초기 CPU 실행 스톨로 채워진 캐시 페이지로 변환될 것이다. 전형적으로, 데이터를 기다리는 동안 스톨된 스레드는 전체 워크로드의 일부일 뿐이며, 데이터 블록이 전송되는 동안 그 스레드가 다른 스레드에 그것의 실행을 종종 양보할 수 있기 때문에 CPU는 그것의 다양한 스레드에 걸쳐 측정된 일부 스톨링을 가질 것이다. 그 후, 계산 프로세서는 액세스 대기 시간으로 인한 인터럽트 없이 전체 데이터 블록에서 효율적으로 작동할 수 있다. 마이크로컨트롤러는 주변 장치 메모리에 더 자주, 그리고 전형적으로 단어 단위로 액세스하고 있으므로, 느린 주변 장치는 각 단어 액세스 시 CPU를 다시 스톨할 것이다. 성능상의 이유로, 마이크로컨트롤러는 전형적으로 주변 장치를 직접 부착하거나 CPU의 자체 버스 구조에 직접 브리징된다.
CPU 버스의 개념적 목적은 메모리(또는 메모리 매핑된) 데이터 전송을 처리하는 것이다. 그러나 일반적으로 다른 기능들이 요구되고, 따라서 동일한 버스를 통해 수행된다. 이러한 작업은, 버스 슬레이브로부터의 데이터 스톨; 트랜잭션의 결과(예컨대, 승인(ok) 또는 불법 액세스)를 나타내는 슬레이브로부터의 응답; 및/또는 액세스 목적이 코드인지 또는 데이터인지, 액세스가 커널로부터인지 또는 사용자 액세스 권한으로부터인지, 트랜잭션이 보안 데이터를 위한 것인지 여부, 및/또는 기록 액세스가 버퍼링될 수 있는지(슬레이브가 느린 경우 다음 트랜잭션으로 이동하기 전에 슬레이브 응답을 기다릴 필요가 없음)와 같은 전송 목적/권한의 버스 마스터 표시로 구성된다.
인터럽트는 전형적으로 마이크로컨트롤러에 의해 사용되어, 주변 장치가 시간 크리티컬 이벤트의 발생을 나타내는 것을 허용한다. 주변 장치는 인터럽트 요청(interrupt request; IRQ) 신호를 구동하여 CPU 액션을 필요로 할 수 있는 상태를 나타낼 수 있다. 마이크로컨트롤러 CPU는 전형적으로 인터럽트 컨트롤러, 예컨대, 다양한 IRQ 라인 상에서 이벤트가 발생함에 따라 이벤트를 인터럽트 보류(pending) 레지스터에 등록하는, 네스트된 벡터 인터럽트 컨트롤러(nested vector interrupt controller; NVIC)와 쌍을 이루게 된다. (네스트된 벡터 인터럽트 컨트롤(nested vector interrupt control; NVIC)은 인터럽트의 우선 순위를 매기고 CPU의 성능을 개선하고 인터럽트 대기 시간을 줄이는 방법이다. NVIC는 또한, 다른 인터럽트가 실행 중이거나 CPU가 그것의 이전 상태를 복원하고 그것의 일시 중단(suspend)된 프로세스를 재개하는 프로세스에 있을 때 발생하는 인터럽트를 처리하기 위한 구현 스킴을 제공한다). 그 IRQ 라인에 대한 보류 중인 레지스터가 설정되어 있는 동안, 그 IRQ 라인 상의 후속 변경은 무시된다. 게다가, 그 IRQ 라인과 연관된 코드의 블록(인터럽트 처리기)의 실행을 자동으로 시작하도록 하는 것과 같은, IRQ 활동에 대한 하드웨어 응답을 제공하도록 정책이 시행될 수 있다. 인터럽트 처리기를 자동으로 실행하도록 프로그래밍된 경우, 처리기에 의한 실행은 전형적으로 연관된 인터럽트 이벤트 레지스터를 자동으로 지운다(clear). CPU가 자동 처리기를 활성화(enable)하지 않기로 선택한 경우, CPU는 보류 중인 레지스터 자체를 검사하고 이를 지워 IRQ 캡처를 재정비(re-arm)할 수 있다. 마이크로컨트롤러 주변 장치는 전형적으로 인터럽트 컨트롤러에 대한 개별화된 신호로 그들의 IRQ 표시를 구현하며, 인터럽트 컨트롤러는 이러한 신호를 수신하는 다수의 입력을 갖는다. 일부 경우에, 마이크로컨트롤러 주변 장치는 상이한 IRQ 신호 상의 상이한 이벤트를 나타내는 것과 같은, 다수의 IRQ 신호를 제공하는 것을 예상할 수 있다.
IRQ 신호는 전형적으로 레벨 기반 또는 에지 기반으로 언급된다. 레벨 기반 인터럽트는 전형적으로 주변 장치가 하나 이상의 처리되지 않은 이벤트를 갖는 것으로 의도된 해석이 있는 상황에 대해 사용된다. 이것은, 주변 장치가 신호를 보낼 다수의 상이한 종류의 이벤트를 가질 수 있고 다수의 이러한 이벤트가 동시에 발생할 수 있는 때에 특히 적절하다. 주변 장치는 버스를 통해 마이크로컨트롤러에 액세스할 수 있는 레지스터 (인터럽트 플래그) 내의 처리되지 않은 이벤트를 전형적으로 마크할 것이다. 이 레지스터 내에 임의의 이벤트가 마크되어 있는 한, 주변 장치는 IRQ 라인을 어서트(assert)할 것이다. 그 다음, CPU는 그 이벤트가 처리되면(예를 들어, 응답 액션을 수행하거나 메모리 상태를 변경하여 일부 추후 액션을 마크하는 것) 버스 액세스에 의해 이 레지스터에서 하나 이상의 이벤트를 지울 수 있다. 인터럽트 처리기가 종료되고 플래그 레지스터에 처리되지 않은 이벤트가 있는 경우, IRQ 라인은 여전히 어서트될 것이고 추가 프로세싱을 위해 보류 중인 레지스터가 다시 설정될 것이다.
에지 기반 인터럽트는 전형적으로 데이터 0 다음에 데이터 1(상승 에지)이 뒤따르는 것과 같은 IRQ 신호 상의 데이터 변경과 같은 이벤트로서, 주변 장치로부터 인터럽트 컨트롤러로 통신된다. 이 경우, 인터럽트 컨트롤러는 이 시퀀스에 응답하여 보류 중인 레지스터만 설정하도록 구성될 수 있으며, 주변 장치는 이 시퀀스가 주변 장치 이벤트당 한 번만 전달되는 것을 보장할 수 있다. 에지 기반 인터럽트는 주변 장치로부터의 메시지가 단일 이벤트로 해석되어야 할 때(예를 들어, 이벤트 수가 정확하게 계산될 필요가 있거나, 약간의 지연 후 인터럽트 컨트롤러에 전달되는 IRQ 라인의 비활성화로 인해 인터럽트 처리기의 우연한 재진입(re-entry)에 의해 거동이 손상(compromise)될 수 있는 경우)에 더 일반적으로 사용된다.
마이크로컨트롤러는 데이터 전송 자동화를 지원하기 위해 직접 메모리 액세스 컨트롤러로 구현될 수 있다. 마이크로컨트롤러는 전형적으로 당사자(1st party)가 아닌 제3자(3rd party) DMA를 구현하여, 이에 의해 메인 메모리와 같은 또 다른 위치로/위치로부터 이동될 데이터를 갖는 주변 장치는, 동작이 요구된다는 것을 DMA 컨트롤러에 경고할 수 있으며, 이에 의해 이 컨트롤러는 버스 슬레이브로서 주변 장치로 버스 마스터로서 요구되는 동작을 구현할 수 있다. 제3자 DMA는 더 낮은 구현 비용뿐만 아니라 더 낮은 성능을 갖는다. DMA 트랜잭션은 CPU에서 개시되거나 주변 장치에서 개시될 수 있다. 주변 장치가, 원하는 주변 장치 시작 트랜잭션이 있음을 DMA 컨트롤러에 경고하기 위해, 컨트롤러에 대해 주변 장치에 의해 구동되는 DMA(DRQ) 요청 신호를 사용하는 것이 전형적이다. 그 다음, 컨트롤러는 CPU가 그 요청에 할당된 정책에 따라 그 요청에 응답할 수 있다. 그 정책에 대한 트랜잭션에 이미 관여하지 않은 경우, 컨트롤러는 DRQ 라인 상의 활성 레벨을 전송이 발생하기를 원하는 것으로 해석한다. 특정 예외적인 경우(CPU가 보류 중인 전송을 취소하기 위해 개입하는 것과 같은) 외에, 응답 전송이 발생할 때까지 주변 장치가 요청을 계속할 것으로 예상된다. 이는 데이터 버퍼를 원하는 충족 레벨로 배치시키기 위해 충분한 전송을 하기 위한 것일 수 있거나, 데이터 버퍼가 폐기될 수 있다는 표시를 제공하기 위한 것일 수 있거나, 요청하는 주변 장치의 동작에 특유한 다른 조건일 수 있다. 마이크로컨트롤러 주변 장치는 전형적으로 DMA 컨트롤러에 대한 개별화된 신호로 그들의 DRQ 표시를 나타내며, DMA 컨트롤러는 이러한 신호를 수신하는 다수의 입력을 갖는다. 일부 경우에, 마이크로컨트롤러 주변 장치는, 상이한 DRQ 신호 상의 상이한 유형의 요구되는 전송을 나타내는 것과 같은, 다수의 DRQ 신호를 제공하는 것을 예상할 수 있다.
DMA 트랜잭션은 고정 길이 또는 가변 길이일 수 있으며, DMA 컨트롤러는 하나 이상의 AHB 버스 액세스 또는 버스트 액세스와 같은 적합한 버스 트랜잭션을 사용하여 구현할 수 있다. 예를 들어, 주어진 주변 장치가 각 요청에 대해 항상 32 바이트의 데이터를 고정 길이로 전송할 것임이 가능하다. 다른 경우에, 각 전송 길이가 상황적으로 의존적일 수 있고, 이에 의해 주변 장치(이지만 컨트롤러는 아님)는 전송할 원하는 데이터를 안다. 제3자 마스터가 이러한 상황을 처리하도록 허용하기 위한 전형적인 전략은, 트랜잭션에 여전히 더 많은 데이터가 있는 동안 구현된 주변 장치 로직이 DRQ 라인을 활성 레벨로 유지하도록 하는 것이다. 그 다음, 컨트롤러는 전송의 각 단어 후에 DRQ 라인을 검사하고, 데이터가 전달되는 동시에 주변 장치가 DRQ를 디어서트하는 제1 버스 사이클에서 전송을 중단할 수 있다. 이러한 이유로, 버스 데이터와 정확히 동일한 사이클에서 DRQ의 디어서션이 DMA 컨트롤러에 전달되는 것이 유용하다. 그렇지 않으면, DMA 컨트롤러가 부정확한 수의 단어를 전송할 수 있다. 고정 길이 DMA 트랜잭션에 대해 유사한 고려 사항이 사용될 수 있다. 주변 장치가 고정 길이 DMA 트랜잭션의 종료에 가깝게 그것의 DMA 요청을 디어서트하는 경우, DMA 컨트롤러에 의한 버스 트랜잭션 완료와 DRQ의 디어서션 도착 사이의 차등 지연은, DMA 컨트롤러로 하여금 이전 DMA 트랜잭션이 완료된 후에도 DRQ 신호가 여전히 어서트된 것으로 잘못 인식하여, 후속 트랜잭션을 부정확하게 개시하게 할 수 있다.
도 2a는 시스템의 복잡성 중 일부를 매핑하는 데 도움이 되는 추가적인 세부 사항을 갖는 기존의 단일 다이 아키텍처의 컴포넌트 레벨 묘사이다. 도 2a에서, 마이크로컨트롤러 다이(200)는, 복수의 데이터 버스(들)(125), IRQ 신호(160), DRQ 신호(130), PMU 인터페이스(135) 표시 및 이벤트 및 상태를 나타내는 다른 신호를 포함하는 가능한 데이터 및 이벤트 버스 라인을 나타내는 주변 장치 컴포넌트에 대한 다수의 상호연결부(220)를 구현한다. 이 버스 및 라인은 다음과 같은 마이크로컨트롤러의 다른 서브시스템과 인터페이싱하는 데 사용된다: 상호연결부(220) 인터페이스(229)를 갖는 커스텀 DSP 로직(211), 상호연결부(220) 인터페이스(230)를 갖는 DMA 컨트롤러(212), 상호연결부(220) 인터페이스(231)를 갖는 RAM(216), 상호연결부(220) 인터페이스(236)를 갖는 CPU(217) 및 플래시 메모리(213), 상호연결부(220) 인터페이스(237)를 갖는 LV 통신(221)과 같은 다른 ASIC 로직, 상호연결부(220) 인터페이스(238)을 갖는 LV 센서(222), 상호연결부(220) 인터페이스(239)를 갖는 LV 액추에이터(223), 상호연결부(220) 인터페이스(240)를 갖는 CAN/LIN(224)와 같은 통신 인터페이스, 상호연결부(220) 인터페이스(241)를 갖는 HV 센서(225), 및 상호연결부(220) 인터페이스(242)를 갖는 HV 액추에이터(226). 이들은 실시예의 예시일 뿐이며 다른 요소를 포함할 수 있다는 점에 유의한다. 이에 더해, 전력 관리 유닛 - PMU(205), CPU 인터페이스(234)를 갖는 디버거(218), 인터페이스(235)를 통해 클록 입력을 제공하기 위한 오실레이터(219), 및 인터페이스(227)를 통해 커스텀 DSP 로직(211)과 인터페이싱하는 복합 통신/센서/액추에이터(210) - 을 추가했다.
상호연결부(220)는 다양한 컴포넌트들 간의 통신을 제공한다. 이러한 통신은 전형적으로 데이터 버스 트랜잭션(예컨대, AHB), IRQ 시그널링, DRQ 시그널링, 및 PMU 제어 및 표시를 포함한다. 이러한 상호연결부는 전형적으로 CPU 상호연결부 인터페이스와 같은 표준화된 인터페이스를 사용하여 다양한 컴포넌트에 의해 액세스된다.
상호연결부(220)가 이러한 인터페이스의 낮은 레벨의 필요성을 지원하기 위한 일부 임베딩된 로직을 포함하는 것은 드문 일이 아니라는 점에 유의한다. 예를 들어, 데이터 트랜잭션 상호연결부(125)는 자주 버스 마스터에 의해 제시된 주소에 대한 정확한 버스 슬레이브를 위한 데이터 버스 트랜잭션의 라우팅을 지원하기 위한 블록 주소 디코드 및 데이터 다중화 기능을 포함할 수 있다. 다른 프로토콜에서, 주소 디코드 기능은 각 버스 슬레이브에 의해 독립적으로 계산될 수 있고, 상호연결부(220)에 포함된 로직은 데이터 라우팅을 지원하기 위해 다양한 버스 슬레이브로부터의 주소 일치 표시를 활용한다. 다수의 데이터 버스 마스터가 동시에 버스 트랜잭션에 관여할 수 있는 능력을 제공하기 위해, 다수의 레인 버스 패브릭(예컨대, 다중층 AHB)은 종종 상호연결부(220)에 임베딩된 경합 해결 로직 및 라우팅으로 구현된다. 게다가, 클록 도메인 교차 또는 클록 속도 차이가 있는 경우에, 리타이밍 또는 동기화 로직을 상호연결부(220)로 배치하는 것 또한 일반적이다.
상호연결부(220)의 사용의 예시는, CPU(217)와 LV 센서(222) 사이의 AHB 데이터 버스(125) 트랜잭션이다. 이러한 트랜잭션은, 인터페이스(236)에서 AHB 마스터 신호 상의 AHB 트랜잭션에 대한 AHB 주소 단계를 발행하는 CPU(217)에 의해 개시될 수 있다. 상호연결부(220)에 존재하는 블록 주소 디코드 로직은 이 트랜잭션에 대한 주소 단계에 표시된 주소가 LV 센서(222)에 할당된 주소 블록에 있음을 디코딩한다. 그 다음, 상호연결부(220)는 인터페이스(238)의 AHB 슬레이브 신호에 이 AHB 주소 단계를 제시한다. 후속 AHB 데이터 단계는 인터페이스(236 및 238)와 상호연결부(220)를 통해 CPU(217)와 LV 센서(222) 간에 요청된 트랜잭션을 수행한다. 데이터 단계는 즉시 전송된 데이터, 스톨 후 전송된 데이터, 또는 트랜잭션 오류를 나타내는 버스 슬레이브에 의해 전송된 데이터가 없는 결과를 초래할 수 있다. 트랜잭션 오류는 부정확한 주소 또는 데이터 크기와 같은 잘못된 트랜잭션에 응답하여, 적절한 허가(authorization)가 없는 트랜잭션과 같은 허용되지 않은 트랜잭션에 대해, 또는 다른 이유로 인해 표시될 수 있다. 다른 데이터 버스 포맷은 다른 트랜잭션 결과를 가질 수 있다. 다른 버스 마스터는, 인터페이스(230)에서의 AHB 마스터 신호를 사용하는 DMA 컨트롤러(212)와 같은, 상호연결부(220)에 대한 그들의 인터페이스의 AHB 마스터 신호를 사용하여 트랜잭션을 개시하기 위해, 유사하게 상호연결부(220)를 활용할 수 있다. 다른 버스 슬레이브 또한, 인터페이스(229)에서 AHB 슬레이브 신호를 사용하는 커스텀 DSP 로직(211) 또는 인터페이스(231)에서 AHB 슬레이브 신호를 사용하는 RAM(216)과 같이, 그들의 인터페이스에서의 AHB 슬레이브 신호를 사용하는 상호연결부(220)를 통해 트랜잭션될 수 있다.
상호연결부들(220)의 또 다른 사용 예시는, HV 액추에이터(226)가 인터럽트 요청을 발행하여 CPU(217)에 위치되는 인터럽트 컨트롤러를 초래하는 것이다. HV 액추에이터(226)는 그것의 인터페이스(242)에서 하나 이상의 인터럽트 요청 소스 신호 상의 인터럽트 요청을 나타낼 수 있다. 이 신호는 상호연결부(220)를 통해 인터페이스(236)에서의 인터럽트 요청 수신 신호에 제공될 수 있다. 이를 달성하기 위한 하나의 방식은, 인터페이스(236)에 다수의 넘버링된 인터럽트 요청 수신 신호를 제공하고 인터페이스(242)에서의 인터럽트 요청 소스 신호를 이러한 넘버링된 수신 신호 중 하나에 라우팅하는 것이다. 다른 인터페이스 상의 상호연결부(220)를 통해 연결된 다른 인터럽트 소스 신호는, 그 다음, 인터페이스(236)에서의 상이하게 넘버링된 인터럽트 요청 수신 신호로 라우팅될 수 있다. 다른 인터럽트 요청 소스는 인터페이스(229)에서의 신호를 사용하는 커스텀 DSP 로직(211)과 같은, 그들의 인터페이스에서의 인터럽트 요청 소스 신호 상의 표시에 의해 상호연결부(220)를 통한 인터럽트 요청을 나타낼 수 있다. 다른 인터럽트 컨트롤러는 인터페이스(230)에서의 신호를 사용하는 DMA 컨트롤러(212)와 같은, 그들의 인터페이스에서의 그들의 인터럽트 요청 수신 신호를 통한 상호연결부(220)를 통해 인터럽트 요청을 수신할 수 있다.
상호연결부(220)의 또 다른 사용 예시는, DMA 컨트롤러(212)를 통해 LV 통신(221)과 RAM(216) 사이에서 데이터를 전송하는 DMA 트랜잭션이다. LV 통신(221)은 인터페이스(237)에서의 하나 이상의 DMA 요청 소스 신호를 사용하여 이 트랜잭션을 수행해야 할 필요성을 나타낼 수 있다. 상호연결부(220)는 이 신호를 인터페이스(230)에서의 DMA 요청 수신 신호로 라우팅할 수 있으며, 이는 DMA 컨트롤러(212)에 전송이 필요하다는 것을 나타낸다. 이를 달성하기 위한 하나의 방식은, 인터페이스(230)에 다수의 넘버링된 DMA 요청 수신 신호를 제공하고 인터페이스(237)에서의 DMA 요청 소스 신호를 이러한 넘버링된 수신 신호 중 하나에 라우팅하는 것이다. 다른 인터페이스 상의 상호연결부(220)를 통해 연결된 다른 DMA 요청 소스 신호는, 그 다음, 인터페이스(230)를 통해 신호로 수신되는 상이하게 넘버링된 DMA 요청으로 라우팅될 수 있다. DMA 요청을 수신하면, DMA 컨트롤러(212)는, 그 다음, 인터페이스(230)에서의 AHB 마스터 신호, 상호연결부(220)를 통한 인터페이스(237 및 231)에서의 AHB 슬레이브 신호를 통한 LV 통신(221) 및 RAM(216)과의 AHB 트랜잭션과 같은, 응답 액션을 취할 수 있다.
일부 구현에서, CPU(217)는 컴포넌트와 직접 통신하기 위한 추가적인 연결을 가질 수 있다. CPU(217)는 전용 인터페이스(232)를 통해 직접적으로 플래시 메모리(213)에 액세스할 수 있고, 전용 인터페이스(233)를 통해 RAM(216)에 액세스할 수 있다. 이는 더 낮은 대기 시간, 더 빠른 전송 속도, 및 전용 인터페이스 상에서 그리고 인터페이스(236)를 사용하는 상호연결부(220)를 통해 동시에 전송할 수 있는 능력과 같은 이점을 허용할 수 있다.
많은 마이크로컨트롤러 시스템은, 활동이 요구되지 않을 때 전력을 절약하기 위한 전력 시퀀싱 및 하나 이상의 슬립 모드(sleep mode)와 같은 전력 관리 기능을 포함한다. 마이크로컨트롤러의 CPU는 이 슬립 모드로 들어가기 위한 커맨드를 실행할 수 있으며, 이는 클록킹 비활성화, 로직 블록에 대한 전력 비활성화, 메모리에 대한 전력 비활성화, 아날로그 컴포넌트에 대한 전력 비활성화, 포트에 제공되는 전원 공급 장치에 대한 전력 비활성화와 같은 다양한 절력 절감 동작을 초래할 수 있다. CPU는 이 슬립 모드를 스스로 준비하는 데 요구되는 어떠한 액션이든 취할 수 있고(도 1 참조), 그 다음, PMU 인터페이스(135) 상에서 PMU(205)에 슬립이 실행되어야 함을 나타낼 수 있다. PMU(205)는 이 슬립을 수행하는 데 필요한 단계를 취하는 로직을 구현할 수 있다. 많은 경우에, PMU(205)와 CPU(217)는, 종종 시퀀스에서 동작의 완료를 나타내기 위해 교환된 확인 응답(acknowledgement)으로, 전력 모드 변경을 수행하기 위한 동작 시퀀스를 수행할 수 있다. CPU(217)는 전형적으로 전용 인터페이스(256)(이는 PMU 인터페이스(135)의 일부일 수 있음)를 가져, PMU(205)와의 이러한 상호작용을 가능하게 한다. 또한, PMU(205)가, 파라미터 구성을 위한 데이터 버스 신호, 소프트웨어 통지를 위한 인터럽트 요청 등과 같은, 상호연결부(220)에 대한 보다 일반적인 인터페이스(283)(이는 PMU 인터페이스(135)의 적어도 일부를 구현할 수 있음)를 갖는 것이 일반적이다.
슬립을 실행하기 전에, 소프트웨어는 슬립 동안 어떤 리소스가 비활성화되는지, 그리고 어떤 조건이 프로세서를 슬립 상태에서 깨울 것인지와 같은 정책을 설정할 수 있다. 웨이크업(wake up) 이벤트를 검출하기 위한 하나의 일반적인 기법은, 일단 검출되면 이 웨이크업을 개시하기 위해 선택된 인터럽트 중 하나 이상을 갖는 것이다. 인터럽트 컨트롤러 자체는 전형적으로 슬리핑 회로부의 일부일 수 있으므로, 인터럽트 컨트롤러의 내부 상태 중 일부가 도메인 외부의 로직으로 전송되어 웨이크업 인터럽트 컨트롤러(wakeup interrupt controller; WIC)로 슬립되도록 할 수 있다. WIC는 PMU(205)의 로직의 일부이다. 이 WIC는, 그 다음, 슬립 동안 활성 상태로 남아있어, 웨이크업을 개시하기 위한 적절한 인터럽트 활동을 검출할 수 있다. WIC는, 그 다음, 슬립 비활성화된 리소스를 다시 활성화하는 데 필요한 모든 단계를 수행하도록 PMU(205)에 지시할 수 있다. 이것이 완료되면, CPU는 활동 재개를 위한 표시를 제공 받을 수 있다. 이러한 활동 재개의 일부는 WIC 상태의 관련 부분을 NVIC로 다시 전송하는 것일 수 있다. 이는 인터럽트 컨트롤러에서 그러한 인터럽트를 보류 상태에 놓는 것과 같이, 다양한 가능한 이벤트 중 어떤 이벤트가 웨이크업을 야기했는지에 대한 표시를 CPU에 제공할 수 있다.
소프트웨어 개발 및 고장(failure) 분석을 용이하게 하기 위해, 마이크로컨트롤러 다이(200)는 디버거 로직(218)으로 구현된 디버그 포트로 구현될 수 있다. 이것은, 코드 실행을 제어하고, 레지스터 콘텐츠를 검사하고, 데이터 버스 상의 트랜잭션을 마스터하고, PMU 상태를 제어하는 등에 의해, 마이크로컨트롤러 다이(200)의 상태를 그 다음에 제어 및/또는 검사할 수 있는 통신 인터페이스가 부착되는 것을 허용할 수 있다. CPU(217)는 이러한 디버그 동작을 가능하게 하는 전용 인터페이스(234)를 구현할 수 있다.
도 2b는, 소프트웨어 모델에 대해 요구되는 변경 없이 전체 기능을 유지하면서 단일 다이 마이크로컨트롤러(200)를 2-다이 시스템으로 분할하는 실시예를 묘사한다. '전체 기능을 유지하면서 소프트웨어 모델에 대해 요구되는 변경 없이'라는 원칙은 개시된 통신 기법에 의해 가능하게 된다. 기존 접근 방식에서는 이러한 기준 충족 실패가 발생한다. 단일 다이 마이크로컨트롤러(200) 상에서 구현될 수 있는 컴포넌트는, 대신 CPU 다이(246)와 ASIC 다이(271)를 갖는 멀티 다이 시스템에서 구현된다. CPU 다이(246)는 CPU(217), RAM(216), 플래시 메모리(213) 및 DMA 컨트롤러(212)를 구현한다. ASIC 다이(271)는 오실레이터(265), 저전압 통신 주변 장치(221), 저전압 센서 주변 장치(222), 저전압 액추에이터 주변 장치(223), CAN/LIN 통신 주변 장치(224), 고전압 센서(225), 고전압 액추에이터(226), 커스텀 DSP 로직(211) 이와 연관된 아날로그 블록(210)을 구현한다. PMU(205)는 CPU 다이(246) 상에 구현된 PMU 컨트롤러(244), 및 ASIC 다이(271) 상에 구현된 PMU(268)로 나뉜다. CPU 다이(246)는 상호연결부(248)를 포함하며, 이는 그 다이 상의 다양한 컴포넌트들 간의 연결을 제공한다. ASIC 다이(271)는 상호연결부(272)를 포함하며, 이는 그 다이 상의 다양한 컴포넌트들 간의 연결을 제공한다.
이 예시에서 각 컴포넌트에 대한 다이 위치의 이러한 선택은 몇몇 이점을 제공한다. CPU(217), 플래시(213), RAM(216) 및 DMA 컨트롤러(212)는, HV 센서(225), HV 액추에이터(226), CAN/LIN(224), PMU(268) 및 복합 통신/센서/액추에이터(210)와 같은 다른 컴포넌트 중 일부와 동일한 반도체 프로세스에서 구현하기 어렵거나 비용이 많이 들 수 있다. 시스템을 다수의 다이에 걸쳐 분산시킴으로써, 각 다이는 그 다이에 위치된 컴포넌트에 대해 적절한 반도체 프로세스 기술로 구현될 수 있다. 게다가, CPU 다이(246) 상에 위치된 컴포넌트는 상대적으로 일반적인 것인 반면, ASIC 다이(271) 상에 위치된 컴포넌트는 특정 애플리케이션에 더 특유한 것이다. 이러한 배열을 사용함으로써, 하나의 제품은 ASIC 다이(271)와 쌍을 이루는 CPU 다이(246)를 사용하는 반면, 다른 제품은 상이한 애플리케이션을 위해 선택된 컴포넌트를 갖는 상이한 ASIC 다이와 쌍을 이루는 동일한 CPU 다이(246)를 사용하는 것이 가능할 수 있다.
이러한 컴포넌트 중 일부를 CPU 다이(246)에 위치시키고, 다른 컴포넌트를 ASIC 다이(271) 상에 위치시키는 것은, 그들 중 많은 것이 단일 다이 마이크로컨트롤러(200) 내에서 상호연결부(220)를 통해 서로 연결되어 있었기 때문에, 도전을 제기한다. 간단해 보이는 해결책은 ASIC 다이(271)의 컴포넌트에 대한 상호연결부(220) 신호를 위한 전용 다이 대 다이 상호연결부(261)를 제공하여, 상호연결부(220)가 단일 다이 마이크로 컨트롤러(200)와 동일하지만 상호연결부(248), 상호연결부(272) 및 다이 간 신호(261)의 조합으로 두 다이에 걸쳐 분산되도록 하는 것일 수 있다. 그러나, 검사 결과, 이러한 설계 접근 방식은, 요구되는 다이 간 신호(261)의 수가 구현하기에 현실적이지 않고 스케일링할 수 없기 때문에, 전형적인 시스템에는 도전을 제기한다. 이 접근 방식의 또 다른 단점은, 다이 간 신호(261)가 ASIC 다이(271) 상에 위치된 특정 컴포넌트에 특유한 것이므로, CPU 다이(246)를 상이한/수정된 컴포넌트를 포함하는 상이한 ASIC 다이와 쌍을 이루는 것은 모든 새로운 ASIC 다이(271)에 대해 CPU 다이(246) 재설계가 요구된다는 것이다.
개시된 통신 기법의 일 실시예에서, CPU 다이(246)와 ASIC 다이(271) 사이의 연결은 상당히 적은 수의 다이 대 다이 상호연결부(262)로 구현된다. 이러한 상호연결부는 통신 브리지 쌍: CPU 다이 상에 위치된 마스터 브리지(245)와 ASIC 다이 상에 위치된 슬레이브 브리지(264)를 통해 연결된다. 마스터 브리지(245)는 그것의 인터페이스(260)에서 CPU 다이 상호연결부(248)에 액세스한다. 슬레이브 브리지(264)는 그것의 인터페이스(201)에서 ASIC 다이 상호연결부(272)에 액세스한다. 인터페이스(260), 마스터 브리지(245), 다이 대 다이 상호연결부(262), 슬레이브 브리지(264) 및 인터페이스(201)의 조합은, 함께 작용하여, 더 많은 수의 다이 간 신호(261)가 구현되었을 때 발생했을 것과 유사한 방식으로 CPU 다이(246) 상의 컴포넌트가 ASIC 다이(271) 상의 컴포넌트와 상호작용할 수 있도록 한다. 게다가, CPU 다이 상호연결부(248)에 대한 CPU 다이 컴포넌트 인터페이스는 단일 다이 상호연결부(220)에 대한 그것의 컴포넌트 인터페이스와 동일할 수 있다. 유사하게, ASIC 다이 상호연결부(272)에 대한 ASIC 다이 컴포넌트 인터페이스는 단일 다이 상호연결부(220)에 대한 그것의 컴포넌트 인터페이스와 동일할 수 있다. 예를 들어, CPU 인터페이스(236) 및 LV 센서 인터페이스(238)에서의 AHB 신호는, 상이한 다이 상에 위치하며 상이한 상호연결부(248 및 272) 각각에 부착되어 있더라도 단일 다이(200) 구현에서와 동일할 수 있다.
개시된 통신 기법의 일 실시예에서, 다이 대 다이 상호연결부(262)는 트랜잭션 및 메시지 교환을 위해 사용된다. 이러한 트랜잭션 및 메시지 교환은 더 많은 수의 단순한 다이 간 신호(261)가 구현되었을 때와 유사한 방식으로 CPU 상호연결부(248)와 ASIC 다이 상호연결부(272) 사이에 관련 변경을 전파한다. 예를 들어, LV 센서(222)에 대한 인터페이스(238)에서의 신호가 데이터 0에서 데이터 1로 변경되는 경우, 이러한 변경은 상호연결부(248)에서의 동등한 신호로 전파될 수 있다. 이를 달성하기 위해, 상호연결부(272)는 이 신호를 슬레이브 브리지(264)가 데이터 전환을 검출할 수 있는 인터페이스(201)로 전파할 수 있다. 슬레이브 브리지(264)는, 그 다음, 이 데이터 변경을 마스터 브리지(245)에 통신하기 위해 메시지 또는 트랜잭션을 스케줄링할 수 있다. 마스터 브리지(245)는, 그 다음, 인터페이스(260)를 통해 이 신호의 동기화된 버전을 조정하여, CPU 다이(246) 내의 컴포넌트에 의한 사용을 위해 상호연결부(248)에서 이용 가능할 수 있게 할 수 있다. 유사하게, 마스터 브리지(245)는 다이 대 다이 상호연결부(262) 및 슬레이브 브리지(264)를 통해 동기화를 위한 상호연결부(248) 신호의 변경을 관찰할 수 있고, ASIC 다이(271) 내의 컴포넌트에 의한 사용을 위해 인터페이스(201)를 통해 ASIC 다이 상호연결부(272) 상에 그러한 신호의 동기화된 버전을 제공할 수 있다.
간단한 신호는 이러한 방식으로 데이터 변경 전파에 의해 동기화될 수 있고, 다른 실시예에서, 상호연결부(248 및 272)에서의 많은 전형적인 신호 및 신호 그룹은 그들의 시스템 의도 및 특성을 이용함으로써 동기화된다. 예를 들어, AHB와 같은 데이터 버스 트랜잭션과 관련된 신호 그룹은 이미 컴포넌트들 간의 트랜잭션을 나타내고 있다. 이러한 신호 그룹에 의해 암시되는 데이터 버스 트랜잭션은, 다른 다이에 대한 동등한 트랜잭션으로서 리마스터될 브리지 간의 특별히 코딩된 트랜잭션으로서 검출되고 브리지 간에 전파될 수 있다. 완료 핸드셰이크를 통해 순차적인 PMU 상태 변경을 구현하는 신호 그룹은, 브리지 간의 적절한 특별히 코딩된 트랜잭션으로 유사하게 변환될 수 있다. 인터럽트 요청과 DMA 요청은 이러한 인터페이스의 시그널링 의도에 대해 더 효과적인 방식으로 트랜잭션 또는 메시지로 코딩될 수 있다.
우리는 두 개의 컴포넌트가 CPU 다이(246) 및 ASIC 다이(271) 각각에 있는 2-다이 시스템에서 구현된 것과 같은, 앞서 논의된 CPU(217)와 LV 센서(222) 사이의 AHB 데이터 버스 트랜잭션을 예시로서 사용한다. 앞서와 같이, 이러한 트랜잭션은, 인터페이스(236)에서 AHB 마스터 신호 상의 AHB 트랜잭션에 대한 AHB 주소 단계를 발행하는 CPU(217)에 의해 개시된다. 상호연결부(248)에 존재하는 블록 주소 디코드 로직은 이 트랜잭션에 대한 주소 단계에 표시된 주소가 ASIC 다이 주소 범위에 할당된 주소 블록에 있음을 디코딩한다. 그 다음, 상호연결부(248)는 인터페이스(260)의 AHB 슬레이브 신호에 이 AHB 주소 단계를 제시한다. 이는 마스터 브리지(245)에 의해 검출되고, 마스터 브리지(245)는 그 다음 다이 대 다이 상호연결부(262)을 통해 대응하는 AHB-특정 다이 간 트랜잭션을 스케줄링한다. 슬레이브 브리지(264)는 이러한 다이 대 다이 트랜잭션을 검출 및 디코딩하고 인터페이스(201)에서의 AHB 마스터 신호 상의 동등한 AHB 트랜잭션에 대해 그 자체의 AHB 주소 단계를 발행한다. 상호연결부(272)에 존재하는 블록 주소 디코드 로직은 이 트랜잭션에 대한 주소 단계에 표시된 주소가 LV 센서(222)에 할당된 주소 블록임을 디코딩한다. 그 다음, 상호연결부(272)는 인터페이스(238)에서의 AHB 슬레이브 신호에 이 AHB 주소 단계를 제시한다. 이것은 CPU(217)와 마스터 브리지(245) 사이의 하나와, 슬레이브 브리지(264)와 LV 센서(222) 사이의 또 다른, 두 개의 불완전한 AHB 트랜잭션을 초래한다. 구현에 따라, 이러한 트랜잭션은 브리지에 걸쳐 검출된 트랜잭션을 결합적으로 포워딩하여 동일한 클록 사이클에서 발행될 수도 있거나, 인터페이스(231)에 제시된 주소 단계와 인터페이스(201)에 제시된 연관된 주소 단계 사이의 중재 대기 시간 및/또는 전파의 하나 이상의 클록이 있을 수도 있다.
그 다음, 두 AHB 트랜잭션은 그들의 AHB 데이터 단계를 완료해야 한다. 인터페이스(236) 상에서 CPU(217)에 의해 제공된 임의의 기록 데이터는 상호연결부(248)에 의해 마스터 브리지(245)의 인터페이스(260)로 라우팅된다. 이 데이터는, 다이 간 상호연결부(262)를 통해, 다이 간 트랜잭션의 데이터 단계로서 슬레이브 브리지(264)로 전파되며, 슬레이브 브리지(264)는 그 다음 AHB 데이터 단계로서 그것의 인터페이스(201) 상에 이를 제공한다. 상호연결부(272)는 이 데이터를 LV 센서(222)에 의한 사용을 위해 인터페이스(238)로 라우팅한다. 인터페이스(238) 상에서 LV 센서(222)에 의해 제공된 임의의 판독 또는 응답 데이터는 상호연결부(272)에 의해 슬레이브 브리지(264)의 인터페이스(201)로 라우팅된다. 이 데이터는, 다이 간 상호연결부(262)를 통해, 다이 간 트랜잭션의 데이터 단계로서 마스터 브리지(245)로 전파되며, 마스터 브리지(245)는 그 다음 AHB 데이터 단계로서 그것의 인터페이스(260) 상에 이를 제공한다.
다이 간 트랜잭션 포맷은 브리징된 AHB 트랜잭션의 직접 코딩일 필요가 없거나, 동일한 데이터 레이트일 필요가 없거나, 동일한 네이티브 버스 폭을 사용할 필요가 없다. 다이 간 트랜잭션 포맷은, 인터페이스(260 및 201)의 대응하는 AHB 트랜잭션이 정확한 결과로 완료될 수 있도록, 주소 및 데이터 단계를 중계할 수 있을 것만이 필요하다. 일부 구현에서, 신호가 주소와 데이터 단계 사이에서 공유될 수 있도록, 또는 다수의 더 작은 전송으로 직렬화될 수 있도록, 상호연결부(262) 신호 카운트를 감소시키는 것이 바람직할 수 있다. 또한, AHB 트랜잭션 브리징을 목적으로 하는 다이 간 트랜잭션에 사용되는 신호가 이 목적에만 독점적으로 사용될 필요는 없다. 이러한 상호연결부(262) 신호가 AHB 트랜잭션을 중계하는 데 바쁘지 않은 시간 동안, 다른 동기화 또는 통신 필요성이 상이하게 코딩된 다이 간 트랜잭션에 의해 동일한 상호연결부(262) 신호를 사용할 수 있다.
한 가지 주목할 점은, 상호연결부(248 및 272)에서의 블록 주소 디코드 로직이 2-스테이지 블록 주소 룩업을 형성한다는 것이다. 상호연결부(248)에서의 블록 주소 디코드 로직은, 트랜잭션 주소가 ASIC 다이(271) 컴포넌트 내의 특정 블록에 매핑된다는 지식을 필요로 하지 않고, 단지 그 중 하나가 될 수 있는 주소에 매핑된다는 것만 필요로 한다. 인터페이스(201) 상에서 AHB 트랜잭션이 리마스터되면, 상호연결부(272)에서의 주소 디코드 로직은 주소를 재검사하고 ASIC 다이(271) 상의 정확한 컴포넌트로 라우팅할 수 있다. 이것은, CPU 다이(246)가 상이한 ASIC 다이와 쌍을 이룰 때 상호연결부(248)에서의 주소 디코드 로직이 변경될 필요가 없도록, 예를 들어, 대량의 주소 블록을 ASIC 다이 컴포넌트에 사전 할당하는 것에 의해, 간단하고 일반적인 주소 디코더를 구현하는 것을 허용할 수 있다.
다이 간 동기화의 또 다른 예시는 앞서 논의된 HV 액추에이터(226)로부터 CPU(217) 내의 인터럽트 컨트롤러로의 인터럽트 요청이다. HV 액추에이터(226)는 그것의 인터페이스(242)에서 하나 이상의 인터럽트 요청 소스 신호 상의 인터럽트 요청을 나타낼 수 있다. 이는 상호연결부(272)를 통해 슬레이브 브리지(264)의 인터페이스(201)에서의 인터럽트 요청 수신 신호에 전파된다. 슬레이브 브리지(264)는, 그 다음, 다이 대 다이 상호연결부(262)를 통해 메시지 또는 트랜잭션을 스케줄링하여, 검출된 인터럽트 활성화를 마스터 브리지(245)로 전파할 수 있고, 마스터 브리지(245)는 그것의 인터페이스(260)에서 하나 이상의 인터럽트 요청 소스 신호 상에 인터럽트 요청을 표시하여 응답한다. 이 신호는 상호연결부(248)를 통해 인터페이스(236)에서의 인터럽트 요청 수신 신호에 제공될 수 있다. 일 구현에서, 슬레이브 브리지(264)는 인터페이스(201)에서 다수의 넘버링된 인터럽트 요청 수신 신호를 제공할 수 있고, 이 신호는 각각 상호연결부(272)를 통해 ASIC 다이(271) 상의 다양한 컴포넌트의 인터페이스에서의 인터럽트 소스 신호로 라우팅될 수 있다. 마스터 브리지(245)는, 그 다음, 인터페이스(260)에서 동일한 수의 인터럽트 소스 신호를 구현할 수 있으며, 이는 상호연결부(248)를 통해 CPU 다이 컴포넌트에 제공될 수 있다.
슬레이브 브리지(264)는 다이 대 다이 상호연결부(262)를 통해 열거된 이벤트 메시지를 제공함으로써, 다양한 넘버링된 인터럽트 요청 활성화를 마스터 브리지(245)에 통신할 수 있다. 이러한 열거된 메시지가 모두 인터럽트 활성화에 대응할 필요는 없으므로, 다른 열거된 메시지가 다른 목적을 위해 사용될 수 있다. 게다가, 특정 경우에, 다이 대 다이 트랜잭션이 발생할 때 다이 간 트랜잭션 응답 신호와 공유하는 것과 같이, 이 메시징에 사용되는 다이 대 다이 상호연결부(262)에서의 신호를 다른 목적을 위해 사용되는 그 상호연결부에서의 신호와 공유하는 것이 가능하다. 더 낮은 대기 시간이 원해지는 경우, 이 이벤트 메시지 전달 기능을 위해 다이 대 다이 상호연결부(262) 신호의 서브세트에 대해 전용인 것 또한 가능하다.
이 개시의 다른 곳에서 논의되는 바와 같이, 상이한 메커니즘을 사용하여 인터럽트 요청 활성화 및 비활성화를 처리하는 것이 유리할 수 있다. 예를 들어, 인터페이스(201)에서 검출된 인터럽트 요청 활성화는 다이 대 다이 상호연결부(262)를 통해 이벤트 메시지를 통해 CPU 다이(246)로 전파될 수 있는 반면, 비활성화는 다이 대 다이 상호연결부(262) 상에서의 적합한 다이 대 다이 트랜잭션과 같은, 또 다른 메커니즘에 의해 검출될 수 있다.
다이 간 동기화의 또 다른 실시예는 앞서 논의된 DMA 컨트롤러(212)를 통한 LV 통신(221)과 RAM(216)으로부터의 데이터의 DMA 개시 전송이다. LV 통신(221)은 인터페이스(237)에서의 하나 이상의 DMA 요청 소스 신호를 사용하여 이 트랜잭션을 수행해야 할 필요성을 나타낼 수 있다. 상호연결부(272)는 이 신호를 인터페이스(201)에서의 DMA 요청 및 수신 신호로 라우팅할 수 있다. 슬레이브 브리지(264)는, 그 다음, 다이 대 다이 상호연결부(262)를 통해 메시지 또는 트랜잭션을 스케줄링하여, 검출된 DMA 요청 활성화를 마스터 브리지(245)로 전파할 수 있고, 마스터 브리지(245)는 그것의 인터페이스(260)에서 하나 이상의 DMA 요청 소스 신호 상에 DMA 요청을 표시하여 응답한다. 상호연결부(248)는 이 신호를 인터페이스(230)에서의 DMA 요청 수신 신호로 라우팅할 수 있으며, 이는 DMA 컨트롤러(212)에 전송이 필요하다는 것을 나타낸다. DMA 요청을 수신하면, DMA 컨트롤러(212)는, 그 다음, 인터페이스(230)에서의 AHB 마스터 신호를 통한 LV 통신(221) 및 RAM(216)과의 AHB 트랜잭션과 같은, 응답 액션을 취할 수 있다. RAM(216)은 DMA 컨트롤러(212)와 동일한 다이 상에 위치되므로, 이들 간의 통신은 상호연결부(248)를 통해 단일 다이 구현(200)과 유사하게 진행될 수 있다. DMA 컨트롤러(212)는 단일 다이 구현(200)에서와 같이 그것의 인터페이스(230) 상에서 데이터 버스 트랜잭션을 개시함으로써 LV 통신(221)과의 그것의 통신을 개시하지만, 상호연결부(248)에서의 블록 주소 디코드 로직은 타겟 슬레이브를 위해 인터페이스(260)에서 마스터 브리지(245)를 선택한다. 다이 대 다이 상호연결부(262)를 통한 데이터 버스 트랜잭션은, 그 다음, 앞서 설명한 CPU(217) 및 LV 센서(222) 데이터 버스 트랜잭션과 유사한 방식으로 진행될 수 있다. DMA 컨트롤러(212)는 LV 통신(221)이 상이한 다이 상에 있다는 것을 인지할 필요가 없다.
일 구현에서, 슬레이브 브리지(264)는 인터페이스(201)에서 다수의 넘버링된 DMA 요청 수신 신호를 제공할 수 있고, 이 신호는 각각 상호연결부(272)를 통해 ASIC 다이(271) 상의 다양한 컴포넌트의 인터페이스에서의 DMA 요청 소스 신호로 라우팅될 수 있다. 마스터 브리지(245)는, 그 다음, 인터페이스(260)에서 동일한 수의 DMA 요청 소스 신호를 구현할 수 있으며, 이는 상호연결부(248)를 통해 CPU 다이 컴포넌트에 제공될 수 있다.
슬레이브 브리지(264)는 다이 대 다이 상호연결부(262)를 통해 열거된 이벤트 메시지를 제공함으로써, 다양한 넘버링된 DMA 요청 활성화를 마스터 브리지(245)에 통신할 수 있다. 이러한 열거된 메시지가 모두 DMA 활성화에 대응할 필요는 없으므로, 이전에 언급된 인터럽트 요청 활성화와 같은 다른 목적을 위해 다른 열거된 메시지가 사용될 수 있다. 인터럽트 시그널링에 대해 논의된 바와 같이, 메시지 시그널링을 다른 기능과 공유함으로써 다이 대 다이 상호연결부 카운트를 감소시키기 위한 유사한 메커니즘(들) 또한 사용될 수 있다.
사이클-정확한 방식으로 DMA 컨트롤러(212)의 인터페이스(230)에 대한 DMA 요청 표시를 업데이트하는 것이 유용할 수 있으며, 이에 의해 DMA 컨트롤러(212)는 전송을 중지하거나 완료된 동작 후에 후속 동작을 구현하지 않는 것과 같은 DMA 요청의 비활성화에 응답할 수 있다. 이를 가능하게 하기 위해, 다이 대 다이 상호연결부(262)를 통한 마스터 브리지(245)와 슬레이브 브리지(264) 사이의 다이 대 다이 트랜잭션을 위한 응답 신호는, 데이터 단계 전송의 일부로서 DMA 요청 신호에 대한 업데이트를 나타낼 수 있다. 예를 들어, LV 통신(221)이 데이터 버스 트랜잭션 데이터 단계 동안 인터페이스(237) 상에서 비활성 DMA 요청 소스 신호를 제공하는 경우, 슬레이브 브리지(264)는 인터페이스(201)에서 이를 검출하고 다이 간 트랜잭션 데이터 단계의 일부로서 이 업데이트된 DMA 요청 정보를 포함하도록 변형 트랜잭션 응답을 제공할 수 있다. 이는 마스터 브리지(245)에 의해 검출될 수 있고, 마스터 브리지(245)는, 그 다음, 인터페이스(260) 상에서 데이터 버스 트랜잭션의 데이터 단계가 완료되는 것과 동일한 사이클 상에 이 업데이트를 제공하기 위해 인터페이스(260) 상에서 그것의 DMA 요청 소스 신호를 업데이트할 수 있다. 일 실시예에서, DMA 컨트롤러(212)는 데이터 버스 주소 단계의 일부로서 인터페이스(230) 상에 추가적인 신호를 제공하여, 그 버스 트랜잭션에 대해 관심 있는 DMA 요청을 나타낼 수 있다. 그 다음, 이것은 추가적인 주소 단계 신호로서 상호연결부(248)를 통해 인터페이스(260)로 라우팅될 수 있고, 이에 의해 다이 대 다이 상호연결부(262)를 통한 다이 간 트랜잭션이 이 정보를 슬레이브 브리지(264)에 제공하여, 그 데이터 버스 트랜잭션에 대해 모니터링하기 위해 그것의 인터페이스(201) 상의 DMA 요청 중 어떤 것인지를 알 수 있게 할 수 있다.
다이 간 동기화는 또한, 전력 관리 기능들을 동기화하기 위해 사용될 수 있다. PMU(268)는 ASIC 다이(271) 상에 위치되기 때문에, CPU 다이(246) 상에 위치된 CPU PMU 인터페이스(256)에 대한 직접 액세스를 가지지 않는다. PMU 상태 변경 및 핸드셰이크 트랜잭션이 CPU(217)와 PMU(268) 간에 발생할 수 있도록 하기 위해, 이러한 상태 변경 및 트랜잭션은 다이 대 다이 상호연결부(262)와 브리지(245 및 264)를 통해 다이 간 트랜잭션 및 메시지로 변환될 수 있다. 이는 PMU 컨트롤러 로직(244)을 ASIC 다이(246)에 포함시킴으로써 달성될 수 있으며, 이는 마치 PMU(205)인 것처럼 CPU(217)와 상호 작용할 수 있는 동시에, 실제로 PMU(268)와 상호 작용하기 위한 동기화 브리지의 일 단부를 형성한다. 이를 구현하기 위해, PMU 컨트롤러(244)는 인터페이스(258)를 사용하여 마스터 브리지(245)와 통신하는 동안, PMU(268)는 인터페이스(281)를 사용하여 슬레이브 브리지(264)와 통신한다. 인터페이스(256)를 통해 교환된 트랜잭션 및 메시지는, 그 다음, 이 경로를 따라 다이 대 다이 상호연결부(262)를 통해 다이 간 트랜잭션 또는 이벤트로 변환된다. 이는 CPU(217)가 단일 다이 구현의 PMU(205)와 상호 작용하고 두 경우 모두에서 CPU PMU 인터페이스(256)가 동일하도록 허용하는 CPU(217)와 유사한 방식으로 PMU(268)와 상호 작용하는 것을 허용할 수 있다. 이러한 다이 간 트랜잭션 및 이벤트는, PMU 사용을 위한 다이 간 트랜잭션 코딩을 제공하는 것 또는 PMU 사용을 위한 열거된 이벤트 메시지를 생성하는 것과 같은, 다른 목적을 위해 사용되는 와이어와 공유될 수 있으므로, 다이 대 다이 상호연결부(262)에서 전용 와이어를 요구하지 않는다.
다이 간 동기화는 또한, 디버그 액세스(예컨대, 보안 관리자(267)에서)를 ASIC 다이(271)에 위치시키는 데 도움이 될 수 있다. 이는 몇몇 방식으로 멀티 다이 시스템에 유익할 수 있다. PMU(268)가 ASIC 다이(271) 상에 위치되므로, 매우 저전력 상태일 때 전체 CPU 다이(246)가 클록 해제(unclock)되고 그리고/또는 전력 제거(unpower)되는 것이 가능할 수 있다. 디버그 액세스가 ASIC 다이(271) 상에 위치되는 경우, 외부 디버거는 인터페이스(282)를 통해 PMU(268)와 상호 작용하여 전력 모드를 변경하는 것을 허용하여, 디버그 세션 동안 클록 없음(clockless) 또는 전력 없음(powerless) 모드를 오버라이드(override)하여 CPU 다이(246)와의 통신을 개시하거나 유지할 수 있다. 외부 디버거는 또한, 인터페이스(280)를 사용하여 슬레이브 브리지(264)와 통신하여 인터페이스(201) 상에서 AHB 트랜잭션을 마스터하는 것과 같이, 상호연결부(272)를 통해 데이터 버스 트랜잭션을 마스터하는 것과 같이 CPU 다이(217)가 클록 해제되거나 전력 제거되는 동안에도 ASIC 다이(271) 컴포넌트와 상호 작용할 수 있다. 이는 또한, 제조 동안 부분적으로 조립된 제품의 고장 분석 또는 테스트와 같이, CPU 다이(246)가 손상되었거나 존재하지 않을 때, ASIC 다이(271) 컴포넌트에 대한 디버거 제어를 허용할 수 있다.
ASIC 다이 상에 디버그 액세스를 위치시키는 것의 또 다른 이점은, 이 포트에 대한 외부 전압 시그널링이 CPU 다이(246) 상에서 사용되는 전압으로부터 디커플링되는 것을 허용하는 것이다. 이는 시그널링 전압의 수 또는 범위를 감소시킴으로써 CPU 다이(246)의 설계를 단순화할 수 있고, 또한 상이한 ASIC 다이와 함께 CPU 다이(246)를 사용하는 상이한 제품이 상이한 시그널링 전압을 갖는 것을 허용할 수 있다.
디버그 액세스에 연결된 디버거가 CPU(217)와 상호작용하는 것을 가능하게 하기 위해, 다이 대 다이 상호연결부(262)를 통한 다이 간 동기화가 사용될 수 있다. 이는 CPU 디버그 로직(299)을 CPU 다이(246) 상에 포함시킴으로써 달성될 수 있다. CPU 디버그 로직(299)은 단일 다이 구현(200)에서 디버거 로직(218)이 CPU(217)와 상호 작용하는 것과 유사한 방식으로 인터페이스(234)를 사용하여 CPU(217)와 상호 작용할 수 있다. 이는 다이 대 다이 상호연결부(262) 및 브리지(245 및 264)를 통해 디버그 동작을 트랜잭션 또는 이벤트로 변환함으로써 달성될 수 있다. CPU 디버그 로직(299)은, 마스터 브리지(245)로의 인터페이스(257)를 사용하여 다이 대 다이 상호연결부(262)에 걸쳐 적절한 시그널링으로 이러한 동작을 변환하면서, 단일 다이 구현(200)에서 디버거(218)인 것처럼 인터페이스(234)를 사용하여 CPU(217)와 상호 작용할 수 있다. ASIC 다이(271) 상의 슬레이브 브리지(264)는, 그 다음, 인터페이스(280)를 사용하여 보안 관리자(267)의 디버그 액세스 로직과 상호 작용하여 원하는 디버거 동작을 수행할 수 있다. 이러한 목적을 위해 사용되는 상호연결부(262) 신호는, 디버거 사용을 위한 다이 간 트랜잭션 코딩을 제공하거나 디버거 사용을 위한 열거된 이벤트 메시지를 생성하는 것과 같은, 다른 목적을 위해 사용되는 신호와 공유될 수 있다. 일부 실시예에서, 상이한 폭의 상호연결부(262)가 상이한 ASIC 다이 및 개시된 능력 발견과 함께 사용될 수 있다. 예를 들어, 로우 엔드(low-end) 제품은 더 느리고 더 낮은 핀 카운트 디버그를 사용할 수 있는 반면, 더 하이 엔드(higher-end) 제품 와이어는 더 상세한 트레이싱 및 디버깅을 허용할 수 있다.
디버그 액세스 로직에 대한 보안은 보안 매니저(267)를 ASIC 다이(271)에 추가함으로써 개선될 수 있다. 이 보안 관리자는 CPU(217) 디버거 동작을 위한 인터페이스(280) 또는 PMU 디버거 동작을 위한 인터페이스(282)와 같은 다른 인터페이스에 제시되도록 허용하기 전에, 부착된 디버거가 적절한 허가를 갖는지를 확인하는 데 사용될 수 있다. 본 명세서에는 요구되는 보안 크리덴셜을 갖는 디버거에만 하나 이상의 디버거 동작을 허용하는 것, 제품이 특정 수명 주기(lifecycle) 상태에 있을 때만 하나 이상의 디버거 동작을 허용하는 것, 또는 제품이 요구되는 동작 모드에 있을 때만 하나 이상의 디버거 동작을 허용하는 것을 포함할 수 있다.
CPU 다이(246) 컴포넌트가 보안 정책에 영향을 미치고 이를 저장하는 것을 허용하기 위해, 보안 관리자(243)는 CPU 다이(246) 상에 포함될 수 있다. 보안 매니저(243)는 제품 수명 주기 상태, 디버거 허가 크리덴셜 및 다른 보안 구성과 같은 보안 정책 구성을 저장하기 위해 인터페이스(252)를 통해 플래시 메모리(213)와 같은 비휘발성 메모리에 대한 액세스를 제공받을 수 있다. 보안 관리자(267)는 다이 간 트랜잭션을 사용한 브리지(245 및 264)를 통한 다이 대 다이 상호연결부(262)를 통해 보안 관리자에 동기화된 보안 정책을 관리할 수 있다. 이러한 다이 간 트랜잭션에 사용되는 상호연결부(262)에서의 신호는 다른 목적을 위해 사용되는 신호와 공유될 수 있다.
단일 다이 마이크로컨트롤러 상에서 디버거(218)에 연결되었던 디버그 통신 포트는 이제 ASIC 다이(271) 상에 위치되며 디버그 액세스 로직에 연결된다.
상호연결부(262) 내의 와이어가 상이한 동기화 목적을 위해 공유되기 위해서는, 브리지(245 및 264)의 로직에 공유된 와이어의 다양한 사용들 간의 중재 및 우선순위 지정을 포함할 필요성이 있을 수 있다는 점에 유의한다. 다수의 경쟁 서비스가 동기화를 필요로 할 때, 이 중재 로직은 서비스 순서를 위해 다양한 서비스 중에서 선택할 수 있고, 반면에 다른 서비스는 시간 할당을 기다리게 할 수 있다.
ASIC 다이(271) 상에서, 오실레이터(265) 및 브리지(264)에 대한 그것의 인터페이스(279)를 구현하고, 이에 따라 클록이 브리지 및 CPU 다이(246)로 확장된다. 디버그 액세스는 보안 관리자(267)를 사용하여 인터페이스(280)를 통해 브리지 마스터(264)에 연결하여 상호연결부(262)를 통해 디버그 액세스를 확장한다. PMU(268)는 ASIC 다이(271) 상에 전력 관리 피처를 제공할 수 있고 선택적으로 CPU 다이(246)에도 전력 공급을 제공할 수 있으며, 보안 관리자(267)를 사용하여 상호연결부(280)를 통해 CPU 다이 상에서 PMU 컨트롤러(244)와 동기화될 수 있다. AHB, IRQ 신호, DRQ 신호 및 주변 장치 PMU 표시와 같은 버스 인터페이스를 포함할 수 있는 주변 장치 인터페이스(272)는, 브리지 마스터(245 및 264)와 인터페이스(260 및 201)를 통해 상호연결부(262)를 통해 그들의 유사한 대응물(counterpart)(248)에 동기화될 수 있다. (주변 장치 인터페이스(272)는 주변 장치(221, 222, 223, 224, 225 및 226)에 결합될 수 있으며, 이는 단일 다이(200) 상의 대응하는 주변 장치와 동일한 구현을 가질 수 있음에 유의한다.) 인터페이스(248, 257 및 258)의 신호의 수가 너무 많아서 실행 가능하게 직접 상호연결하지 못할 수 있기 때문에, 브리지 마스터(245 및 264)는, CPU(217), DMA 컨트롤러(212) 및 주변 장치(221, 222, 223, 224, 225 및 226)와 같은 컴포넌트가 단일 다이 마이크로컨트롤러(200) 상에서 동일한 컴포넌트에 대해 구현되는 것과 동일한 방식으로 그들의 인터페이스(237, 238, 239, 240, 241 및 242) 각각을 구현할 수 있도록, 이를 완료하는 논리적 효과(261)를 제공하도록 조정한다.
다이 대 다이 상호연결부(262)는 다양한 상호연결부(220) 서비스에 대한 논리적 링크(262)를 활성화하기 위한 물리적 링크를 수행할 수 있다. 다이 대 다이 상호연결부(262) 인터페이스는 도 4에 상세히 설명되어 있다. 이것은 CPU 다이 브리지 마스터(245)와 ASIC 다이 브리지 마스터(264) 사이를 연결한다. 이 상호연결부(262)는 각자의 브리지 마스터(245 및 264) 내의 두 다이 사이에 인터페이스(261)의 모음(collection)의 확장을 효과적으로 가능하게 하고 구현한다.
단일 마이크로컨트롤러의 이러한 분할이 사소한 것이 아니라는 것을 쉽게 알 수 있으며, 연결되는 와이어의 수를 상당히 줄일 것이라는 점, 예를 들어, 단일 다이 마이크로컨트롤러의 내부 상호연결성이 와이어 카운트를 줄이면서 완전하게 확장될 것이라는 점을 고려할 때, 이 문제를 해결할 필요성을 알 수 있다.
개시된 통신 기법에서, 마이크로컨트롤러 아키텍처 및 인터페이스(260)를 브리지(245)에 도입하여, 전체 버스 더하기 인터럽트 더하기 DMA 구조를 포함함으로써, 와이어의 수를 감소시키고 이를 더 작은 신호 세트를 통해 통신하는 논리적 구조로 대체한다. 게다가, 디버거 포트 제어/데이터뿐만 아니라 PMU 상태와 같은 다른 다이 간 거동이 이 인터페이스에 걸쳐 동기화될 수 있다. 이러한 인터페이스는 인터페이스(257)를 통한 CPU 디버그(299) 및 인터페이스(258)를 통한 PMU 컨트롤러(244)와 같은 다른 제어와 함께 캡처된다. (PMU 컨트롤러(244), 인터페이스(258), 마스터 브리지(245), 다이 대 다이 상호연결부(262), 슬레이브 브리지(264), 인터페이스(280), 보안 관리자(267), 인터페이스(282) 및 PMU(268)는 PMU 인터페이스(256)와 동일한 기능을 수행한다는 점에 유의한다. 또한 디버그 보안의 명시적 대응물은 도 2a에 도시되지 않았다는 점에 유의한다.) 이러한 논리적 구조는, 마이크로컨트롤러 펌웨어의 완전한 제어 하에서, 그리고 이러한 제거된 와이어가 존재하는 것처럼 원하는 논리적 거동을 유지하면서 통신 상호연결부를 최소화하는 것을 초래한다. 이것은, 주변 장치나 CPU 로직 또는 거동을 크게 변경하는 것을 요구하지 않고 상호연결부 신호 카운트를 낮게 유지하면서 다수의 다이 및/또는 패키지를 사용하여 마이크로컨트롤러 시스템이 구현되는 것을 가능하게 한다.
도 3에서는, 도 1에 설명된 주요 인터페이스를 사용하여 단일 다이 마이크로컨트롤러를 두 개의 다이, CPU 다이(246) 및 ASIC 다이(271)로 나눈다. 단일 다이 마이크로컨트롤러의 전체 기능을 유지하면서 연결되는 와이어의 수를 줄이는 방법을 이해하기 위해, 다음 인터페이스에 초점을 맞춘다: 버스 인터페이스 AHB(330), IRQ(160) 및 DRQ(130)를 포함할 수 있는 이벤트(335), PMU 동기화(340) 및 DAP(345). (버스 인터페이스 AHB(330)는 주변 장치가 ASIC 다이(271) 상에 배치된 인터페이스(135)의 서브 세트를 통신할 수 있음에 유의한다. 블록 어드레싱이 분산된 방식으로 처리되었기 때문에, ASIC 다이(271) 상에 무제한의 수의 주변 장치가 있을 수 있다. 더욱이, 이벤트(335)는 주변 장치가 ASIC 다이(271) 상에 배치된 DRQ(130) 및 IRQ(160)의 서브세트를 통신하거나, 일반적인 CPU 다이의 경우, ASIC 다이(271) 상에 배치될 수 있는 주변 장치에 대한 할당을 통신할 수 있다. 게다가, PMU 동기화(340)는 PMU 컨트롤러(244)에 의해 처리되지 않는 인터페이스(135)의 서브세트를 통신할 수 있다. 전형적으로, 클록 게이팅 및/또는 로컬 파워 게이팅은 PMU 컨트롤러(244)에 의해 처리될 수 있는 반면, 다른 PMU 기능은 ASIC 다이(271)와의 상호작용을 수반할 수 있다. 추가적으로, DAP(345)는 인터페이스(280) 및 디버그 액세스 포트를 통해 처리될 수 있는 포트 인터페이스(140)의 서브세트를 통신할 수 있다). 일 실시예에서, 클록 소스(315)(또는 클록-소스(115))는 클록(317)(이는 클록-소스(115)로부터 클록 곱셈기 및 다중화기(110)로 제공되는 넘버링되지 않은 클록일 수 있고, 이는 브리지(264) 또는 브리지(365)로 추가로 제공될 수 있음)을 제공하기 위해 ASIC 다이(271) 상에 있을 수 있고, 이는 CPU 다이 클록 곱셈기 및 다중화기(310)로 확장될 수 있다(이는, 아래에서 논의되는 바와 같이, 다중화기(310)로부터 브리지(350)로 추가의 동기화 신호를 전달하여 클록 증배(multiplication)를 처리할 수 있지만, 이와 달리, 클록 곱셈기 및 다중화기(110)와 유사한 기능을 가지며, 일부 실시예에서는, 클록 곱셈기 및 다중화기(110)일 수 있다). 일 실시예에서, 브리지/서데스(serdes)(350) 및 브리지/서데스(365)는 리타이밍 및 I/O 인터페이스(355 및 360)를 각각 사용하여 다이 간 로직 상호연결부(262)를 통해 연결된다. 브리지/서데스(350)는 CPU 다이 인터페이스(330, 335, 340 및 345)에 부착될 수 있고, CPU 다이 인터페이스 클록(325)이 제공될 수 있다. 브리지/서데스(365)는 ASIC 다이 인터페이스(370, 375, 380 및 385)에 부착될 수 있고 ASIC 다이 인터페이스 클록(317)이 제공될 수 있다. (ASIC 다이 인터페이스(370, 375 및 380)는 ASIC 기능(390)과 관련된 시그널링을 통신하는 반면, 인터페이스(385)는 DAP(395)와 통신한다는 점에 유의한다. 이러한 인터페이스는 인터페이스(330, 335, 340 및 345)에 대한 대응물이라는 점에 유의한다.) 두 개의 브리지(350 및 365)는 상호연결부(262)를 통해 통신하여 CPU 다이 인터페이스를 그들의 ASIC 다이 인터페이스로 확장하고 동기화한다.
일반적으로, 과제는, 사용자 및/또는 프로그래머가 단일 다이 마이크로컨트롤러로 프로그래밍할 수 있는(그리고 그것을 하나의 다이 마이크로컨트롤러로 볼 수 있는) 2개 이상의 다이를 갖는 마이크로컨트롤러를 개발하는 것이다. 추가적으로, 개시된 통신 기법은 IP가 동일한 다이 상에 있었다면 사용했을 일반적인 마이크로컨트롤러 인터페이스에 대한 변경 없이 제2 다이 상에 배치하면서 마이크로컨트롤러에 집적되는 것을 허용하는 브리지의 개념을 사용한다. 다시 말해, 브리지(350)와 이것의 대응물(365)은 양 측(소프트웨어/CPU 및 하드웨어 주변 장치)에 서로 직접 연결되어 있는 모양(appearance)을 생성한다. 추가적으로, ASIC 다이(271) 상의 하드웨어 인터페이스는 CPU와 동일한 다이 상에 구현된 것과 의도적으로 동일하다.
일 실시예에서, AHB 버스(330)는 다음으로 구성된 적어도 115개의 신호를 갖는다:
HCLK (클록)
HRESETn (버스 리셋)
HREADY (데이터 단계가 스톨되지 않았으므로 커맨드 단계가 등록되어야 한다는 표시)
HADDR[31:0] (32-비트 주소 버스)
HPROT[3:0] (버스 액세스 컨텍스트 정보)
HTRANS[1:0] (전송 유형)
HSIZE[1:0] (전송 크기)
HWRITE (전송 방향)
HBURST[2:0] (버스트 유형)
HMASTLOCK (잠긴 시퀀스 표시)
HNONSEC (보안 액세스 대(vs) 비보안 액세스)
HWDATA[31:0] (데이터 기록, 마스터에서 슬레이브로)
HRDATA[31:0] (데이터 판독, 슬레이브에서 마스터로)
HREADYOUT (데이터 단계를 완료할 준비가 되었다는 슬레이브 표시)
HRESP (데이터 단계가 오류로 완료되어야 하는 경우의 슬레이브 표시)
(각 슬레이브는 HREADYOEiT의 인스턴스를 갖는다. 결과적으로, 인터페이스(237, 238, 239 등) 각각은 고유한 인스턴스를 갖는다. 버스 로직은 이러한 신호를 HREADY 브로드캐스트 신호로 다중화할 수 있다. 더욱이, 각 슬레이브는 그 자체 버전의 HRESP 및 HRDATA를 제공할 수 있다. 따라서, 인터페이스(237, 238, 239 등) 각각은 그러한 출력을 제공할 수 있다. 버스 로직은, 이러한 신호를, 예컨대, CPU가 버스 마스터일 때 인터페이스(236) 상에서, 버스 마스터에 제공되는 역다중화된 신호의 단일 세트로 다중화할 수 있다.
또한, 전형적인 컨트롤러는 다수의 주변 장치 IRQ 채널을 가질 것이다. 예시로서, ARM 코어텍스 M4는 240개의 주변 장치 IRQ 채널을 제공할 수 있다. DMA 컨트롤러는 전형적으로 8 내지 32개의 DRQ 채널을 가질 수 있다. 인터럽트가 슬립으로부터 깨어나는 것을 허용하기 위해, 구현은 PMU 인터페이스에 설정된 IRQ와 동일한 폭 각각의 추가 신호 세트가 필요하다. 슬립 모드에 순차적으로 들어가고 나오는 것을 지원하기 위해, 더 많은 신호가 필요하다. 보안 정책 동기화 및 디버그 포트는 일반적으로 추가 신호를 필요로 할 것이다. 다이들 사이의 이러한 신호를 전용 와이어로 직접 연결하는 것은, 따라서 비용 및/또는 제조상의 우려로 인해 심지어 100개의 와이어가 불가능한 구현에 대해 실행 불가능할 것이다. 이러한 신호는 개별 다이 상의 상호연결부(248 및 272) 상에 존재할 수 있지만, 다이 대 다이 상호연결부(262)를 통해 메시징을 통해 전달될 수 있다는 점에 유의한다.
일 실시예에서, 전체 구현(예컨대, 전형적으로 버스 스톨이 없고, IRQ/DRQ 및 PMU 지원을 위한 대기 시간이 거의 없는)은 42개의 와이어로 하나 이상의 기능을 구현할 수 있다. 대안적으로, 또 다른 실시예(이는 약간 더 느릴 수 있음)는 18개의 와이어를 사용할 수 있다. DDR 버전은 유사한 성능을 갖는 10-와이어 구현으로 이를 추가로 줄일 수 있다는 점에 유의한다.
16개의 인터럽트를 허용하고 DMA 또는 PMU를 지원하지 않는 시스템에 대한 다른 실시예는 3개의 와이어로 구현될 수 있다. 이러한 접근 방식은 느릴 수 있지만, 많은 마이크로컨트롤러 애플리케이션은 주변 장치 액세스의 대기 시간을 수용할 수 있다.
도 4는 최소 또는 감소된 와이어 세트를 갖는 2-다이 시스템 사이의 인터페이스의 실시예의 선택된 세부 사항을 예시한다. CPU 다이(246)는 CPU 다이 브리지(350)를 포함하고, ASIC 다이(271)는 ASIC 다이 브리지(365)를 포함한다. 이러한 브리지는 신호 NCLK(420), NDIO(421), NPHASE(422), NRESP(423) 및 NEVT(424)를 갖는 상호연결부(262)와 연결된다. 상호연결부와 결합된 브리지는 두 다이 상에 위치된 컴포넌트들 간의 다양한 트랜잭션, 이벤트 및 서비스를 투명적인 방식으로 동기화하는 데 사용될 수 있다. 신호 NDIO(421), NRESP(423) 및 NEVT(424)는 일부 구현에서는 멀티-비트 신호일 수 있지만 다른 구현에서는 단일 비트 신호일 수도 있다.
상호연결부(262)는 세 개의 신호 그룹으로 나뉜다. 제1 그룹은 나머지 신호 상에서의 데이터 전송을 위한 동기화 클록으로 동작할 수 있는 신호 NCLK(420)를 포함한다. NCLK(420)는 ASIC 다이(271) 상의 클록 소스(315)로부터 클록(459)에 의해 제공될 수 있고, 클록(458), 및 그 다음에 이어지는, 클록 곱셈기(401), CPU 다이(246) 상의 클록 FCLK(402)에 대응할 수 있다. 제2 그룹, 트랜잭션 상호연결부(460)는 NDIO(421), NRESP(423) 및 NPHASE(422)를 가질 수 있고, ASIC 다이(271)에 의해 수신 및/또는 응답되는 동안 CPU 다이(246)에 의해 개시된 트랜잭션을 구현하는 데 사용된다. 이 상호연결부의 예시적인 사용은, AHB 마스터(405)와, AHB 인터페이스(437)를 통해 연결된 AHB 슬레이브 사이와 같이, CPU 다이(246) 상의 메모리 매핑된 버스 트랜잭션(330)을 ASIC 다이(271) 상의 리마스터된 트랜잭션(370)으로 중계하기 위한 것이다. CPU가 다른 목적을 위해 개시할 필요가 있을 수 있는 다른 트랜잭션 또한, 트랜잭션 상호연결부(460) 상에서 트랜잭션된다. 제3 그룹은 이벤트 중계 상호연결부 NEVT(424)를 포함하며, 주로 ASIC 다이(271)로부터 CPU 다이(246) 상의 이벤트(335)로 이벤트 메시지(375)를 전파하는 데 사용된다. 다른 서비스는, CPU 다이(246) PMU 상태 및 이벤트(340)를 ASIC 다이(271) PMU 상태 및 이벤트(380)와 동기화하거나, CPU 다이 디버그 인터페이스 구성 및 이벤트(345)를 ASIC 다이 디버그 인터페이스 구성 및 이벤트(385)와 동기화하는 것과 같이, 트랜잭션 상호연결부(460) 및 NEVT 신호 그룹을 모두 사용할 수 있다.
이 예시는 CPU 다이(246) 및 ASIC 다이(271) 상에서 AHB 포맷 버스를 사용하지만, 다른 포맷 버스가 브리지(350) 및 브리지(365)에 대한 버스 인터페이스에 대해 사용될 수 있다. 게다가, 버스 인터페이스의 전부 또는 일부가 서로 상이한 포맷이 되는 것 또한 가능하다.
다이 대 다이 브리지는 최종 사용자에게 대체로 투명적인 방식으로 멀티-다이 컨트롤러의 구현을 허용한다. 이 컨텍스트에서 투명성은 상황적 또는 시스템적 대기 시간이 아닌 기능적 투명성으로 이해되어야 한다. 두 다이 사이에 몇몇 표준 마이크로컨트롤러 인터페이스를 브리징함으로써, 주변 장치는 두 다이 중 어느 다이에 구현되는지에 대체로 애그노스틱하도록 구현될 수 있다. 이 시스템은 두 다이를 마스터/슬레이브 관계로 브리징한다. CPU 다이(246)는 적어도 하나의 마이크로컨트롤러 코어(CPU)와 그것의 긴밀하게 결합된 메모리를 포함하는 것으로 예상된다. 또한, 하나 이상의 DMA 컨트롤러(212)를 포함할 수 있다.
CPU 다이(246)는 리드 프레임(또는 또 다른 유형의 패키징 스타일)에 대한 임의의 직접 연결을 가질 필요가 없다. ASIC 다이(271)는 외부 세계로의 CPU 다이(246)의 게이트웨이일 수 있고, CPU 다이(246) 상에 구현되지 않은 제품 피처를 CPU에 투명적인 방식으로 완성하는 데 필요한 인터페이스와 로직 어느 것이든 구현하기 위해 메모리 매핑된 주변 장치를 포함할 수 있다. 추가적으로, CPU 다이(246)는 많은 인스턴스에서 임의의 전력 관리 아날로그 콘텐츠를 가질 필요가 없으므로, PMU 회로부 및 연관된 로직의 전부 또는 일부가 ASIC 다이(271) 상에서 구현될 수 있다. CPU 다이가 단일 다이 시스템인 것처럼 PMU 콘텐츠를 여전히 제어해야 하며, 이는 분산된 PMU 시스템에 대한 필요성을 초래한다.
다이들 사이에 브리징된 인터페이스는, AHB 버스, 인터럽트, DMA 요청, 및 PMU 요청 및 확인 응답을 포함할 수 있다. 추가적으로, 논리적 브리지는 적어도 다음을 포함할 수 있다: AHB, IRQ, DMA, PMU 및 보안. 이러한 논리적 브리지는 트랜잭션 상호연결부(460) 및 이벤트 중계 상호연결부 NEVT(424)를 포함하는 다이 간 상호연결부를 통해 트랜잭션된다. 트랜잭션 상호연결부(460)는 AHB 트랜잭션(330)을 리마스터된 AHB 트랜잭션(370)에 브리징하는 데 사용될 수 있으며, 비-AHB 제어 커맨드, 예를 들어, PMU 상태(340)를 PMU 상태(380)에 동기화하는 것 또한 제공할 수 있다. CPU 다이(246)는 다수의 AHB 마스터(405 및 406)에 대한 AHB 트랜잭션(330)을 처리하여 ASIC 다이(271) 상에서 ASIC 다이 AHB 트랜잭션(370)으로 리마스터되는 것이 가능하지만, 많은 구현은 단일 AHB 마스터(405)에 대한 서비스만을 구현할 수 있다. 많은 구현이 오직 하나의 마스터 인터페이스만을 구현할 수 있지만, ASIC 다이(271)는 다수의 AHB 마스터 인터페이스(437 및 436) 상으로 AHB 트랜잭션(370)을 리마스터할 수 있다.
트랜잭션 상호연결부(460)는 다음과 같은 다양한 서비스에 대한 동기화를 제공한다: AHB 버스 트랜잭션, PMU 상태 변경, DMA 및 IRQ 리폴링 및/또는 보안. 이것은, 트랜잭션 상호연결부(460)에 의해 I/O(355) 및 I/O(360)를 통해 연결되는 PHY(415) 및 PHY(426)를 포함하는 물리 계층 트랜잭션 브리지를 구현함으로써 달성된다. 이것은, CPU 다이 (246) 인터페이스 간의 트랜잭션 교환이 그들의 AISC 다이(271) 인터페이스와 동기화되는 것을 허용한다. 예를 들어, AHB 슬레이브 인터페이스(405 및 406)에 제시된 트랜잭션은 AHB 마스터 인터페이스(437 및 436) 상에서 적절한 유사한 트랜잭션으로 리마스터될 수 있다. 유사하게, PMU 트랜잭션 인터페이스(404)에 제시된 PMU 동작은 PMU 트랜잭션 인터페이스(438) 상에서 동등한 트랜잭션으로 리마스터될 수 있다. DRQ 동기화 로직(414)은 유사하게 인터페이스(448)를 사용하여 트랜잭션을 구현하여 인터페이스(465)를 통해 DRQ 동기화 로직(428)과 통신할 수 있다. IRQ 동기화 로직(451)은 인터페이스(449)를 사용하는 트랜잭션을 인터페이스(474)를 사용하는 IRQ 동기화 로직(431)에 구현할 수 있다. PHY(415)에 의해 시퀀싱되고 인코딩되는 것과 같은 트랜잭션 상호연결부(460) 상의 시그널링은, PHY(426)에 의해 디코딩되는 정보를 제공하여, 이것이 트랜잭션을 관련 인터페이스로 라우팅하는 것을 가능하게 한다. 일 실시예에서, 이 정보는 커맨드 단계 전송의 일부로서 인코딩된다. 이벤트 중계 상호연결부 NEVT(424)는 열거된 ASIC 다이 이벤트(375)를 CPU 다이 이벤트(335)로 전달하는 데 사용될 수 있다. 사용은 인터럽트 및 DMA 요청 어서션의 포워딩을 포함할 수 있다. 또 다른 사용은, PMU 동기화가 PMU 상태 변경 및 이벤트를 전파하거나 ASIC 다이(271)로부터 CPU 다이(246) 리셋을 강제하는 것이다.
인터럽트 요청 동기화는 ASIC 다이 IRQ 인터페이스(433) 상에서 검출된 인터럽트 요청을 CPU 다이 IRQ 인터페이스(475) 상의 대응하는 인터럽트 요청에 동기화하는 것에 책임이 있다. 이벤트 기반 인터럽트 유형을 사용하는 인터럽트의 경우, 이 동기화는 검출된 IRQ 활성화를 열거된 이벤트로 변환함으로써 이벤트 중계 상호연결부(424)만을 사용하여 달성될 수 있다. 레벨 기반 인터럽트 유형을 사용하는 인터럽트의 경우, 이 동기화는 트랜잭션 상호연결부(460)에 대한 액세스를 필요로 할 수 있다. 인터럽트 컨트롤러가 IRQ 상호연결부(475)에 대한 또는 구성 SFR 뱅크(417)의 프로그래밍으로 구성 정보를 제공하는 경우, 각 인터럽트 라인은 각 인터럽트에 대해 정확한 거동을 제공할 수 있다.
DMA 요청 동기화는 ASIC 다이 DMA 인터페이스(434) 상의 ASIC 다이(271) DMA 요청을 CPU 다이(246) DMA 인터페이스(407)의 대응하는 요청에 섀도잉하는 것에 책임이 있다. DMA 요청은 레벨 기반이므로, 상태 머신 쌍은 CPU 다이(246) DMA 요청 라인 레벨이 DMA 컨트롤러(212)의 필요성을 충족하기에 적절한지에 대한 지식을 보장하도록 조정한다. 이 기능을 구현하기 위해 트랜잭션 및 이벤트 통신 링크 모두에 대한 액세스를 가져야 한다.
일부 실시예에서, 예를 들어, 클록 스큐(skew) 또는 클록 주파수 차이를 처리하기 위해, 선택적 리타이밍 로직을 I/O(355) 및/또는 I/O(360)에 추가하는 것이 유리할 수 있다.
프로토콜은 다수의 상호연결부 폭으로 구현될 수 있고; 하나는 많은 수의 상호연결부를 구현하고 다이 대 다이 통신을 위한 메커니즘(들)로서 플립 범프 어셈블리에 더 적합하고, 다른 인터페이스는, 더 작은 볼 그리드 어레이를 가능하게 하는 것과 같은 구현을 위해 또는 본드-와이어 상호연결부 상황을 위해 상호연결부 카운트를 줄이도록 핀의 서브세트를 활용한다. 예시적인 더 큰 핀 리스트는 다음을 포함한다: NCLK(420)는 트랜잭션 상호연결부(460) 및 이벤트 중계 상호연결부(424)를 위한 단일 신호 및 마스터 인터페이스 클록이다. 또한, CPU 다이(426) 내부 로직 또는 클록 생성기 및 인터페이스 신호에 대한 타이밍 소스로 사용될 수 있다. 트랜잭션 상호연결부(460)는 다음을 포함할 수 있다: NPHASE(422), NDIO(421) 및 NRESP(423). NPHASE(422)는, 예를 들어, 단일 비트이며, NDIO(421) 커맨드/데이터 단계 제어를 제공할 수 있다. NDIO(421)은, 예를 들어, 32비트이며 커맨드/데이터 콘텐츠이다. NRESP(423)은, 예를 들어, 3비트이며, 슬레이브로부터의 트랜잭션 응답뿐만 아니라 흐름 제어를 제공할 수 있다. ASIC에서 CPU로의 이벤트 중계 상호연결부는 NEVT(424)를 포함한다. 이 인터페이스는 하나 이상의 전송 사이클에서 원하는 수의 열거된 이벤트를 코딩하는 데 적합한 폭일 수 있다.
이러한 신호는 인터페이스 클록 NCLK(420)에 의해 동기화될 수 있다. 일 실시예에서, 클록은 ASIC 다이(271)로부터 CPU 다이(246)로 제공될 수 있고, 다른 실시예에서, 클록은 CPU 다이(246)에 의해 ASIC 다이(271)로 제공될 수 있으며, 또는 두 다이가 또 다른 소스에 의해 제공될 수 있다. 일 실시예에서, 인터페이스 클록은, 예를 들어, 동일한 주파수 클록을 갖게 하거나 FCLK(402)가 NCLK(420)의 배수가 되도록 함으로써, CPU 다이(246) 클록 FCLK(402)(이는, 그 다이, 예컨대, HCLK의 버스 클록에 대한 소스임)에 동기화될 수 있다. 유사하게, ASIC 다이(271) 로직은 NCLK(420)에 동기화될 수 있다.
이러한 상호연결부 신호에 대해 이중 데이터 전송률(double-data-rate; DDR) 시그널링을 사용함으로써, 예를 들어, NCLK의 양쪽 에지 상에서 NDIO(421) 데이터를 전송함으로써, 상호연결부의 전부 또는 일부의 와이어 카운트를 감소시키는 것이 가능하다. NRESP(423) 및 NEVT(424)와 같은 다른 인터페이스 또한 DDR을 사용하여 상호연결부 카운트를 감소시킬 수 있다.
CPU 다이(246) FCLK(402)가 NCLK(420)의 배수인 경우, 클록 곱셈기(401)가 CPU 다이(246) 상에서 사용되어 NCLK(420)로부터 FCLK(402)를 생성할 수 있다. 다이 간 상호연결부의 타이밍을 조정하기 위해, 클록 곱셈기(401)는 FCLK(402)의 사이클 단위로 NCLK(420) 및 FCLK(402)의 단계 관계를 나타내는 신호를 CPU 다이 브리지(350)에 제공할 수 있다. 일 구현에서, 클록 곱셈기(401)는 다음 FCLK(402) 에지가 또한 NCLK(420)의 에지임을 나타내는 FCLK(402)에 동기화된 로직 신호 RE_STRB(416)을 제공할 수 있다. 시퀀서/PHY(415) 로직은 그 다음 이 신호를 사용하여 NCLK(420) 에지에서 발생하는 상호연결부 로직에/로직으로부터 업데이트를 조정할 수 있는 반면, CPU 다이(246)의 비-PHY 컴포넌트로의 시그널링은 FCLK(402) 레이트로 거동을 제공할 수 있다.
트랜잭션 상호연결부(460)를 통한 트랜잭션은 커맨드 단계 및 데이터 단계로 구현된다(데이터 단계를 갖지 않는 커맨드는 데이터 단계를 스킵한다). NDIO(421) 통신 인터페이스는 상태 기반(stateful) 양방향 드라이버로 만들어져 와이어 감소를 허용한다. 커맨드 단계 동안, 방향은 CPU 다이(246)로부터 ASIC 다이(271)로이다. 커맨드 단계 콘텐츠는, 데이터 단계를 필요로 하는지 여부와, 그렇다면, 데이터 방향이 무엇이어야 하는지를 PHY(426)에 표시하도록 코딩된다. 커맨드는 원하는 트랜잭션의 종류와 그 트랜잭션에 대한 관련 세부 사항, 예를 들어, AHB 주소 단계 정보 또는 구현될 원하는 비-AHB 트랜잭션에 대한 정보를 나타낸다. AHB 버스 트랜잭션을 구현하는 트랜잭션의 경우, 이는 주소, 판독/기록, 전송할 바이트 수, 전송의 액세스 권한 등을 포함한다. 다른 트랜잭션은 열거된 필드를 갖는 커맨드 단계 코딩을 사용하여 어떤 종류의 전송을 표시할 수 있고, 나머지 커맨드 데이터는 그 열거된 커맨드 유형에 따라 디코딩된다. 데이터 단계는 트랜잭션의 페이로드를 포함한다(커맨드 단계 콘텐츠가 데이터 단계가 수행되어야 함을 나타내는 커맨드의 경우).
이러한 트랜잭션 상호연결부(460) 트랜잭션은 양방향 NDIO(421) 신호 및 ASIC에서 CPUNRESP(423)로의 신호로 구현될 수 있다. NDIO(421)는 커맨드 및 데이터 단계 콘텐츠를 전파하는 반면, NRESP(423)는 주로 데이터 단계 흐름 제어와 함께 데이터 단계 응답(예를 들어, OK, ERROR)을 제공하지만, 커맨드 단계 동안에는 선택적으로 ASIC에서 CPU로 다른 정보를 제공하는 데 사용될 수 있다. 버스트 트랜잭션 및 동기화를 용이하게 하기 위해, 추가 신호 CPU에서 ASIC로의 신호 NPHASE(422)가 사용될 수 있다.
BUS 트랜잭션에 할당된 상호연결부의 수는 비용 대 대기 시간의 균형(tradeoff)을 맞추기 위해 조정될 수 있다. NDIO(421)를 통한 커맨드 및 데이터 단계 전송의 (예시적인) 원시 폭은 32비트이다. (CPU에) 어떠한 주목할만한 대기 시간 없이 32-비트 AHB(또는 다른 파이프라이닝된) 인터페이스를 구현하는 일 실시예에서, NDIO(421)는 32-비트 폭(wide)이 될 수 있다. 파이프라이닝된 CPU 버스가 이전에 발행된 커맨드 단계에 대한 데이터 단계를 폐기하는 동시에 '다음' 데이터 단계에 대한 커맨드 단계 트랜잭션을 발행하기 때문에 낮은 대기 시간이 달성된다. 따라서, 주변 장치 액세스를 위한 커맨드 단계와 데이터 단계는 상이한 버스 클록 사이클에서 발생하므로, NDIO 상호연결부는 하나의 NCLK 사이클에서의 커맨드 전송과 후속 사이클에서의 관련 데이터 전송에 대해 사용될 수 있다. 컴파일된 코드의 정상적인 거동으로 인해, CPU가 두 개의 순차적 사이클에서 비메모리 주소에 액세스하는 것은 거의 불가능하다(CPU가 다음 액세스 주소를 계산할 필요성이 있기 때문이다). 일 실시예에서, 커맨드 단계 동안, 최대 32비트의 커맨드 단계 콘텐츠가 NDIO 상호연결부(421) 상의 CPU 다이(246)에 의해 제공되어 ASIC 다이(271)에 지시할 수 있다. 커맨드가 데이터 단계를 나타내는 경우, ASIC 및 CPU 모두 다음 데이터 단계에 대한 데이터 방향을 조정하고 (최대 32-비트) 데이터는 32개의 NDIO(421) 신호를 데이터 단계로 사용하여 전송된다.
일 실시예에서, AHB 버스 동작을 구현하기 위해, 커맨드 단계 콘텐츠는, 판독/기록 데이터 방향을 위한 1 비트; 데이터 전송 크기를 위한 2 비트(8,16,32 또는 특수 비트 수); 20 비트의 액세스 주소(1MB)로 할당될 수 있다. 이는 상호간에 이해되는 일부 ASIC 다이 기본 주소로부터의 주소 오프셋 및/또는 전송에 대한 최대 9-비트 추가 정보로 취급될 수 있다.
이용 가능한 커맨드 또는 주소 공간을 확장하기 위해, 제1 커맨드 버스 사이클에 코딩된 정보는 두 번째 버스 사이클에 대한 필요성을 나타낼 수 있다. 이 실시예에서, 결합된 64 비트의 확장된 커맨드 콘텐츠가 전송될 수 있다. 예를 들어, 위의 예시에서 추가 예약(reserved) 비트 중 하나는 기본 주소로부터 1MB 이상의 오프셋을 갖는 주소를 나타내는 데 사용될 수 있다. 주소의 20개의 LSB는 여느 때처럼 제1 커맨드 사이클에서 전송될 수 있으며, 두 번째 버스 사이클은 나머지 MSB를 전송하는 데 사용된다. 브리지의 CPU 측은 CPU의 버스 주소 오프셋을 검사할 수 있으며, 20비트로 표현될 수 있는 경우 더 효율적인 단일 사이클 커맨드를 발행할 수 있다. 그렇지 않으면, 두 번째 사이클이 필요하다는 것을 나타내고 나머지 정보를 제공할 수 있다. 가장 일반적으로 사용되는 주소를 하위(lower) 1MB에 위치시키기 위한 ASIC 다이(271)의 주소 공간의 배열에 의해, 대부분의 액세스는 그 다음 더 짧은 커맨드 버전을 사용하는 것이 가능해질 것이다. 유사하게, 추가 전송 정보에 대해 이용 가능한 비트는 다양한 AHB 주소 단계 신호에 대한 일부 가능성을 인코딩하기에 충분하지 않다. 추가 커맨드 콘텐츠를 제공하기 위해 추가 커맨드 단계 사이클을 추가할 필요가 있음을 코딩 중 하나가 나타내도록, 이러한 비트를 코딩하는 것에 의해, 다른 단일 사이클 코딩이, 이러한 AHB 신호에 대해 가장 일반적으로 사용되는 값을 표현하기 위해 사용될 수 있으므로, 두 번째 커맨드 단계 전송은 드물게만 요구될 것이다.
확장된 및/또는 대안 커맨드를 나타내는 또 다른 접근 방식은, 정상 커맨드 신호 중 하나 이상의 코딩되지 않은 값을 활용하여 대안적인 커맨드 포맷을 나타내는 것이다. 예를 들어, 위의 예시에서, 전송 크기에 대한 세 개의 가능성을 표현하기 위해 사용되는 두 개의 비트가 있다. 이 2-비트 코딩의 4번째(그렇지 않으면 위법인) 값을 사용하는 것은, 전체 커맨드 코딩이 대안적인 방식으로 처리되어야 한다는 신호를 보낼 수 있다. 이는 버스 전송에 대한 더 많은 또는 상이한 정보를 제공하는 데 사용될 수 있을 뿐만 아니라 버스 동작(CTRL 커맨드)으로부터 매핑되지 않은 CPU 다이(246)에 의해 개시된 트랜잭션에 관여하는 데에도 사용될 수 있다. 예를 들어: PMU 상태 변경 표시가 CPU에서 ASIC으로 신호를 보낼 수 있다. 이러한 CTRL 트랜잭션은 코딩을 가질 수 있으므로 코딩의 일부 서브세트에 대해 데이터 단계가 스킵될 수 있다. 이는 빈번하지만 간단한 CTRL 트랜잭션이 커맨드 버스 사이클만 사용하는 것을 허용할 수 있으며, 이는 버스에 소요되는 시간을 줄일 수 있다. 다른 CTRL 코딩은 데이터 단계를 표시할 수 있고 그 트랜잭션과 관련된 데이터를 전송하기 위해 데이터 전송을 수행할 수 있다.
커맨드 단계는 전송에 대한 특별한 보안 또는 시퀀싱 정보를 제공할 수 있다. 특정 버스 트랜잭션은 CPU 다이 상에서 특정 실행 권한 및/또는 특정 허가된 버스 마스터로 실행되는 코드에 대해서만 허가될 수 있다(예컨대, CPU1에 의해서만 구현될 수 있으므로, CPU2 및 DMA 컨트롤러(212)는 허가되지 않음). 이러한 특수 허가가 필요한 버스 트랜잭션의 경우, 브리지의 CPU 측은 이러한 조건이 CPU 다이(246) AHB 슬레이브 인터페이스(405) 상에 존재하는 것으로 관찰할 수 있고, 확장된 커맨드 사이클을 활용하여 이 추가 트랜잭션 정보를 ASIC 다이 AHB 마스터 인터페이스(437)로 전파하기 위해 통신할 수 있다.
커맨드 단계가 실행되면(그리고 커맨드 코딩이 데이터 단계를 나타내는 경우), NDIO(421) 신호는 데이터를 전송하는 데 사용될 수 있다. 데이터 방향이 ASIC에서 CPU(판독)인 경우, 커맨드 단계가 완료된 후 두 다이가 NDIO(421) 상에서 데이터 방향을 변경한다. 그 다음, 데이터 전송은 하나 이상의 사이클을 사용하여 연관된 데이터를 전송할 수 있다. 전형적인 32-비트 단일 버스 전송을 구현하기 위해, 32-비트 NDIO(421) 버스는 하나의 데이터 단계 사이클에서 이를 완료할 수 있다. 더 많은 데이터를 전송하기 위해, 더 큰 크기의 데이터를 나타내기 위해 변형 커맨드가 사용될 수 있다. 그 다음, 두 다이 모두 충분한 버스 사이클을 사용하여 표시된 양의 데이터를 전송할 것이다. 이는, 큰 페이로드를 갖는 CTRL 전송, 버스 버스트 전송, 32-비트 단어 크기보다 큰 전송(예컨대, 64-비트 원자 전송)에 대해 사용될 수 있다.
상호연결부 폭을 더 줄이기 위해, 커맨드 및 데이터 단계 전송을 더 작은 NDIO(421) 상호연결부 폭의 다수의 전송으로 직렬화하여 버스 사이클을 상호연결부 카운트와 교환하는 것이 가능하다. 예를 들어, 8-비트 NDIO(421)가, 32-비트 커맨드를 4사이클로 전송하고 32-비트 데이터를 4사이클로 전송하는 데 사용될 수 있다. 전송은 다수의 NDIO(421) 사이클을 수반하므로, CPU는 직렬화를 통해 기다려야 하거나 및/또는 NDIO(421) 데이터 레이트는 CPU 버스 레이트보다 높아야 한다. 양 측에서 동일한(또는 유사한) 커맨드 및 데이터 포맷이 사용될 수 있으며, 이는 상이한 상호연결부 카운트를 갖는 구현이 서로 동일한 제공된 피처를 갖는 것을 허용할 수 있다. 트랜잭션에 대한 추가의 대기 시간 외에, PHY(415 및 426), I/O(355 및 360) NDIO 상호연결부(421)를 제외한 양 측 다이에 대해 어떤 것도 변경할 필요가 없다.
직렬화에 대한 개선은, 32-비트보다 작은 전송 크기를 나타내기 위해 커맨드 스테이지에 인코딩된 데이터 크기 정보를 활용하는 것이다. 예를 들어, 8-비트 또는 16-비트 전송이 표시되는 경우, 데이터 단계 사이클의 수는 8-비트 NDIO(421) 상호연결부 폭에 대해 각각 1 또는 2가 될 수 있다.
커맨드 단계에서도 유사한 개선이 이루어질 수 있다. 커맨드의 상이한 길이 변형을 생성하는 것에 의해, 브리지는 원하는 트랜잭션을 인코딩하는 가장 짧은 길이의 코딩을 선택할 수 있다. 예를 들어, 16 비트, 24 비트, 및 32 비트의 커맨드가 활용될 수 있다. 32-비트 변형은 32개의 상호연결부가 사용된 경우와 유사하게 커맨드를 인코딩할 수 있는 반면, 더 짧은 것은 서브세트만 인코딩할 수 있다. 그 다음, 커맨드는 그 커맨드 폭을 전송하는 데 필요한 사이클 수로 직렬화될 수 있다. 예를 들어, 8-비트 NDIO(421) 상호연결부 폭을 사용하면, 16-비트 커맨드를 전송하는 데 2사이클이 사용될 수 있다.
ASIC 다이(271)에 커맨드 폭을 표시하기 위해, 커맨드 폭을 표시하기 위해 제1 커맨드 사이클에서 일정 수의 비트를 충당(devote)하는 것이 가능하다. 16/24/32 폭 변형의 경우, 이것은 세 가지 변형에서 이 정보를 위해 제1 전송 단계의 2 비트를 사용할 것이고, 14/22/30 비트의 유용한 비트가 커맨드 콘텐츠에 남겨진다. 대안적인 구성은 두 번째 사이클에서 전용 비트를 사용하여 세 번째 사이클의 필요성을 나타낼 수 있고, 세 번째 사이클에서 유사한 비트를 사용하여 4번째에 대한 필요성을 나타낼 수 있다. 이것은 15/22/30 비트의 유용한 커맨드 콘텐츠를 허용할 것이다. 제3 구성은 커맨드 길이를 통신하는 데 일반적인 NDIO(421) 신호 중 어느 것도 사용될 필요가 없도록 전용 신호 CPU에서 ASIC 신호로의 NPHASE(422)를 사용하여 계속되는 커맨드 단계를 나타낼 수 있다. 각 커맨드 단계 사이클의 종료에서, ASIC 다이 PHY(426)는 NPHASE(422)를 검사하여 추가 커맨드 단계 직렬화가 필요한지 여부를 결정할 수 있다. NPHASE(422)가 커맨드 단계의 비지속을 나타내는 제1 커맨드 단계 사이클에서, ASIC 다이(271)는 커맨드 폭을 알고 데이터 단계로 이동할 수 있다(커맨드가 데이터 단계를 나타내는 경우).
NRESP(423)는 NDIO(421) 커맨드/데이터 단계에 동기화된 ASIC에서 CPU로의 응답 시그널링 경로이다. NRESP(423)에 대한 전형적인 폭은 3 비트일 수 있다. 직렬화된 버전에서, 이것은 2(예를 들어, 16, 8개의 NDIO 와이어를 사용하는 때) 또는 1(예를 들어, 4개 이하의 NDIO 와이어를 사용하는 때)로 감소될 수 있다. 데이터 단계 동안, NRESP(423)는 버스 데이터 이외의 정보를 제공하기 위해 ASIC으로부터 CPU로 표시를 제공하는 데 사용된다. 예를 들어, ASIC 주변 장치가 버스 오류를 나타내는 경우, 데이터가 전송될 때와 동일한 버스 사이클에서 ERR 응답이 제공될 수 있다. 성공적인 트랜잭션을 나타내기 위해, 데이터와 동일한 사이클에 OK 응답이 제공될 수 있다. 데이터가 전송될 수 있기 전에 더 많은 시간을 필요로 하는 슬레이브의 경우, STL 응답이 제공될 수 있으며, 이는, 그 다음, 데이터 단계를 다음 사이클로 지연시킬 것이다. 데이터 단계의 일부로서 ASIC으로부터 CPU로 전달되어야 하는 다른 관련 정보 또한 인코딩될 수 있다.
NRESP에 대한 3-비트(단일 사이클) 인코딩의 예시는 아래 표 1에 도시되어 있다.
코딩 명칭 의미
100 STL ASIC 주변 장치가 이 사이클에서 데이터 단계를 완료할 준비가 되지 않음
001 OK ASIC 주변 장치가 트랜잭션을 수락함
011 OKDN ASIC 주변 장치가 DMA 디어서션 힌트로 트랜잭션을 수락함
110 SPL ASIC 주변 장치가 트랜잭션 완료 없이 NDIO 상호접속부를 산출함
000 ERR ASIC 주변 장치가 트랜잭션 오류를 나타냄
000 IDL NDIO 커맨드 단계 동안 NRESP 표시
커맨드 단계 동안, NRESP(423)는 다른 목적을 위해 사용될 수 있다. 브리지의 양 측이 커맨드/데이터 단계를 인식하기 때문에, 동일한 비트 패턴이 커맨드 및 데이터 단계 동안 상이한 개념을 인코딩하는 데 사용될 수 있다. 이를 위한 일부 사용은, 위법 커맨드가 발행되었음을 나타내기 위한 것일 수 있고, 커맨드 스톨(ASIC이 새로운 커맨드를 수신할 준비가 되지 않음), 및 특정 종류의 데이터 또는 연산이 준비되었다는 것과 같은 표시와 유사한 이벤트를 나타내기 위한 것일 수 있다.
NDIO(421) 시그널링이 다수의 사이클로 직렬화되는 경우, NRESP(423) 시그널링 또한 직렬화되는 것이 가능할 수 있다. 예를 들어, 8개의 상호연결부가 있는 NDIO(421)에 대해 2 비트가 사용될 수 있다. 이들은 아래 표 2에 도시된 바와 같이 코딩될 수 있다.
첫 번째 사이클 두 번째 사이클 의미
00 <N/A> STL. 데이터가 실제로 다음 버스 사이클을 시작할 것임
01 <N/A> OK. ASIC 주변 장치가 트랜잭션을 수락함
11 <N/A> OKDN. ASIC 주변 장치가 DMA 힌트로 트랜잭션을 수락함
10 00 SPL. 주변 장치가 버스를 산출함
10 10 ERR. 주변 장치가 액세스 오류를 나타냄
10 <N/A> IDL. NDIO 커맨드 단계 동안 NRESP 표시
이 코딩에서, 하나의 특수 응답 STL은 제1 데이터 사이클에서만 다음 버스 사이클에서 데이터를 재시작하기 위한 특수 코드로서 사용될 수 있는데, 이는 ASIC이 아직 데이터를 전송할 준비가 되지 않았기 때문이다. 다른 응답 중 두 개는 그 사이클의 응답 코드를 완전하게 나타낸다. 네 번째 코드는 다양한 다른 응답 가능성들 간의 차이를 분명히 보여주기 위해 추가 사이클이 필요하다는 것을 나타내는 데 사용된다. 두 번째 버스 사이클은, 그 다음, 이 응답을 전달하기 위해 데이터 단계에 대해 사용되어야 한다(8-비트 NDIO 상의 8-비트 전송에 대해서와 같이 데이터 단계가 제1 사이클에서 완료되었을 수도 있는 때에도). 더 긴 직렬화를 사용하여 드문 응답만 인코딩함으로써, 첫 번째 버스 사이클에서 가능한 응답을 신호 보내는 데 요구되는 상호연결부를 절약하면서 추가적인 데이터 단계 대기 시간이 대부분 회피될 수 있다.
또한, 매우 저비용의 구현이 바람직한 경우에서, 트랜잭션 상호연결부 NDIO(421) 및 NRESP(423)를 겨우 2개의 와이어로 구현하는 것이 가능하다. 일 구현에서, NDIO(421)는 유휴 상태를 가질 수 있고, 이에 의해 직렬화된 NDIO(421) 커맨드의 시작이 시작 비트에 의해 표시될 수 있다. 시작 비트가 전송된 후, NDIO(421) 커맨드의 나머지가 직렬화될 수 있다. 일 구현에서, 직렬화할 커맨드 비트의 수는 고정된 수일 수 있으며, 이에 의해 ASIC 다이(271)는 시작 비트 이후에 수신된 커맨드 비트의 수를 카운트하여 커맨드 단계의 종료를 결정할 수 있다. 개선은 가변 길이 커맨드 단계를 사용할 수 있으며, 여기서 커맨드 단계의 이전 비트에서의 코딩은 총 커맨드 비트 수와 그들의 의미를 나타낼 수 있다. 커맨드 단계 이후, 데이터 단계는 비트당 하나의 클록 사이클을 사용하여 직렬화할 수 있다. 데이터 단계는, 그 다음, 커맨드 단계 커맨드에 표시된 비트 수를 그 커맨드에 의해 표시된 데이터 방향으로 직렬화함으로써 진행될 수 있다. NRESP(423)는 또한, 단일 와이어를 통해 직렬화될 수 있다. 커맨드 단계 이후에, 판독 트랜잭션 데이터 단계의 시작 부분에 있는 NRESP(423) 비트는, 예를 들어, 스톨링을 위해 NRESP(423) 상에 높은 레벨을 표시하는 것에 의해, 스톨 여부를 나타낼 수 있다. 스톨이 요구되지 않은 경우 NRESP(423)의 제1 데이터 단계 사이클은 비-스톨링 레벨을 나타낼 수 있으며 데이터 단계는 그 사이클에서 직렬화를 시작할 수 있다. 스톨이 요구되는 경우, 스톨링 레벨로 NRESP(423)을 구동하여 데이터가 이용 가능할 수 있게 되는 데 필요한 사이클 수만큼 ASIC 다이(271)가 스톨된다. 그 다음, 비 스톨링 레벨을 구동함으로써 스톨이 제거될 수 있으며, 이에 의해 데이터 직렬화가 시작될 수 있다. 데이터 직렬화 동안, NRESP(423)의 다양한 상이한 코딩은 상이한 후속 비트 시퀀스에 의해 직렬화될 수 있다. 기록 트랜잭션의 경우, 스톨링 메커니즘은 대신 유사한 방식으로 마지막 데이터 단계 직렬화 사이클을 확장할 수 있다.
유사한 메커니즘을 사용하면, 브리징 대기 시간과 상호연결부 카운트 사이의 균형을 맞추기 위해, 브리징 피처를 보존하면서 트랜잭션 상호연결부를 위해 2개보다 적지 않은 임의의 수의 와이어가 사용될 수 있다.
트랜잭션 상호연결부 브리징은 버스트 지원을 추가함으로써 개선될 수 있다. AHB를 포함한 많은 버스 프로토콜은 버스트 전송에 대한 지원을 제공하며, 여기서 일련의 관련 주소가 순서대로 트랜잭션된다. 이는 종종 캐시 컨트롤러 및 DMA 컨트롤러(212)에 의해 사용된다. 또한, 드문 경우에, CPU 자체가 명시적 버스트로서인지 단지 버스트와 동일한 시퀀스에서인지에 관계 없이, 연속적인 클록 사이클에서 순차적인 주소에 대해 트랜잭션을 개시하는 것도 가능하다. 게다가, 일부 버스 슬레이브는, 동일한 메모리 주소에 대한 각 액세스가 슬레이브에 의해 기록/판독 액세스 각각을 위한 FIFO 인큐잉/디큐잉으로 변환되는 FIFO 중인(FIFOing) 주소를 구현할 수 있다. 이러한 종류의 슬레이브의 경우, 버스트에서 다수의 FIFO 항목을 인큐/디큐하는 것이 바람직할 때 이 동일한 주소에 대한 몇몇 순차적 액세스를 갖는 것이 일반적이다. DMA 컨트롤러(212)에 의해 구현될 때, 비증분 주소를 갖는 이 버스트는 DMA 채널 구성의 일부가 될 것이다. 소프트웨어에 의해 직접 수행되는 경우, 이는 CPU에 의해 발행된 버스 트랜잭션의 시퀀스를 관찰되는 것에 의한 사실 후에만 명백해질 것이다. 이러한 경우, NDIO(421) 상호연결부를 사용하여 단일 커맨드 전송에 대해서만 응답하는 다수의 관련 데이터 전송을 수행하기 위한 메커니즘(들)을 제공하는 것이 바람직하다. 이와 달리, 모든 데이터 전송 후에, 버스트에서의 다음 트랜잭션에 대한 커맨드 단계를 제공하기 위해 NDIO 상호연결부가 사용되어야 할 것이며, 이는 버스트에 대한 NDIO(421) 전송 레이트를 절반으로 줄인다.
버스트 전송을 달성하기 위해, 추가적인 CPU에서 ASIC으로의 상호연결부 신호 NPHASE(422)가 도입될 수 있다. 이 신호는 슬레이브에게 다음 상호연결부 클록 사이클이 데이터 단계가 될 것으로 예상되는지 여부를 나타낸다. ASIC 다이(271)는 이 신호를 수신하고, 데이터 단계 동안 어서트될 때, 다음 상호연결부 버스 사이클이 현재 데이터 단계로부터 버스트 연속이어야 함을 이해한다. 그 다음, 그것의 버스 마스터 인터페이스(436 또는 437) 상에서 새로운 커맨드 단계를 발행하여, NDIO(421) 상에 추가 커맨드 단계 표시를 요구하지 않고 버스트를 계속할 수 있다. 스톨이 적절히 처리되는 것을 허용하기 위해, NRESP(423)이 STL인 데이터 단계의 경우, CPU 다이 브리지(350)와 ASIC 다이 브리지(365) 모두 NRESP가 어서트되었는지 여부에 관계없이 데이터 단계를 계속한다. 이는 버스트가 계속될지 여부에 관계없이 데이터 단계가 이 슬레이브 스톨을 지나서 확장되어야 하기 때문이다. NDIO(421) 상의 커맨드 단계는 하나의 버스트 트랜잭션으로부터 그것의 연속으로 버스 트랜잭션을 조정하는 방법에 대한 정보를 제공할 수 있다. 증분되는 트랜잭션을 갖는 것이 더 일반적이므로, 디폴트 커맨드 포맷은 이 거동으로 디폴트가 될 수 있다. 증분은 전형적으로 각 전송의 크기만큼 이전 주소를 지나 전진하기 위해 적절한 양만큼 주소를 추가하는 것을 의미한다. 따라서, 예를 들어, 16-비트 전송이 HSIZE를 사용하여 AHB 버스 상에 표시되는 경우, AHB는 바이트 어드레싱을 사용하므로, 증분은 이전 주소로부터 이것에 2를 더하는 것일 것이다. 커맨드 변형은 FIFO 주소에 대한 비-증분 트랜잭션 또는 캐시 유사 동작에 대한 래핑(wrapping) 트랜잭션과 같은 다른 유형의 업데이트 거동을 나타내기 위해 제공될 수 있다.
CPU 다이 브릿지(350)는 또한, 예를 들어, CPU 다이 브리지(350) 상에 다수의 AHB 슬레이브 포트를 제공함으로써, 다수의 AHB 마스터에 대한 액세스를 제공하도록 구성될 수 있다. 예시적인 구현은, AHB 인터페이스(405)를 통해 CPU에 의해 마스터되는 버스에 대한 버스 슬레이브 인터페이스를 제공하고, AHB 인터페이스(406)를 통해 DMA 컨트롤러에 의해 마스터되는 버스 슬레이브 인터페이스에 대한 또 다른 버스 슬레이브 인터페이스를 제공한다.
AHB 인터페이스(405) 상의 CPU 및 AHB 인터페이스(406) 상의 추가 버스 마스터에 의해 발행된 트랜잭션과, PMU 인터페이스(404)와 DMA 인터페이스(407)와 같은 메모리 매핑된 트랜잭션과 무관한 특수 BUS 트랜잭션 사이의 트랜잭션 상호연결부를 중재하기 위해, 아비터(arbiter)(418)가 제공될 수 있다. 이러한 다양한 서비스가 트랜잭션을 위해 트랜잭션 상호연결부에 대한 액세스를 요청함에 따라, 아비터는 경합의 경우에 소스 중 하나를 다른 소스에 비해 우선적으로 처리(prioritize)할 수 있다. 엄격한 우선순위 지정(prioritization)에 의해, 라운드 로빈 서비스(round-robin servicing)에 의해, 보장된 최대 대기 시간 스케줄링에 의해, 이러한 기법의 조합에 의해, 또는 기타 적절한 방법에 의해, 이것을 수행할 수 있다. 선택된 서비스는, 그 다음, 인터페이스(457)를 사용하여 PHY(415)에 대한 액세스가 허용될 수 있다. 일부 구현에서, CPU는 그것의 구성 SFR(레지스터) 뱅크(417)에서 특수 기능 레지스터를 제공받음으로써 중재 방법에 영향을 미칠 수 있다. 다수의 서비스가 액세스를 요청할 때, 아비터(418)에 의해 일시적으로 액세스가 거부된 서비스는 서비스가 제공될 때까지 서비스의 요청된 트랜잭션을 지연시키기 위한 스톨 표시를 제공받을 수 있다.
CPU 다이 브리지(350)가 405 및 406와 같은 다수의 버스 상에서 슬레이브로서 동작하도록 구성된 구현의 경우, ASIC 다이(271) 상의 느린 주변 장치가 ASIC 다이(271) 상의 AHB 버스(437) 상에서의 트랜잭션의 완료를 불필요하게 스톨시킬 수 있는 것이 가능할 수 있다. 이것은, NRESP(423)가 다수의 사이클에 대해 STL을 표시할 상황을 생성할 것이고, 이는 데이터 전송에 대한 어떠한 진전 없이 트랜잭션 상호연결부를 점유한다. 이러한 경우에서 성능을 개선하기 위해, ASIC 브리지(365)는 추가 버스 마스터 포트(436)를 구현하여 두 번째 ASIC 다이 AHB 버스를 마스터할 수 있다. AHB 버스 마스터(437) 상의 트랜잭션이 완료되는 데 다수의 사이클이 소요될 경우, 그 트랜잭션에 대한 NDIO(421) 데이터 단계 동안 SPLIT의 NRESP(423) 표시가 표시될 수 있다. 이 표시는, CPU 다이 브리지(350)로 하여금 이를 해결하지 않고 상호연결부 BUS 트랜잭션을 종료시키게 한다. ASIC 다이 브리지(365)는 버스 슬레이브가 트랜잭션을 완료할 때마다 AHB 트랜잭션 결과를 그것의 메모리에 저장하는, AHB 버스(437) 상에서의 동작이 계속될 수 있도록 그것의 AHB 버스 마스터 인터페이스 상에서 이 일시 중지된 동작을 계속 마스터한다. 한편, 아비터(418)는 관련 없는 트랜잭션에 대해 또 다른 NDIO(421) 커맨드 단계를 발행할 수 있다. 그러한 트랜잭션이 발생하고 이 트랜잭션이 AHB 버스 슬레이브를 타겟으로 하는 경우, 이 트랜잭션은 그것의 대안적인 버스 마스터 인터페이스(436)를 부르는 버스 동작으로서 ASIC 다이 브리지(365)에 의해 발행될 수 있다. 일부 적합한 시점에, 아비터(418)는 이전에 일시 중지된 트랜잭션에 대한 데이터 단계를 재개하기 위해 NDIO(421) 커맨드 변형 JOIN을 발행할 수 있다. 이때까지 버스 마스터(437) 상의 트랜잭션이 성공적으로 완료된 경우, 데이터 단계 응답은 브리지의 메모리에 저장된 결과로부터 전달된다. 버스 마스터(437) 상의 트랜잭션이 여전히 보류 중인 경우, 데이터 단계는 SPLIT이 한 번도 발생하지 않은 경우와 유사하게 재개된다.
트랜잭션 상호연결부를 사용한 트랜잭션은 CPU 다이(246)가 ASIC 다이(271)와 연관된 상호작용을 개시하기에 충분한 메커니즘(들)을 제공한다. 특정 경우에, ASIC 다이(271)는 그 자체의 상호작용을 개시할 수 있다. 이러한 이유로, NEVT 상호연결부(424)를 사용하는 이벤트 중계가 사용된다. NEVT(424)는 ASIC 다이(271)에 의해 구동되며, 이는 CPU 다이(246)로 메시지를 전송하는 데 사용할 수 있다. 이러한 메시지는 전형적으로 사전 정의된 열거된 세트로부터의 선택된 형태이다. 전형적인 메시지는 ASIC 다이(271)에 대한 인터럽트 활동, ASIC 다이(271)에 대한 DMA 요청 활동, ASIC 다이(271)에 대한 PMU 상태 변경 등을 나타낼 수 있다. ASIC 다이(271)가 상호작용의 일부로서 열거되지 않은 데이터를 추가로 제공해야 하는 경우, 트랜잭션 상호연결부를 통해 이벤트 수신자와의 조정은 페이로드 전달을 스케줄링할 수 있다. 대안적으로, 열거된 프리앰블에 이어서 NEVT(424)를 통해 전송되는 임의의 데이터의 다수의 사이클을 제공하는 것이 가능하다.
잠재적인 열거된 이벤트의 수가 상대적으로 많기 때문에, NEVT(424) 상호연결부의 수를 작게 유지하기 위해, NEVT(424) 시그널링은 직렬화된 메시지로 구현될 수 있다. 예시적인 구현에서, 예를 들어, 5개의 와이어와 2개의 연속적인 클록 전송 사이클을 사용하여 직렬화된 이벤트 메시지로 NEVT(424)가 구현될 수 있다. 예외는, 이벤트가 없음을 나타내는 단일 사이클 의사-이벤트(pseudo-event) IDLE인 특수 코딩(예컨대, 모두 0)이다. 이 코딩 하에서, NEVT(424) 전송의 첫 번째 사이클에 대한 31개의 가능한 값과 두 번째 사이클에 대한 32개의 가능한 값이 있으며, 총 992개의 가능한 이벤트가 있다. 상이한 와이어 수와 상이한 직렬화 길이를 갖는 다른 구현이, 와이어 수, 직렬화의 대기 시간 및 가능한 이벤트 수 사이의 균형을 최적화하기 위해 사용될 수 있다. 또한, 더 일반적으로 사용되는 이벤트 및/또는 더 낮은 대기 시간을 원하는 이벤트가 더 짧은 직렬화 길이로 표시될 수 있도록 가변 길이 이벤트 코딩을 사용하는 것이 가능한 반면, 여전히 더 긴 직렬화 길이가 더 긴 직렬화의 페널티를 갖는 가능한 이벤트 수를 증가시키는 것을 허용한다. 또 다른 구현은 시작 비트와 N 비트 시퀀스가 있는 오직 하나의 와이어만 사용하여 2N개만큼 많은 상이한 이벤트를 전송한다. 동기화 부족으로 인한 가능한 문제를 피하기 위해, 재동기화하기 위해 하나의 시퀀스와 또 다른 시퀀스 사이의 가드밴드가 최소화되도록 다수의 트레일링(trailing) 0을 갖는 시퀀스를 피하기 위해 N-비트 시퀀스가 코딩될 수 있다.
일 실시예에서, EVENT 전송은 가능한 이벤트의 수를 증가시키기 위해 선택적으로 직렬화될 수 있다. 일 실시예에서, 5개의 와이어는 와이어 중 하나를 첫 번째/두 번째 전송 스테이지 표시로 사용하고, 다른 4개의 와이어를 첫 번째 및 두 번째 데이터 니블(nibble)로 사용함으로써 256개의 이벤트를 제공할 수 있다. 또 다른 실시예에서, 시작 비트와 N 비트 시퀀스가 있는 오직 하나의 와이어만 사용되어 2N개만큼 많은 상이한 이벤트를 전송한다. 동기화 부족으로 인한 가능한 문제를 피하기 위해, 재동기화하기 위해 하나의 시퀀스와 또 다른 시퀀스 사이의 가드밴드가 최소화되도록 다수의 트레일링 0을 갖는 시퀀스를 피하기 위해 N 비트 시퀀스가 코딩될 수 있다.
EVENT 대기 시간/대역폭이 더 낮은 상호연결부 카운트보다 덜 중요할 수 있는 경우에서, 단일 상호연결부 세트를 사용하여 NRESP(423) 및 NEVT(424) 기능을 모두 수행하는 것이 가능하다. 이는 공유된 NEVT(424)/NRESP(423) 상호연결부의 목적이 트랜잭션 상호연결부(460) 상의 트랜잭션 상태의 함수가 되는 것으로 함으로써 수행될 수 있다. 데이터 단계 응답을 형성하기 위해 NRESP(423) 표시가 요구되는 시간 동안, 두 브리지는 NRESP(423) 통신을 위해 공유된 NEVT(424)/NRESP(423) 상호연결부를 사용할 수 있다. 이것이 발생할 때 NEVT(424) 이벤트가 직렬화되고 있는 경우, 두 브리지는 NRESP(423) 통신의 지속기간 동안 NEVT(424) 직렬화를 일시 중지하는 것을 이해할 수 있다. NRESP(423) 콘텐츠가 통신되면, 두 브리지는 NEVT(424) 목적을 위해 공유된 상호연결부 사용을 재개할 수 있고, 일시 중지가 발생했을 때와 동일한 위치에서 직렬화를 계속할 수 있다.
트랜잭션 상호연결부(460)와 NEVT 상호연결부(424)의 조합을 사용하여, IRQ 표시가 ASIC 다이(271)로부터 CPU 다이(246)로 전파된다. ASIC IRQ 상승 에지(활성화)는 ASIC 다이(271) 상의 IRQ 동기화 로직(431)에 의해 검출되고 NEVT(424) 상호연결부 텔레그램, 이벤트 또는 메시지로 변환되어 CPU 다이(246)에 알린다. IRQ 동기화 로직(431)은 인터페이스(470) 상에서 요청을 제공함으로써 이러한 NEVT 통신을 요청할 수 있다. 다른 NEVT 활동으로 인해 이 텔레그램의 전송을 위해 NEVT 상호연결부가 즉시 이용 가능하지 않을 수 있으므로, IRQ 동기화 로직(431)은 그 인터럽트에 대한 레지스터를 구현하여 NEVT 아비터/다중화기(430)가 이 액세스를 허락할 때와 같이 나중에 이 텔레그램을 전송할 필요성을 나타낼 수 있다. 이러한 텔레그램의 수신은 표시 신호(447)를 사용하여 CPU 다이(246) 상의 IRQ 동기화 로직(451)에 제공된다. 이러한 표시를 수신하면, IRQ 동기화 로직(451)은 IRQ 인터페이스(475) 상의 그것의 IRQ 출력의 적절한 인덱스 상에 단일 클록 사이클 IRQ 표시를 제공할 수 있다. 이러한 IRQ 출력은 CPU 다이(246) 상의 인터럽트 컨트롤러, 예를 들어, CPU(217)에 포함된 NVIC에 제공될 수 있다. CPU 다이(246) 인터럽트 컨트롤러는, 그것의 인터럽트 컨트롤러에 대한 IRQ 인터페이스(475) 신호에 대해 에지 검출 또는 레벨 검출 중 하나를 사용하도록 구성될 수 있다. 이것은, CPU가 ASIC 다이 IRQ 인터페이스(433)에 대한 새로운 이벤트를 보는 것을 허용하지만, 그 자체로는 IRQ 인터페이스(433) 상의 IRQ 신호가 디어서트되는 것에 대한 동기화를 제공하지 않는다. 디어서션이 처리되는 방식은, 인터럽트 소스가 그것의 신호가 에지 검출되도록 의도되는지 또는 레벨 검출되도록 의도되는지에 의존한다.
에지 기반 ASIC 다이(271) 소스에 대한 인터럽트 서비스 요청은, 앞서 설명된 바와 같이, NEVT(424) 상호연결부 상의 이벤트 메시징을 사용하여 ASIC 다이(271)로부터 전파된다. 에지 기반 IRQ는 디어서션 에지에 대한 임의의 정보를 전파하지 않으므로, 이는 이러한 인터럽트 소스의 동기화를 위한 완전한 해결책이다.
레벨 기반 ASIC 다이(271) 소스에 대한 인터럽트 서비스 요청은, NEVT(424) 및 트랜잭션 상호연결부(460) 시그널링의 조합에 의해, ASIC 다이(271)로부터 CPU 다이(246)로 전파된다. ASIC 다이(271) 상의 인터럽트 서비스 요청의 활성화는 에지 기반 케이스와 유사하게 CPU 다이(246)로 전파된다. ASIC 다이 IRQ 인터페이스(433) 상의 대응하는 신호가 여전히 어서트될 수 있다고 할지라도 IRQ 인터페이스(475) 상의 IRQ 표시는 단일 사이클 동안 어서트될 것이다. 이것은, 이 인터럽트 라인에 대한 PENDED 레지스터로 하여금 인터럽트 컨트롤러에서 설정되도록 한다. 인터럽트 컨트롤러는 IRQ 인터페이스(475) 상의 IRQ 신호로부터 제공되는 그 자체의 인터럽트 서비스 요청 입력에 대한 어느 레벨에도 상이하게 반응하지 않을 것이기 때문에, 나중에 그것의 PENDED 레지스터가 지워질 때까지 인터럽트 소스로부터 추가 정보를 필요로 하지 않는다. 따라서, CPU 다이 브리지(350)는 IRQ 인터페이스(475) 상의 그 인터럽트에 대해 비활성 신호를 제공할 수 있고, IRQ 인터페이스(433) 상에서 신호의 ASIC 다이(271) 인터럽트 서비스 요청이 활성인지 비활성인지를 상관하지 않는다. PENDED 레지스터가 지워진 후에만, 인터럽트 컨트롤러가 그것의 인터럽트 서비스 요청 입력을 재검사한다. 인터럽트 서비스 루틴의 실행이 PENDED 레지스터를 지울 때, 인터럽트 컨트롤러 내부의 그 IRQ에 대한 PEND CLR 신호가 클록 사이클 동안 어서트될 수 있고, 인터럽트 컨트롤러 내부의 ACTIVE 신호가 그 인터럽트 서비스 루틴의 실행 지속기간 동안 어서트될 수 있다. 이러한 신호는 IRQ 인터페이스(475) 상의 IRQ 후크를 사용하여 인터럽트 컨트롤러로부터 CPU 다이 IRQ 동기화 로직(451)으로 제공될 수 있다. PENDED 레지스터를 지우는 소프트웨어일 때, 이는 인터럽트 컨트롤러 내부의 그 IRQ에 대한 PEND_CLR 신호가 ACTIVE 신호가 어서트되지 않고 클록 사이클 동안 어서트되는 것을 초래할 수 있다. 인터럽트 컨트롤러는, 그것의 PENDED 레지스터가 설정되어 있지 않고 ACTIVE 신호 또한 어서트되지 않은 때에, 그 IRQ 넘버에 대한 그것의 인터럽트 서비스 요청 입력만을 재검사할 것이다. 따라서, CPU 다이 브리지(350)의 IRQ 동기화 로직(451)은, 예를 들어, PEND_CLR의 어서션을 관찰하는 것에 의해 PENDED 신호의 지움(clearing)을 등록할 수 있고, 그 인터럽트에 대해 IRQ 인터페이스(433) 상의 ASIC 다이(271) IRQ 신호를 재폴링(re-poll)하여 ASIC 다이(271) 상의 인터럽트 소스가 그것의 IRQ를 어서트하고 있는지 여부를 재확립하는 필요성의 표시로 ACTIVE 신호가 어서트되지 않는 것을 기다릴 수 있다. IRQ 동기화는 요청 신호(449)에 대한 아비터(418)를 통해 이 커맨드를 요청함으로써 트랜잭션 상호연결부(460) 상에서 특수 커맨드를 사용하여 이 재폴링 동작을 수행할 수 있다. ASIC 다이 시퀀서/PHY(426)가 이 커맨드를 수신할 때, 이것은, IRQ 큐잉/스케줄링 로직(431)에 IRQ 인터페이스(433) 상의 신호에서 적절한 인터럽트 요청 신호를 재검사하도록 알릴 수 있고, 어서트된 경우, NEVT(424) 상호연결부를 통해 이를 나타내는 텔레그램을 스케줄링할 수 있다. 이 텔레그램은 CPU 다이(246) 상에서의 그것의 처리가 동일할 수 있으므로 앞서 논의된 활성화 텔레그램과 동일한 코딩을 가질 수 있음을 유의한다. 이것이 발생한 경우, 이벤트 수신기(412)를 사용하여 NEVT(424) 텔레그램이 수신되고, IRQ 동기화 로직(451)에 제공될 것이며, IRQ 인터페이스(475) 상의 IRQ 신호 상에서 적절한 IRQ 표시의 단일 클록 사이클 어서션을 초래하여, 인터럽트로 하여금 인터럽트 컨트롤러에서 다시 보류되게 한다. 이때 인터럽트가 어서트되지 않은 경우, IRQ 큐잉/스케줄링 로직(431)은 앞서 논의된 활성화 NEVT(424) 텔레그램을 제공하기 위해 IRQ 인터페이스(433) 상의 IRQ 신호에서 인터럽트 신호의 상승 에지를 기다릴 수 있다.
CPU 다이 브리지(350)는 각 인터럽트에 대해, 그 인터럽트가 에지-검출로 또는 레벨-검출로 처리되도록 의도되었는지를 나타내는 정보를 제공 받을 수 있다. 일 실시예에서, 이 정보는 구성 SFR 뱅크(417)를 사용하여 제공될 수 있다. 또 다른 실시예에서, 인터럽트 컨트롤러는 IRQ 인터페이스(475) 상의 그것의 인터럽트 후크의 일부로서 이 정보를 제공할 수 있다. CPU 다이 브리지(350)는, 그 다음, 이 정보를 활용하여 각 인터럽트 소스에 대한 IRQ 상태를 동기화하기 위한 적절한 방법을 선택할 수 있다.
일부 CPU 다이 구현에서는, 인터럽트 컨트롤러의 내부 신호인 PEND_CLR 또는 ACTIVE에 대한 액세스가 이용 가능하지 않을 수 있다. 이러한 경우를 다루기 위해, 레벨 기반 인터럽트 재폴링을 위한 대안적인 메커니즘은 특수 기능 레지스터 액세스에 의해 제공될 수 있다. 특수 기능 레지스터는 CPU 다이 브리지(350)의 구성 SRF 뱅크(417)에서 구현될 수 있으며, 이는 CPU가 IRQ에 대한 재폴링을 직접 요청하는 것을 허용할 수 있다. 이는 구성 SFR 뱅크(417)의 적절한 주소에서 기록 액세스를 검출하는 것과 같이, 구성 SFR 뱅크(417)에 대한 적절한 액세스로부터 IRQ 동기화 로직(451)에 재폴링 표시를 제공함으로써 구현될 수 있다. 소프트웨어는, 그 다음, 레벨 기반 인터럽트가 재폴링을 요구할 때마다 이 특수 기능 레지스터에 적절한 값을 기록함으로써 직접적으로 재폴링을 요청할 수 있다. 전형적인 경우는, 소프트웨어가 그 인터럽트에 대한 PENDED 비트를 지운 후 또는 인터럽트 서비스 루틴 내부의 적절한 시점에서일 것이다.
ASIC(271) 다이로부터 CPU 다이(246)로의 DMA 요청 동기화는 NEVT(424)와 트랜잭션 상호연결부(460) 시그널링의 조합에 의해 달성될 수 있다. ASIC 다이 DRQ 동기화 로직(428) 및 CPU 다이 DRQ 동기화 로직(414)은 이러한 상호연결부를 통해 통신하여 DRQ 신호(434) 상의 DRQ 표시의 변경을 CPU 다이 DMA 신호(407) 상의 대응하는 변경에 전파하고, 이에 의해 인터페이스(434) 상에서 DRQ 신호를 제공하는 DMA-활성화된 주변 장치가 인터페이스(407)에서 DRQ 신호를 통해 DMA 컨트롤러(212)와 상호작용하는 능력을 제공한다. DRQ 동기화 로직(414 및 428)은 신호의 의도에 적합한 방식으로 DMA 요청으로서 인터페이스(434) 상의 변경을 인터페이스(407) 상의 대응하는 신호에 상태적으로(statefully) 전파할 수 있다.
인터페이스(434)의 각 DRQ 신호가 CPU 다이 인터페이스(407)에 동기화되는 경우, CPU 다이 DRQ 동기화 로직(414)은 UNKN, ARMD 및 TRIGD 상태를 가질 수 있다. ASIC 다이 DRQ 동기화 로직(428)은 UNKN, ARMD, PEND 및 TRIGD 상태를 가질 수 있다. 이러한 상태 중 일부는 동일한 명칭을 갖지만, 상태 코딩이 동일할 필요는 없으며 동기화 로직(414 및 428)이 임의의 주어진 시간에 동일하게 명명된 상태에 있지 않을 수도 있는 경우가 있을 수 있다는 점에 유의한다.
시동 시 또는 연관된 DMA 채널이 비활성화될 때마다, 동기화 로직(414 및 428) 둘 다는 UNKN 상태에 있을 수 있다. ASIC 다이 DRQ 동기화 로직(428)이 UNKN 상태에 있을 때, CPU 다이가 인터페이스(434)에서 연관된 DRQ 신호를 동기화하는데 관심이 없는 것으로 예상한다. CPU 다이 DRQ 동기화 로직이 UNKN 상태에 있을 때, 이 로직은 ASIC 다이가 임의의 변경을 알리지 않을 것으로 예상하고 인터페이스(407)의 연관된 DRQ 신호에 비활성 신호를 제공한다. CPU 다이 동기화 로직(414)이 UNKN 상태에 있고 연관된 DRQ가 서비스를 위해 활성화될 때마다, 동기화 로직(414)은 인터페이스(448 및 465)를 통해 트랜잭션 상호연결부(460) 상의 트랜잭션을 통해 이를 ASIC 다이 동기화 로직(428)에 나타낼 수 있다. 이 트랜잭션이 완료되면, DRQ 동기화 로직(414 및 428)은 모두 그 DRQ 신호에 대해 그들의 ARMD 상태로 진입할 수 있다.
ARMD 상태에서, ASIC 다이 동기화 로직(428)은, CPU 다이 동기화 로직(414) 또한 ARMD 상태에 있는 것으로 예상하고, 인터페이스(434)의 연관된 DRQ 신호 상에서 관찰되는 임의의 활성 레벨에 대해 통지를 받기를 원한다. CPU 다이 동기화 로직(414)이 ARMD 상태에 있을 때, 인터페이스(407)에서 대응하는 DRQ 신호에 비활성 레벨을 제공하는 반면, ASIC 다이 동기화 로직(428) 또한 ARMD 상태에 있고, 인터페이스(434)에서 대응하는 DRQ 신호의 관찰되는 임의의 활성화에 대해 알릴 것으로 예상한다.
ASIC 다이 동기화 로직(428)이 ARMD 상태에 있고 인터페이스(434)의 연관된 DRQ 신호에서 활성 레벨이 검출될 때마다, 이는 PEND 상태로 들어갈 수 있다. 이 상태에 있을 때, ASIC 다이 동기화 로직(428)은 NEVT 아비터/다중화기(430)를 통해 인터페이스(467)를 사용하여 NEVT 상에서 DRQ 활성화 텔레그램을 스케줄링하려고 시도할 수 있다. 이 텔레그램이 완료되면, ASIC 다이 동기화 로직(428)과 CPU 다이 동기화 로직(414)은 둘 다 TRGD 상태로 들어갈 수 있다. ASIC 다이 동기화 로직(428)은 인터페이스(467) 상에서 이 텔레그램 완료를 검출할 수 있는 반면, CPU 다이 동기화 로직(414)은 NEVT 수신기(412)로부터 인터페이스(454) 상에서 이 텔레그램 완료를 검출할 수 있다.
TRGD 상태에 있을 때, CPU 다이 동기화 로직(414)은 인터페이스(407)의 연관된 DRQ 신호 상에 활성 레벨을 제공하고, DMA 컨트롤러(212)가 적절한 응답 액션을 취함으로써 응답할 수 있을 것으로 예상한다. TRIGD 상태에서, ASIC 다이 동기화 로직(428)은, CPU 다이 동기화 로직(414) 또한 TRIGD 상태에 있는 것으로 예상하고, 인터페이스(434)의 연관된 DRQ 신호의 임의의 비활성화에 대해 통지를 받기를 원한다.
DMA 컨트롤러는 그것의 응답 버스 트랜잭션이 개시된 DMA 요청 라인에 대해 사이클-정확한 업데이트를 요구할 수 있다. DMA 슬레이브로부터 판독되어야 하는 가변 길이 데이터의 경우, 이는 데이터가 전달된 후 전송을 종료하는 데 사용될 수 있다. 다른 경우에, 이는 DMA 컨트롤러가 이전 DMA 요청에 응답하여 요구되는 전송을 완료하고 있기 때문일 수 있으며, 마지막 버스 데이터 단계의 프로세싱과 관련하여 슬레이브의 DMA 요청 디어서션으로부터의 전파 지연은, 슬레이브에 의해 실제로 요청되지 않은 DMA 동작이 잘못 재트리거되는 것을 초래할 수 있다. 따라서, 각 DMA-응답 AHB 버스 트랜잭션의 경우, 인터페이스(407)의 CPU 다이 동기화된 DRQ 신호가 CPU 다이 AHB 인터페이스(405 또는 406) 상의 동기화된 응답 신호와 동일한 대기 시간으로 도착하는 것이 바람직하다. 이러한 방식으로, DMA 컨트롤러(212)가 그것의 데이터 단계를 완료하는 CPU 다이 사이클에서 결합된 인터페이스(405/406/407)의 관련 신호는, ASIC 다이 사이클에 대한 인터페이스(437/436/434)의 대응하는 신호에 대해서와 동일하며, ASIC 다이 DMA-활성화된 주변 장치에 대해 대응하는 AHB 트랜잭션 데이터 단계의 데이터 단계가 완료된다. DRQ 디어서션이 AHB 데이터 단계 전달과 사이클-동기화되는 것을 허용하기 위해, 트랜잭션 상호연결부(460) 상의 트랜잭션 동안의 NRESP(423)는 데이터 단계 응답의 일부로서 디어서션을 나타내는 데 사용될 수 있다. DMA 컨트롤러(212)는, 주소 단계의 일부로서 이진 코딩된 DRQ 넘버를 제공하는 것과 같이, DMA 후크(407)를 사용하여 AHB 인터페이스(405 또는 406) 상의 특정 트랜잭션이 그것의 AHB 주소 단계 동안에 응답하는 DMA 요청에 대한 표시를 제공할 수 있다. 트랜잭션 상호연결부(460) 상의 연관된 AHB 트랜잭션을 동기화하는 NDIO(421) 커맨드는 커맨드 코딩의 일부로서 이 DRQ 넘버 정보를 포함할 수 있다. 이 정보는 인터페이스(465)를 통해 ASIC 다이 DRQ 동기화 로직(428)에 제공되어, 인터페이스(437 또는 436) 상의 AHB 트랜잭션 데이터 단계 동안 모니터링하기 위해 인터페이스(434)에서 적절한 DRQ 신호를 선택할 수 있으며, 이는 인터페이스(465)를 사용하여 PHY(426)에 표시를 제공할 수 있다. ASIC 브리지(365)의 PHY(426)는, 그 다음, 성공적인 데이터 단계에 대해 NRESP(423) 코딩의 두 개의 변형인, OK 및 OKDN을 제공할 수 있다. OK는 데이터 단계가 성공적으로 완료되었으며 연관된 커맨드 단계 동안 표시된 DMA 요청이 현재 활성화되었음을 나타낸다. OKDN는 데이터 단계가 성공적으로 완료되었으며 연관된 커맨드 단계 동안 표시된 DMA 요청이 현재 비활성화되었음을 나타낸다. CPU 다이 브리지(350)의 PHY(415)는 트랜잭션 상호연결부(360) 데이터 단계 완료 동안 NRESP(423) 상에서 OKDN 코딩을 검출할 수 있고, 예를 들어, 그 DRQ에 응답하는 것으로 마크된 트랜잭션이 OKDN NRESP를 표시했음을 나타내는 DRQ 소스(434) 각각에 대해 하나의 신호를 제공함으로써 인터페이스(455)를 사용하여 이 정보를 DRQ 동기화 로직(414)에 제공할 수 있다. CPU 다이 DRQ 동기화 로직(414)은 인터페이스(407)에서 연관된 DRQ의 디어서트하고 그 DRQ에 대한 그것의 내부 상태를 ARMD로 변경함으로써 이 OKDN 수신에 반응할 수 있다. 유사하게, NRESP(423) 상에서 응답 단계로 OKDN이 전달될 때마다, ASIC 다이 DRQ 동기화 로직은 연관된 DRQ에 대해 그것의 내부 상태를 TRGD로부터 ARMD로 변경할 수 있다.
응답하는 AHB 트랜잭션 외부의 응답하는 AHB 트랜잭션 외부의 ASIC 다이(271) DRQ 표시 비활성화의 동기화는 그러한 동기화된 대기 시간을 필요로 하지 않는다. ASIC 다이 동기화 로직(428)은 트랜잭션 상호연결부(460) 상에서 임의의 현재 진행 중인 트랜잭션과 관련이 없는 인터페이스(434)에서 TRGD 상태를 갖는 DRQ 신호의 비활성화를 검출할 수 있고, NEVT 아비터/다중화기(430)를 통해 인터페이스(467)를 사용하여 NEVT 상에 DRQ 비활성화 텔레그램을 스케줄링하려고 시도할 수 있다. 이 텔레그램이 완료되면, ASIC 다이 동기화 로직(428)과 CPU 다이 동기화 로직(414)은 둘 다 ARMD 상태로 들어갈 수 있다. ASIC 다이 동기화 로직(428)은 인터페이스(467) 상에서 이 텔레그램 완료를 검출할 수 있는 반면, CPU 다이 동기화 로직(414)은 NEVT 수신기(412)로부터 인터페이스(454) 상에서 이 텔레그램 완료를 검출할 수 있다.
CPU 다이 동기화 로직(414)이 DRQ에 대해 UNKN 상태에 있지 않고 연관된 DRQ가 서비스에 대해 비활성화될 때마다, 동기화 로직(414)은 인터페이스(448 및 465)를 통해 트랜잭션 상호연결부(460) 상의 트랜잭션을 통해 이를 ASIC 다이 동기화 로직(428)에 나타낼 수 있다. 이 트랜잭션이 완료되면, DRQ 동기화 로직(414 및 428)은 모두 그 DRQ 신호에 대해 그들의 UNKN 상태로 진입할 수 있고, 인터페이스(407)의 연관된 DRQ는 디어서트될 수 있다.
이러한 메커니즘 및 회로 기법을 사용하여, CPU 다이 브리지(350) 및 ASIC 다이 브리지(365)는 CPU 다이(246)(DRQ 동기화 로직(414)을 가짐)와 ASIC 다이(271)(DRQ 동기화(428)를 가짐) 사이에 DRQ 동기화를 제공할 수 있고, 이는 ASIC 다이 DRQ 신호(434)를 CPU 다이 DRQ 신호(407)와 동기화하여, CPU 다이(246) 상의 DMA 컨트롤러(212)가 DRQ 신호(434)에 의해 표시되는 대로 CPU 다이(271) 상의 DMA 활성화된 주변 장치에 응답할 수 있게 한다. 이러한 상태 머신 각각은 동기화된 각 DRQ 신호(434)에 대한 내부 상태를 추적하여 이러한 동기화를 지원할 수 있다.
트랜잭션 상호연결부(460) 및 NEVT(424) 다이 간 상호연결부를 사용하여 두 다이 사이에서 PMU 상태 전환 및 동기화가 동기화될 수 있다. 특히, PMU 인터페이스(432) 상의 PMU 이벤트 신호는 이벤트 송신기(429)에 의해 통신될 수 있고, 이는 이벤트 수신기(412)에 의해 수신되어 PMU 인터페이스(411) 상에서 PMU 이벤트 신호로 제공된다. PMU 인터페이스(432) 상의 이러한 PMU 이벤트 신호는 ASIC 다이 PMU(268)로부터 기인할 수 있고, PMU 인터페이스(411) 신호는 그 다음 CPU 다이 PMU 컨트롤러(244)로 제공될 수 있으며, 이에 따라, ASIC 다이 PMU(268)가 CPU 다이 PMU 컨트롤러(244)에 업데이트를 제공하는 것을 허용한다. 이러한 업데이트를 위해 임의의 수의 열거된 이벤트가 예약될 수 있으므로, 각 이벤트 메시지는 상이한 정보를 제공할 수 있다. 전형적인 이러한 이벤트는 리셋 전파, 절전(brownout) 경고, 레귤레이터 준비 표시, 및 클록 속도 변경 알림을 포함할 수 있다. 더 많은 수의 확장 가능한 이벤트를 허용하기 위해, 차이를 분명히 보여주기 위해 트랜잭션 상호연결부 상에서 후속 트랜잭션이 요구되는 이벤트에 대한 열거 중 하나를 예약하는 것 또한 가능하며, 이에 의해 낮은 대기 시간을 필요로 하지 않는 이벤트가, 이 공통 이벤트 코딩을 사용할 수 있게 할 수 있고, 이에 의해 열거된 NEVT 코딩 중 하나를 소비하지 않을 수 있다.
유사하게, CPU 다이 PMU 컨트롤러(244)는 트랜잭션 상호연결부(460) 상에서 트랜잭션에 의해 ASIC 다이 PMU(268)와 통신할 수 있고, 이는 PMU 트랜잭션 인터페이스(404)를 사용하여 그러한 트랜잭션을 개시할 수 있다. 아비터/다중화기(418)는, 그 다음, CPU 다이 PHY(415)에 의한 서비스를 위해 이 트랜잭션에 대한 시간을 스케줄링할 수 있다. 그 다음, ASIC 다이 PHY(426)는 트랜잭션을 디코딩할 수 있고 PMU 트랜잭션 후크 인터페이스(438) 상에 표시를 제공할 수 있으며, 이는 ASIC 다이 PMU(268)에 제공될 수 있다. 일부 경우에, 이 트랜잭션은 CPU 다이에서 ASIC 다이로 열거된 이벤트처럼 취급될 수 있으므로, 이 열거된 이벤트를 인코딩하는 커맨드 단계만이 상호연결부(460) 상에서 트랜잭션될 필요가 있다. 이 경우, 디코딩된 커맨드 단계 검출은, PMU 트랜잭션 인터페이스(438) 상에 정보로 제공될 수 있고, PHY(415) 및 PHY(426)는 둘 다 상호연결부(460) 데이터 단계를 스킵할 것이다. 다른 PMU 커맨드 코딩은 인터페이스(404 및 438)를 사용하여 PMU 컨트롤러(244)와 PMU(268) 간에 추가 데이터가 전송될 수 있도록 데이터 단계를 암시할 수 있다.
많은 경우에, ASIC 다이(271)는 CPU 다이(246), ASIC 다이(271) 상의 다른 컴포넌트, 또는 외부 포트에 전력 공급을 제공하는 회로부를 포함할 수 있다. 이러한 경우, WIC를 포함하여, 슬리핑 및 웨이크업과 관련된 대부분의 PMU 로직 또한 ASIC 다이(271) 상에 있을 수 있다. 대부분의 마이크로컨트롤러 아키텍처에서, 슬립은 CPU에 의해 개시된다.
슬립 시퀀스 동안, CPU는 PMU 인터페이스(256) 상에서 슬립 의도에 대한 그것의 시그널링을 제공한다. 단일 다이 구현(200)에서, 이 인터페이스(256)는 PMU(205)와 직접 통신할 수 있다. 멀티-다이 구현의 경우 CPU 다이 PMU 컨트롤러 로직(246)은 이 시그널링을 가로챌 수 있다. 그 다음, 트랜잭션 상호연결부(460) 상에서 다수의 트랜잭션에 관여하여 슬립을 수행하기 위해 ASIC 다이 PMU(268)와 상호 작용할 수 있다. WIC를 구현하는 CPU의 경우, CPU는 그것의 PMU 인터페이스(256)를 사용하여 그것의 NVIC 상태의 관련 부분을 WIC 상태로 전송할 수 있으며, 이는 NVIC에서 유사한 인터럽트 마스킹 기능을 미러링하는 인터럽트/예외 검출 로직을 위한 구성을 제공할 수 있다. CPU 다이(246) PMU 컨트롤러(244)는, 대신 이 시그널링을 수신하고 트랜잭션 상호연결부(460)를 사용하여 하나 이상의 트랜잭션으로 이를 변환하여, 상태를 ASIC 다이 PMU(268)에 구현된 WIC로 대신 전송할 수 있다. 이것은, PMU가, 슬립 동안 CPU 다이(246)에 대한 NCLK(420), 전력 공급 장치 또는 다른 서비스를 비활성화하는 것을 허용할 수 있으며, 동시에 여전히 WIC 컨트롤러의 표준 웨이크업 메커니즘을 제공할 수 있다. 트랜잭션 상호연결부(460) 및 NEVT(424) 상의 다른 통신은, 이 PMU 동기화 로직에 의해 적절한 다이 간 시퀀싱을 수행하여 표준 방식으로 CPU PMU 인터페이스(256)를 통해 CPU(217)와 PMU(268) 간에 다단계 핸드셰이크 슬립 시퀀스를 활성화하는 데 사용될 수 있다. 웨이크업 시, 유사한 트랜잭션 상호연결부(460) 및 NEVT(424) 트랜잭션은 CPU PMU 인터페이스(256)를 통해 CPU(217)와 PMU(268) 간에 필요한 시퀀스를 수행할 수 있다. 웨이크업이 ASIC 다이(271) 상의 WIC에 의해 개시된 경우, NVIC로 상태를 다시 전송하는 것은 이 시퀀스의 일부로서, 예를 들어 웨이크업 시퀀스의 일부로서 ASIC 다이 WIC로부터 이 상태를 판독하기 위한 트랜잭션 상호연결부(460) 트랜잭션에 의해 달성될 수 있다. 대안적으로, 웨이크업 시퀀스 동안 또는 이후에 적합한 시간에 NEVT(424) 상에 열거된 이벤트를 사용하여 웨이크업 시 이 WIC 상태 전송의 전부 또는 일부가 구현될 수 있다. 예를 들어, 이러한 동일한 인터럽트 또는 예외가 슬립의 외부에서 발생했을 때와 동일한 NEVT(424) 열거된 메시지를 전송하기 위해 ASIC 다이 IRQ 동기화 로직(431)을 사용함으로써, CPU 다이 NVIC에, 어떤 인터럽트 또는 예외가 웨이크업을 야기하였는지를 경고하는 것이 가능할 수 있다. 이 이벤트를 웨이크업 시퀀스와 관련된 적합한 시간에 전송함으로써, CPU 다이(246) 상의 로직은 CPU(217)가 실행을 시작하기 전에 이 인터럽트 또는 이벤트가 CPU 다이 NVIC에 보류되는 것을 보장할 수 있다.
슬리핑의 또 다른 측면은, 아마도 잘못된 트랜잭션을 초래하는 것인, 슬립이 발생할 때에 이들 인터페이스 상의 통신이 부분적으로만 직렬화되지 않도록 하기 위해, 트랜잭션 상호연결부(460) 및 NEVT 상호연결부(424) 둘 다 유휴 상태에 있도록 하기 위한 상호연결부 인터페이스의 적절한 관리이다. 이러한 것이 발생한 경우, 하나의 다이는 데이터 전송이 완료되었거나 이벤트 또는 핸드셰이크가 통신되었다고 이해할 수 있는 반면 다른 다이는 상이한 이해를 가질 수 있다. 이를 다루기 위해, 트랜잭션 상호연결부(460) 상의 트랜잭션은 슬립 협상 동안 사용되어, 이미 진행 중일 수 있는 어떠한 NEVT(424) 직렬화이든 완료된 후 추가의 새로운 NEVT(424) 활동을 비활성화할 수 있다. 이 커맨드는 슬립 협상 동안 적절한 시간에 PMU 컨트롤러(244)에 의해 슬립 시퀀스의 일부로서 자동적으로 발행되어, 슬립이 발효될 때 NEVT(424) 메시지가 원자적으로 전달되고 추가 NEVT(424) 메시지가 일시 중지되는 것을 보장할 수 있다. 트랜잭션 상호연결부(460) 상에서의 불완전한 트랜잭션은 슬립 모드로 들어가기 전에 그 상호연결부 상에서 마지막 트랜잭션 - 이제 슬립 모드로 갈 수 있음을 나타내는 코딩을 갖는 "완료된 트랜잭션" - 을 수행함으로써 회피될 수 있고, 이는 슬립 협상 시퀀스를 완성할 것이다. CPU 다이 BUS 아비터/다중화기(418) 및 ASIC 다이 NEVT 아비터/다중화기(430)는, 그 다음, 슬립 시퀀스를 통해 임의의 요청된 동작을 스톨하고, 그 다음, 후속 웨이크업 시퀀스 동안 적합한 시점에 서비스를 재활성화할 수 있다.
더욱이, ASIC 다이(271)는 구성 레지스터 뱅크(419)를 포함할 수 있다. 디버그 액세스 포트에 대한 보안 정책 동기화는 또한, 트랜잭션 상호연결부 및 NEVT 브리징을 사용하여 동기화될 수 있다. 일 실시예에서, 디버그 액세스 포트를 위한 통신 인터페이스는 ASIC 다이(271) 상에 위치될 수 있다. 부착된 디버거는 CPU 다이(246) 상의 보안 관리자(243)에 의해 설정될 수 있는 보안 관리자(267)를 통해 액세스되는 정책에 따라 이 인터페이스와 통신할 수 있다. 이러한 보안 정책은, 부착된 디버거가 CPU 다이와의 통신에 액세스하도록 허용되는지 여부, 디버거가 ASIC 다이(271) 상의 리소스에 직접 액세스하도록 허용되는지 여부, CPU 다이가 전력 공급되거나 또는 클록킹되지 않을 수 있는 슬립 모드 동안과 같이 디버거에 의해 전력 상태 전환이 개시될 수 있는지 여부, 및 특정 유형의 액세스를 허가하는 도전/응답 시퀀스와 같은 허가 크리덴셜을 포함할 수 있다.
보안 정책은 CPU 다이 보안 관리자(243)에 의해 개시된 트랜잭션 상호연결부(460) 상의 트랜잭션을 사용하여, 초기 파워업 시퀀스 동안에 CPU 다이 보안 관리자(243)로부터 ASIC 다이 상에 위치된 ASIC 다이 보안 관리자(267)로 전송될 수 있다. 이 정책이 전송될 때까지 디버그 포트 상에서 허가되지 않은 활동을 피하기 위해, ASIC 다이 보안 관리자(267)는 관련 정책이 전송될 때까지 모호한 보안 정책을 가진 리소스에 대한 액세스를 허용하지 않을 수 있다. 대안적으로, ASIC 다이 보안 관리자(267)는 정책이 제공될 때까지 디버거 통신 인터페이스를 비활성화할 수 있다. ASIC 다이 보안 관리자(267)는 디버거 요청에 응답할 수 있도록 임의의 CPU 다이(246) 슬립 사이클을 통해 이 정책을 유지할 수 있다. 보안 관리자(243)의 구성을 조정하는 CPU(217) 소프트웨어에 의한 것과 같은, 보안 정책에 대한 업데이트는, 트랜잭션 상호연결부(460) 트랜잭션을 사용하여 그것의 정책을 업데이트하기 위해 ASIC 다이에 통신될 수 있다.
일부 디버거 동작은, 예를 들어, 강제 전력 상태 및 중단(halting)/중단 해제(unhalting) CPU 동작과 같은, 원하는 CPU 상태로의 변경을 개시할 수 있다. ASIC 다이(271) 상의 디버그 포트는, 하나 또는 양쪽 다이 상의 보안 관리자의 허가에 따라, NEVT(424) 메시지를 사용하여 이와 같은 동작을 개시할 수 있다.
제조 및 제품 개발 프로세스의 특정 단계 동안, 임의의 연결된 CPU 다이(246) 없이 ASIC 다이(271)에 디버그 포트를 부착할 수 있는 것이 유용할 수 있다. 이를 가능하게 하기 위해, ASIC 다이 보안 관리자(267)는 부착된 CPU 다이(246)가 없음을 결정할 수 있고, 부착되지 않은 부품 보안 정책에 따라 ASIC 다이(271) 자원의 전부 또는 일부에 액세스하는 디폴트 정책을 허용할 수 있다.
이것은 또한, 고장 분석 동안 비보안(non-secure) 리소스에 대한 액세스를 가능하게 하기 위해 고장 또는 고객 반품된 부품을 분석할 때 유용할 수 있다. 이를 가능하게 하기 위해, CPU 다이(246)의 잘못된 거동(misbehavior)으로 인해 보안 정책이 실패한 경우를 다루기 위해, 디폴트 보안 정책이 ASIC 다이 보안 관리자(267)에서 구현될 수 있다.
CPU 다이 보안 관리자(243)가 수명 주기 관리와 함께 활성화된 때, 제품 수명 주기 진행이 구현될 수 있다. 예를 들어, 부품의 수명 주기는 정상 동작 모드에서 결함 분석 모드로 변경되어 제품 반품의 디버깅을 가능하게 할 수 있다. ASIC 다이 보안 관리자(267)는 부착된 디버거로부터의 수명 주기 상태 변경 명령어에 응답하도록 구현될 수 있다. 보안 관리자(267)와 ASIC 다이(271) 상의 디버그 인터페이스는 CPU 다이 보안 관리자(243)에 의해 제공되는 보안 정책과 무관하게 이 통신에 응답하도록 구현될 수 있다. ASIC 다이 보안 관리자(267)는 NEVT(424) 이벤트를 사용하여 수명 주기 상태 변경을 개시할 수 있다. 이 이벤트는 CPU 다이 보안 관리자(243)에 제공될 수 있고, 이는 그 다음 도전을 형성하는 것 및 응답을 확인하는 것과 같은 디버거의 크리덴셜에 대한 허가을 수행하기 위해 BUS 트랜잭션에 관여할 수 있다. 성공적인 허가 시, CPU 다이 보안 관리자(243)는, 민감한 비휘발성 메모리를 지우고 이 상태를 저장하는 비휘발성 메모리에 수명 주기 상태 진행을 기록하는 것과 같은, 수명 주기 변경을 수행하기 위해 필요한 단계를 수행할 수 있다. 일단 완료되면, 디버그 포트 및 보안 관리자(243, 267)는 이 새로운 수명 주기 상태와 일치하는 업데이트된 보안 정책을 사용할 수 있다.
이 기법을 사용한 버스 트랜잭션의 시퀀스 다이어그램 예시가 도 5에 도시되어 있다. 이 예시에서, 신호는 CPU 다이(246), 다이 간(262) 시그널링 및 ASIC 다이(271) 상의 신호들에 대해 도시되어 있다. 특히, CPU 다이 AHB(330) 주소 단계 신호(514) 및 CPU 다이 AHB(330) 데이터 단계 신호(512)로부터 선택된 신호가 도시되어 있다. 유사하게, ASIC 다이 AHB(370) 주소 단계 신호(508)로부터 선택된 신호 및 ASIC 다이 AHB(370) 데이터 단계 신호(512)가 도시되어 있다. 이 예시에서, CPU와 ASIC 둘 다 데이터 버스(248 및 277)에서 AHB를 구현하고 있다(브리지가 AHB와 상호 작용하는 포트는 405 및 437임에 유의한다). 이 예시에서, CPU는 주소 A0, Al, A2 및 A3에 대해 4개의 버스 트랜잭션을 개시한다. A0은 ASIC 다이(271) 상의 주변 장치(BLOCK1)(216)과 연관되고, A1 및 A3은 CPU 다이(246) 상의 SRAM 블록(518)과 연관되며, A2는 ASIC 다이(271) 상의 주변 장치(BLOCK2)(520)와 연관된다. 이 경우, 클록은 서로 동일한 속도로 동기화된다. BLOCK1 및/또는 BLOCK2는 ASIC 다이 상에 위치된 임의의 슬레이브 주변 장치이다.
사이클 1(522)에서 시작하여, CPU는 그것의 주소 단계 신호(514) 상에서 주소 A0에 대한 32 비트 기록을 위한 AHB 트랜잭션을 발행한다. CPU 다이 AHB 블록 주소 디코더는, 이 주소가 ASIC 다이(271) 블록 주소 공간에 있다는 것을 결정하고, 따라서 AHB 주소 단계 동안 CPU 다이 브리지(350)에 대해 HSEL(532)을 활성화한다. CPU 다이 브리지(350)는 상호연결부(460) 커맨드 단계로서 요구되는 정보(예컨대, HADDR(570), HWRITE(566), HSIZE(568) 등의 LSB)와 함께 NDIO(421) 상에서 발행할 커맨드를 형성한다. 이 예시에서, 커맨드 단계 신호가 CPU 다이 AHB 주소 단계 신호로부터 조합적으로 생성된다고 가정하지만, 이는 또한 등록을 통해 생성될 수도 있다. 등록된 경우, 커맨드는 CPU 다이의 AHB 주소 단계보다 늦은 클록 사이클에 NDIO(421) 상에서 발행될 것이다. ASIC 다이 브리지(365)는 그것의 주소 단계 신호(508)에서 대응하는 AHB 버스 트랜잭션을 개시함으로써 이 커맨드에 응답한다. ASIC 다이(271) 상의 AHB 블록 주소 디코더는, 주소가 BLOCK1과 연관된 것으로 결정하고, 따라서 그 ASIC 다이 AHB 주소 단계의 일부로서 그 블록에 대해 HSEL(516)을 발행한다.
사이클 2(534)에서, CPU는 이전 사이클에서 개시된 A0로의 트랜잭션에 대한 CPU 다이 AHB 데이터 단계 신호(512)의 일부로서 HWDATA(536) 상에 기록 페이로드 DO를 제공한다. CPU 다이 브리지(350)는 이 데이터를 수신하고 상호연결부(460) 데이터 단계로서 NDIO(421) 상호연결부 신호를 사용하여 ASIC 다이(271)로 이를 전송한다. ASIC 다이 브리지(365)는 이 데이터를 BLOCK 1 주변 장치에 대해 사용할 수 있도록 그 자체의 HWDATA(538)로 전파한다. 이 경우, BLOCK 1 주변 장치는 그 사이클 동안 동작을 완료할 수 있으므로, 그것의 HREADYOUT(540)를 어서트하여 ASIC 다이 AHB 데이터 단계가 완료되는 것을 허용한다. ASIC 다이(271) AHB HREADYOUT 다중화기는 이 신호를 선택하여 그것의 HREADY(562)를 위해 ASIC 다이 브리지(365)에 제공한다. 이 정보는 NRESP(423) 상에서 OK를 표시하여 ASIC 다이 브리지(365)에 의해 상호연결부(460)를 통해 전파된다. 그 다음, CPU 다이 브리지(350)는 CPU 다이(246) AHB 데이터 단계가 완료되는 것을 허용하기 위해 이를 그 자신의 HREADYOUT(544)에 추가로 전파한다.
또한, 사이클 2(534)에서, CPU는 그것의 주소 단계 신호(514)를 사용하여 주소 A1에 대한 트랜잭션을 개시한다. CPU 다이(246) 상의 AHB 블록 주소 디코더는, 이 주소가 CPU 다이(246) 상의 SRAM(216)과 연관되어 있다는 것을 결정하고, 따라서 AHB 주소 단계 동안 그 블록에 대해 HSEL(518)을 어서트한다. CPU 다이 브리지(350)는 이 트랜잭션에 관련되지 않으므로, 이 트랜잭션을 무시하고 이전에 스케줄링된 데이터 단계를 계속한다. 데이터 단계가 아직 스케줄링되지 않은 경우, 커맨드 단계로서 IDLE 의사-커맨드를 NDIO(421) 상호연결부 상에 구동했을 것이다. 사이클 2(534)에서의 CPU 다이 AHB 주소 단계가 그것의 HSEL(532)을 어서트함으로써 CPU 다이 브리지로 지시되었다면, 브리지는 이미 스케줄링된 NDIO 데이터 단계가 완료된 후 나중에 NDIO(421) 커맨드 단계의 발행을 위해 CPU 다이 AHB 주소 단계 신호(514)를 등록했을 것이다. ASIC 다이 브리지(365)는 이미 DO를 전송하기 위해 데이터 단계에 커밋(commit)되었으므로, NDIO 콘텐츠를 새로운 커맨드 단계로 취급하지 않는다. 새로운 NDIO 커맨드 단계가 주어지지 않았으므로, 사이클 2(534) 동안 그것의 AHB 주소 단계 신호(508)에 대한 임의의 추가 트랜잭션을 개시하지 않는다. SRAM 트랜잭션은 사이클 3(546)에서 CPU 다이(246) 상에서 완료된다.
사이클 6(548)에서, CPU 다이(246)는 주소 A2에 대한 16-비트 판독 트랜잭션을 개시한다. CPU 다이 AHB 블록 주소 디코더는 이 주소가 ASIC 다이(271) 블록 주소 공간에 있다는 것을 결정하고, 따라서 그것의 AHB 주소 단계 신호(514) 상에서 CPU 다이 브리지의 HSEL(532)을 활성화한다. 이는 NDIO(421) 상의 커맨드 단계로 전파되고, 이는 사이클 1(522)에서 발생한 것과 유사한 방식으로 ASIC 다이 AHB(370) 주소 단계로 추가로 전파된다. 이 경우, ASIC 다이 AHB 블록 주소 디코더는 주소 A2가 BLOCK2 주변 장치와 연관되어 있다고 결정하고, 따라서 이 블록에 HSEL을 발행한다.
사이클 7(550)에서, BLOCK2는 ASIC 다이 AHB 데이터 단계를 완료할 준비가 되지 않았음을 나타내기 위해 그것의 HREADYOUT(552)을 디어서트한다. ASIC 다이(271) AHB HREADYOUT 다중화기는 이 신호를 선택하여 그것의 HREADY(562)를 위해 ASIC 다이 브리지(365)에 제공한다. 이것은 STL 표시로서 NRESP(423) 상호연결부를 통해 ASIC 다이 브리지(365)에 의해 전파된다. CPU 다이 브리지(350)는 이 STL 표시를 수신하고 CPU 다이 데이터 단계가 완료될 준비가 되지 않았음을 나타내기 위해 그것의 HREADYOUT 데이터 단계 신호(544)를 디어서트하여 응답한다. 이 커맨드는 판독 커맨드이므로, 데이터 단계가 판독 유형임으로 인해 두 브리지 모두 NDIO(421) 상에서 반전된 데이터 방향을 갖고, 이에 의해 이 사이클 동안 상호연결부를 구동하는 것은 ASIC 다이(271)가 된다. 그러나, 슬레이브가 STL 표시에 의해 표시된 대로 데이터를 제공하지 않았으므로, 이 사이클 동안 NDIO(421) 상의 데이터는 CPU 다이 브리지에 의해 무시된다.
사이클 8(554)에서, BLOCK2는 이제 데이터 단계를 완료할 준비가 되었음을 나타내기 위해 그것의 HREADYOUT(552)을 어서트한다. 또한, 이것은 그것의 HRDATA(556) 상에서 요청된 데이터를 제공한다. ASIC 다이 AHB 데이터 단계 다중화기는, 이전에 등록된 주소 단계에 따라 이러한 신호를 선택하여 이들을 ASIC 다이 브리지(365)에 제공한다. ASIC 다이 브리지(365)는 NRESP(423) 상에서 OK를 표시하고 NDIO(421) 상에서 HRDATA(556)를 구동하여 상호연결부를 통해 이를 전파한다. CPU 다이 브리지(350)는, 그 다음, 그것의 HREADYOUT(544)를 어서트하고 그것의 HRDATA(558) 상에서 데이터(D2)를 구동하여 이를 CPU AHB 버스에 전파한다.
사이클 9(560)에서, CPU는 주소 A3에 대한 판독 트랜잭션을 발행한다. AHB 블록 주소 디코더는 이것이 SRAM(518)과 연관되어 있다고 결정하고, 따라서 그 블록에 HSEL을 발행한다. CPU와 ASIC 브리지(350 및 365)는 이미 트랜잭션 상호연결부(460) 시그널링에 대한 커맨드 단계로 회귀되어, 이는 원래의 CPU를 NDIO(421) 상호연결부 상에서 ASIC 데이터 방향으로 복원한다. CPU 다이 브리지(532)에 대한 HSEL이 어서트되지 않으므로, 브리지에는 트랜잭션할 것이 제공되지 않고, 따라서 NDIO 상에서 DLE 의사-커맨드를 발행한다. ASIC 다이 브리지는 이 IDLE 커맨드를 수신하고, 이를 트랜잭션할 것이 없음을 나타내는 것으로 해석하고, 따라서 이는 그것의 AHB 주소 단계 신호(508) 상에서 주소 단계를 발행하지 않는다.
이 예시에서, 많은 신호가 다른 신호로부터 조합적으로 생성되어, 시퀀싱이 이를 허용할 때 동일한 사이클에서 상호연결부(262) 신호로/신호로부터 AHB 신호(514, 512, 508)가 전파되는 것으로 도시되어 있다. 이러한 신호 전송 중 하나 이상은, 여전히 신호 타이밍을 유지하면서 NCLK(420) 주파수가 더 높아지는 것을 허용하는 것과 같이, 생성된 신호가 소스 신호보다 더 늦은 사이클에 제공되도록 등록된 방식으로 수행될 수 있음이 명백해야 한다.
유사하게, 이 예시에서, 상호연결부(262)의 신호 수는 단일 사이클에서 요구되는 양의 커맨드 및 데이터 단계 콘텐츠를 전송하기에 충분하다. 더 적은 수의 상호연결부가 사용되는 경우, 다수의 직렬화된 사이클에서 요구되는 콘텐츠를 전송하기 위해 다수의 NCLK(420) 사이클이 사용될 수 있다.
이 시퀀스 전체에 걸쳐, CPU 다이(246)와 그 상에서 실행되는 소프트웨어는 BLOCK1 및 BLOCK2 주변 장치에 특별한 처리를 제공할 필요가 없다. CPU 다이(246) AHB 버스의 관점에서, 트랜잭션은 일반적인 방식으로 발행되고 응답되었다. CPU 다이 상의 AHB 블록 주소 디코더가 이러한 주소를 CPU 다이 브리지(350) 블록 주소 공간과 연관시키도록 BLOCK1 및 BLOCK2 주변 장치의 버스 주소를 할당하는 것만이 필요하다. CPU 다이(246)의 지정 동안 ASIC 다이(271)에 구현된 컴포넌트를 인식할 필요조차 없다. ASIC 다이(271)는 그 자체의 AHB 블록 주소 디코더를 구현하여 그것의 다양한 AHB 슬레이브에 HSEL 신호를 제공하기 때문에, CPU 다이의 AHB 블록 주소 디코더에서 ASIC 다이(271)에 대량의 주소 블록을 할당하고 나머지 블록 주소 디코딩을 ASIC 다이(271)가 처리하도록 하기에 충분하다. 이것은 CPU 다이(246)가 일반적일 수 있도록 하여, 단일 CPU 다이(246) 구현이 다수의 상이한 ASIC 다이와 메이팅될 수 있도록 허용할 수 있다.
게다가, ASIC 다이(271) 상의 주변 장치는 또한, ASIC 다이(271) 상에 그들이 구현되기 때문에 특별한 처리를 필요로 하지 않는다. ASIC 다이 주변 장치의 관점에서, 이들은 표준 AHB 버스(370)에 연결되고, 일반적인 AHB 프로토콜에 따라 동작할 수 있다.
ASIC 다이(271)에서 구현되지 않은 주소에 대해 트랜잭션을 개시하는 소프트웨어의 경우를 처리하기 위해, 블록 주소 디코더(또는 주변 장치)는 ASIC 다이 데이터 단계 동안 오류의 HRESP 표시를 제공할 수 있다. 이는 NRESP(423)를 통해, CPU 다이 브리지(350)가 그 자체의 HRESP를 통해 CPU 다이 AHB 버스(330)로 전파될 수 있는 ERR 표시로서 전파될 수 있다. CPU 및 그 상에서 실행되는 코드의 관점에서, 거동은, 그 자체의 블록 주소 디코더가, 주소가 구현된 AHB 슬레이브 중 어느 것과도 매칭되지 않는다고 결정한 경우와 동일하다. 게다가, 불충분한 보안 허가로 인해 버스 트랜잭션이 위법이 될 수 있다. AHB 시스템에서, 이는 디어서트된 HPROT.PRIVILEGED(612)을 이용한 버스 액세스일 수 있으며, 이는 전형적으로 사용자 권한 코드에 의한 액세스를 나타내고, 이는 커널 권한 코드에 의한 액세스에만 합법적인 버스 슬레이브의 주소에 액세스한다. 게다가, HNONSEC이 어서트된 액세스가 어서트되지 않은 액세스에만 합법적인 버스 슬레이브의 주소에 액세스하려고 시도하는 것은, 트랜잭션 오류를 발생시켜야 한다. 이러한 경우, ASIC 다이(271) 상의 버스 슬레이브는 ASIC 다이 브리지(365)에 의해 일반적인 AHB 신호를 제공받을 수 있으며, 이는, 그 다음, HRESP(423)를 사용하여 버스 오류를 발행하는 것과 같이, 적절하다고 여겨지는 대로 응답할 수 있다.
이 기법을 사용한 버스 오류 전파의 시퀀스 다이어그램 예시는 도 6에 도시되어 있다. 이 예시에서, CPU는 3개의 트랜잭션을 개시하고, 그 중 2개는 오류 응답으로 완료된다. 사이클 1(622)에서, CPU는 ASIC 다이 블록 주소 공간에 할당된 주소 A0에 대한 기록 트랜잭션을 개시하므로, 사이클 1(622)의 CPU AHB 주소 단계 동안 CPU 브리지의 HSEL(532)이 활성화된다. CPU 다이 브리지(350)는 커맨드 CO(618)를 구성하여 NDIO(421) 상호연결부에 제시한다. ASIC 다이 브리지(365)는 이를 ASIC 다이 AHB 버스 상의 AHB 트랜잭션 주소 단계로 추가로 전파한다. ASIC 다이(271)의 블록 주소 디코더는 이 주소를 임의의 구현된 버스 슬레이브와 연관시키는 데 실패하므로, AHB 디폴트 슬레이브의 HSEL이 활성화된다. 디폴트 슬레이브는 AHB 사양에 의해 요구되는 대로 그것의 HRESP 데이터 단계 표시를 활성화하고 그것의 HREADYOUT를 사용하여 버스 스톨을 수행함으로써, 2-사이클 오류 응답을 수행한다. HRESP 및 HREADY 신호는 일반적인 AHB 데이터 단계 다중화를 사용하여 ASIC 다이 브리지(365)에 제공된다. ASIC 다이 브리지(365)는 NRESP(423) 시그널링을 사용하여 데이터 단계가 오류로 완료되었음을 표시하는 ERR을 표시한다. CPU 다이 브리지(350)는, 그 다음, 그것의 HRESP(574) 및 HREADYOUT(544) 신호를 사용하여 그 자체의 2-사이클 오류 응답을 수행하여, 이 CPU 다이 AHB 트랜잭션을 오류로 완료한다.
사이클 4(610)에서, CPU는 또 다른 버스 트랜잭션을 개시한다. 이 경우, 주소는 ASIC 다이(271) 상의 버스 슬레이브 BLOCK1(516)과 매칭되지만, 그 버스 슬레이브는 권한 없는 액세스를 허용하지 않도록 구성된다. CPU는 사이클 4(610)에서 AHB 트랜잭션 주소 단계를 개시하며, 이는 HPROT(612)의 PRIVILEGED 612 비트를 사용하는 권한 없는 액세스라는 것을 나타낸다. CPU 다이(246) 상의 블록 주소 디코더는 이 주소가 CPU 다이 브리지(350)와 연관되어 있음을 검출하고, 따라서 CPU 다이 브리지의 HSEL(532)이 활성화된다. CPU 다이 브리지(350)는 이를 NDIO(421) 커맨드 단계 C1(620)로 전파한다. 커맨드 단계 콘텐츠는 PRIVILEGED 612 비트가 설정되지 않았다는 정보가 포함한다. ASIC 다이 브리지(365)는 이를 ASIC 다이 AHB 트랜잭션으로 전파하고, HPROT(614)의 PRIVILEGED 비트는 활성화되지 않는다. 그것의 블록 주소 디코더가 이 주소를 BLOCK 1과 매칭시키기 때문에, 이것은 BLOCK 1(516)에 대해 HSEL을 활성화한다. BLOCK 1(516)은 권한이 없는 액세스의 경우에 오류로 응답하도록 구성되므로, 이것은 사이클 5(616) 및 사이클 6(624) 동안 데이터 단계에서 ERROR 응답을 구현한다. 이것은 일반적인 AHB 데이터 단계 다중화를 통해 ASIC 다이 브리지(365)로 전파된다. ASIC 다이 브리지(365)는 NRESP(423) 상호연결부 상에서 ERR을 나타내며, CPU 다이 브리지(350)는 CPU 다이 AHB 버스의 데이터 단계에 대한 2-사이클 오류 응답을 검출하고 구현한다.
사이클 7(626)에서, CPU는 BLOCK1(516)에 또 다른 트랜잭션을 발행하지만, 이번에는 권한 비트가 설정된 상태로 발행한다. NDIO(421) C2를 통해 중계된 커맨드는 이 정보를 포함한다. ASIC 다이 버스는 그 자체의 HPROT PRIVILEGED 614 비트 세트로 이 트랜잭션을 개시하므로, BLOCK1 슬레이브는 오류 없이 트랜잭션을 완료한다. 이것은 OK NRESP(423) 표시를 사용하여 CPU 다이(246)에 다시 표시되고, CPU 다이 브리지(350)는 오류 없이 CPU 다이 AHB 데이터 단계를 완료하여 응답한다.
도 7은 다양한 버스트를 갖는 예시적인 시퀀스 다이어그램을 묘사한다. 제1 버스트는 명시적인 AHB 버스트 표시가 있는 순차적 트랜잭션이다. CPU 다이(246) 상의 AHB 버스 마스터는 사이클 1(742)에서 버스 주소 HADDR(570) A0에서 시작하여 INCR의 HBURST(710)을 사용하여 트랜잭션을 발행한다. 주소 A0는 CPU 다이의 블록 주소 디코더에 의해 ASIC 다이(271) 블록 주소 공간에 있는 것으로 결정되므로, CPU 브리지의 HSEL(532)은 AHB 주소 단계 동안 어서트된다. CPU 다이 브리지(350)는 다양한 AHB 주소 단계 신호를 수신하고 NDIO(421) 커맨드 단계 C0(740)를 형성한다. HBURST(710)가 INCR로 표시되었으므로, 커맨드 C0(740)는 버스트가 발생되었을 것을 ASIC 다이 브리지(365)에 표시하기 위해 형성되며, 각 전송의 주소는 이전 전송으로부터 증분되어야 한다. 이것이 가장 일반적인 경우이므로, 다른 버스트 유형이 표시되지 않은 경우 이것이 디폴트 거동으로 가정될 수 있도록 커맨드 코딩이 구조화될 수 있다. HBURST(710)가 일부 다른 AHB 버스트 유형, 예컨대, WRAP8인 경우, C0(740)가 대신 이 표시를 제공하도록 코딩될 수 있다. 사이클 2(744)에서 데이터 단어 D0는 평소와 같이 전송된다. 또한, 사이클 2(744)에서, CPU 다이 브리지(350)는 버스트 연속과 일치하는 또 다른 AHB 커맨드를 수신하고, 따라서 데이터 단계의 버스트 연속을 나타내기 위해 NPHASE(422)를 어서트한다. 일관성 확인(consistency check)는, HADDR(570)가 적절하게 증분되고, HWRITE(566) 및 HSIZE(568)가 이전 전송과 매칭되는지를 확인하는 것을 포함할 수 있다. ASIC 다이 브리지(365)는 NPHASE가 어서트되는 것을 검출하므로, 그것의 AHB 버스 상에 파이프라이닝된 주소 단계를 형성하여, 업데이트된 HADDR(526) 및 선택적으로 업데이트된 HTRANS(넘버링되지 않음)로 버스트 연속을 나타낸다. 이것은, NDIO 상호연결부가 데이터 D0를 전송하는 동안에도 이 작업을 수행하므로, 이 사이클에서 또 다른 커맨드 단계를 제공하는 데 사용되지 않는다. ASIC 다이 상의 원하는 AHB 트랜잭션은 NPHASE로 표시된 바와 같이 이전 C0(740) 커맨드 및 버스트 연속으로부터 추론된다. 그 다음, 사이클 3(746)에서, 데이터 D1이 NDIO(421)를 통해 전송되어 버스트에서 2번째 데이터 단계를 완료한다. 이는 사이클 4(748) 및 사이클 5(750)에서, AHB 마스터가 트랜잭션을 발행하지 않으므로 NPHASE(422)는 그 사이클 동안 어서트되지 않는다는 것을 제외하고, 유사하게 계속된다. 사이클 5(750)에서 NPHASE(422)가 어서트되지 않았고 사이클 5(750) 데이터 단계 NRESP(423)가 STL이 아니었으므로, 사이클 6(752)의 NDIO(421) 상호연결부는 두 브리지 모두에 의해 커맨드 단계를 위해 예약된 것으로 이해된다. 사이클 6(752) 동안 ASIC 다이(271)를 타겟으로 하는 또 다른 CPU AHB 트랜잭션이 개시되었거나, 진행 중인 버스트와 관련이 없는 CPU AHB 트랜잭션이 사이클 5 동안 개시되어 CPU 다이 브리지(365)에서 나중에 트랜잭션을 위해 대기 중이었다면, 그 전송에 대한 커맨드가 사이클 6(752) 동안 NDIO(421) 상에 발행되었을 수 있다. 이 예시에서, 그러한 트랜잭션이 표시되지 않았기 때문에, 의사-커맨드 IDLE이 NDIO(421) 상호연결부 상에서 발행된다.
사이클 7(754)에서, CPU 다이(246) 상의 AHB 마스터는, 이 트랜잭션이 버스트의 일부가 아닐 가능성이 있음을 나타내는, SINGLE HBURST(710)를 갖는 ASIC 다이 슬레이브에 대한 AHB 트랜잭션을 개시한다. ASIC 다이 브리지(365)는 커맨드 C4를 형성하여 그 트랜잭션을 ASIC 다이(271)에 브리징하기 시작한다. 커맨드 C4는 버스 마스터에 의해 명시적으로 표시되지 않았더라도 디폴트 버스트 유형을 나타내도록 코딩될 수 있다. 사이클 8(756)의 후속 데이터 단계 동안, CPU 다이 AHB는 이미 발행된 디폴트 버스트 유형의 커맨드 C4와 우연히 일치하는 또 다른 AHB 트랜잭션을 개시한다. 이 경우, ASIC 다이 브리지(365)는 버스트를 추론하고 사이클 8(756)에서 NPHASE(422)를 발행하여 개별 트랜잭션을 NDIO(421) 버스트로 변환할 수 있다.
사이클 11(722)에서, CPU 다이(246) 상의 DMA 컨트롤러(212)는 동일한 주소 A6에 대한 일련의 FIFO 트랜잭션 중 제1 AHB 트랜잭션을 개시한다. DMA 컨트롤러(212)는, 버스트 연속이 각 전송에 대해 동일한 버스 주소를 사용해야 함을 나타내는 NDIO(421) 커맨드 C6을 발행하기 위한 힌트로서 CPU 다이 브리지(350)에 추가 신호 NOINCR(724)을 제공할 수 있다. 사이클 12(726)에서, DMA 컨트롤러(212)는 이 시퀀스에서 다음 트랜잭션을 발행한다. CPU 다이 브리지(350)는 이 새로운 트랜잭션이 현재 커맨드 C6의 유효한 버스트 연속과 일관성이 있는지 확인할 수 있고, 비증분 버스트를 계속하기 위해 NPHASE(422)를 어서트할 수 있다. ASIC 다이 브리지(365)는, 이전에 발행된 트랜잭션과 동일한 주소에 대한 트랜잭션을 나타내는 사이클 12(726) 주소 단계로 그것의 AHB 버스 상에서 이를 형성한다.
사이클 14(728)에서, CPU 다이 버스 마스터는 동일한 주소 A8에 대한 일련의 FIFO 트랜잭션 중 제1 트랜잭션을 개시한다. 이 경우, 이것은 NOINCR(724)를 나타내는 데 실패하고, 이는 CPU 다이 브리지(350)가 비증분과 동일하지 않은 디폴트 버스팅 유형을 갖는 NDIO(421) 커맨드 단계 C8를 형성하는 것을 초래한다. 사이클 15(730)의 데이터 단계 동안, CPU 다이 버스 마스터는, CPU 다이 브리지(350)가 이전에 커맨드 단계 C8에서 표시했던 것과 상이한 버스트 유형과 일치하는 것으로 결정하는 제2 트랜잭션을 개시한다. 이 경우, CPU 다이 브리지(350)는 관찰된 AHB 시퀀스가 비증분 버스트와 일치하는 것을 검출한다. NDIO(421) 커맨드(C8)이 추론된 버스트 유형과 일치하지 않기 때문에, CPU 다이 브리지(350)는 사이클 15(730)에서 NPHASE(422)를 디어서트하여 NDIO(421) 상호연결부를 다음 사이클 16(732)의 커맨드 단계로 복귀시킨다. 사이클 16(732) 동안, 이는 추론된 비증분 버스트 유형을 나타내기 위해 업데이트된 NDIO(421) 커맨드(C9)를 발행한다. 이 사이클 동안, CPU 다이 브리지(350)는, NDIO(421) 상에서 새로운 커맨드(C9)가 발행되는 동안 CPU 다이 AHB 버스의 데이터 단계를 스톨하기 위해 그것의 HREADYOUT(544)를 디어서트한다. 그 다음, 사이클 17(734) 내지 사이클 19(738) 동안, CPU 다이 AHB 버스(405) 상에서 수신된 각 커맨드가 C9에 의해 표시된 버스팅 유형과 일치하므로 버스트의 나머지는 인터럽트 없이 계속될 수 있고, 따라서 NRESP가 버스트를 계속하는 데 사용될 수 있다.
도 8은 ASIC 다이(271) 상의 인터럽트 소스와 CPU 다이(246) 상의 인터럽트 컨트롤러 사이의 인터럽트 브리징을 도시하는 시퀀스 다이어그램을 묘사하고 있다. 이 예시에서, ASIC 다이(271) 상의 두 인터럽트 소스는 그 다이 상에서 인터럽트 표시 IRQ1(810) 및 IRQ2(812)를 생성한다. IRQ1 인터럽트 소스는 에지 기반 표시를 사용하는 반면 IRQ2 소스는 레벨 기반 표시를 사용한다. CPU 다이(246) 상의 인터럽트 컨트롤러는 브리지(818)(이는 CPU 다이 브리지(350)와 CPU 다이(246) 내의 다른 컴포넌트 사이의 인터페이스 신호 그룹임)로부터 IRQ1(814) 및 IRQ2(816) 표시를 수락하도록 구성된다. CPU 다이 브리지(350)는 이러한 인터럽트 요청 라인에서 단일 사이클 표시만 제공하므로, CPU 다이 인터럽트 컨트롤러는 이를 레벨 기반 또는 에지 기반 표시 중 하나로서 수락하도록 구성될 수 있다. CPU 다이 브리지(350)는 이 두 인터럽트 소스에 대한 TYPE 표시를 제공 받으며, 이는 EVENT 또는 LEVEL일 수 있다. EVENT는 ASIC 다이(271) 인터럽트 소스가 에지 기반 시그널링을 사용하고 있으므로 각 인터럽트 활성화를 단순 이벤트로 처리함을 나타낸다. LEVEL은 인터럽트 소스가 레벨 기반 시그널링을 사용하고 있음을 나타내며, 이는 인터럽트 컨트롤러에서 연관된 PENDED 레지스터가 지워지는 것에 대한 응답으로 ASIC 다이의 인터럽트 요청을 재폴링할 필요가 있음을 나타낸다.
사이클 1(848)에서, 인터럽트 소스에 의해 ASIC 다이(271) ASIC 다이 IRQ1(810) 라인이 어서트된다. ASIC 다이 인터럽트 브리지는 0 내지 1 시퀀스를 검출하고 인터럽트 상승 에지를 CPU 다이(246)로 전파할 필요성을 결정한다. 이것은, 적절한 열거된 이벤트를 CPU 다이(246)로 전파하도록 NEVT(424) 송신기(429)에 요청하는 동시에, 또한 이 이벤트를 전파할 필요성을 그 IRQ(822)에 대한 그 자체의 QUEUED 레지스터에 등록한다. 이벤트 브리지가 유휴 상태가 되었으므로, 이것은 2-클록 시퀀스 E0.0 및 E0.1을 사용하여 NEVT(424) 상에서 이 이벤트를 즉시 직렬화하기 시작하여, 직렬화된 이벤트 E0를 형성할 수 있다. 추가적으로, ASIC 다이 NEVT(424) 직렬화기(429)는 ASIC 다이 IRQ 브리지(826)로의 E0의 메시징이 완료되었음을 나타내므로(이것은 ASIC 브리지(365)로부터 ASIC 다이(271)로의 신호의 모음임), 요구되는 메시지가 전송되었으므로 IRQ1(822)에 대한 그것의 QUEUED 레지스터를 지운다. 사이클 2(850)에서, CPU 다이 브리지(350)는 IRQ1(814) 어서션에 대한 이벤트로서 인코딩되는 것으로 결정하는 E0 이벤트 수신을 검출한다. 그 다음, 이것은 단일 사이클 동안 CPU 다이(246) IRQ1(814) 신호를 구동한다. 인터럽트 컨트롤러는 이 표시를 IRQ1, NVIC(868)의 IRQ1.PENDED(288)에 대한 보류 중인 레지스터에 등록한다. 인터럽트 컨트롤러의 구성에 따라, 이 PENDED 구성은 인터럽트 서비스 루틴의 실행을 초래할 수 있거나, 소프트웨어에 단순히 판독을 위해 단순히 이용 가능할 수 있다. 어느 쪽이든, CPU가 만족할 만큼 인터럽트가 처리되면, CPU가 IRQ1.PEND_CLR(830) 신호를 어서트함으로써 PENDED 표시가 지워질 수 있다. 인터럽트 컨트롤러 내부에서, 이는 IRQ1.PENDED(828) 레지스터의 지움을 초래한다. 이 PEND_CLR 신호는 CPU 다이 브리지(350)에 대해 이용 가능하게 만들어진다. 브리지는, 그것의 IRQ1.TYPE(832)가 EVENT이며, 따라서 추가 액션이 필요하지 않으므로 이 표시를 무시하는 점을 주목한다.
사이클 5(852)에서, ASIC 다이(271) IRQ2(812) 소스는 그것의 인터럽트 요청을 활성화한다. ASIC 다이 브리지(365)는 사이클 1(848)에서 IRQ1에 대한 그것의 응답과 유사하게 응답하고, 이는 CPU 다이(246)로의, 직렬화된 NEVT(424) 메시지 E1을 초래한다. CPU 다이(246)는 이전 E0 메시지와 유사하게 응답하고, 이는 궁극적으로 인터럽트 컨트롤러의 IRQ2.PENDED(834) 레지스터가 CPU 다이 상의 IRQ2 신호(816)의 단일 사이클 활성화를 통해 설정되는 것을 초래한다.
E1이 여전히 직렬화 중인 동안, ASIC 다이(271) 상의 IRQ1(810) 소스는 그것의 인터럽트 요청을 활성화한다. 이 경우, NEVT(424) 상호연결부가 E1을 직렬화하는 중이므로 ASIC 다이(271) 상의 IRQ 브리지(826)는 나중에 이를 직렬화하는 것을 기억하기 위해 그것의 IRQ1.QUEUED(822) 레지스터만 설정한다. 사이클 7(854)에서, NEVT(424) 상호연결부가 이용 가능하게 되므로 ASIC 다이(271) NEVT(424) 직렬화기는 ASIC 다이(271) IRQ 브리지(826)의 요청에 따라 이 IRQ1(810) 활성화 이벤트를 나타내기 위해 E2를 직렬화하기 시작한다. E2는 E0과 동일한 인터럽트 활성화를 나타내므로 E0과 동일한 코딩을 가질 수 있다는 점에 유의한다. 사이클 8(856)에서, 이 이벤트 직렬화가 완료되고, 이에 의해 인터러트 컨트롤러 내의 IRQ1.PENDED(828) 레지스터가 CPU 다이 상의 IRQ1 신호(814)의 단일 사이클 활성화를 통해 설정되고, 또한 IRQ1.QUEUED(822) 레지스터가 성공적인 이벤트 전송을 보고하는 NEVT(424) 직렬화기로 인해 지워지는 것이 초래된다.
사이클 10(858)에서, CPU는 IRQ2(816)에 대한 인터럽트 서비스 루틴으로 진입하여, IRQ2.PEND_CLR(836)와 IRQ2.ACTIVE(838) 신호가 어서트되는 것을 야기한다. CPU 다이(246) IRQ 브리지(818)는 PEND_CLR 어서션 및 IRQ2.TYPE이 LEVEL로 설정되어 있음을 주목하고, 따라서 그것의 IRQ2.REPOLL(840) 레지스터를 설정한다. IRQ2.ACTIVE(838) 신호가 인터럽트 컨트롤러 내부에 설정되므로, 아직 리폴을 수행하지 않아야 하고, 따라서 이 사이클에서 추가의 액션을 취하지 않는다. 사이클 11(860)에서, IRQ2.ACTIVE(838) 신호가 인터럽트 컨트롤러에서 디어서트된다. CPU 다이(246) IRQ 브리지(818)는 이제 그것의 IRQ2.REPOLL(840) 레지스터가 IRQ2.ACTIVE(838)이 설정되지 않는 것과 동시에 설정되게 하고, 이것은 트랜잭션 상호연결부(460)의 사용을 요청하여 ASIC 다이(271) IRQ 브리지(826)가 그것의 IRQ2(812) 인터럽트 표시를 재검사하고 그 신호가 현재 높은 경우 또 다른 NEVT(424) 이벤트를 생성할 필요성을 나타내는 특수 트랜잭션을 전송한다. 이 상호연결부(460) 트랜잭션 C0(844)는 사이클 12(860)에서 수행된다. ASIC 다이(271) 상의 IRQ 브리지(826)는 그것의 IRQ2(812) 입력 표시를 재검사하여 이 트랜잭션의 수신에 응답한다. IRQ2(812)가 어서트되기 때문에, 그것의 IRQ2.QUEUED 레지스터를 설정하고 이벤트 E3의 직렬화를 요청하여, 인터럽트 소스가 현재 활성임을 CPU 다이(246)에 표시한다. 이 예시에서, NEVT(424) 상호연결부가 사용 중이 아니므로, 사이클 13(862)에서 E3 직렬화가 시작될 수 있다. CPU 브리지(350)가 E1과 E3을 다르게 처리할 필요가 없으므로 동일한 열거를 사용하여 E1과 E3를 인코딩하는 것이 가능하다는 점에 유의한다. E3의 수신은, 이벤트 E1과 유사한 방식으로 IRQ2(816) 상의 시그널링을 통해 IRQ2.PENDED(834) 레지스터가 설정되는 것을 초래한다.
사이클 17(864)에서, 소프트웨어에 의해 IRQ2.PENDED(834) 레지스터가 지워진다. 이것은, IRQ2.PEND_CLR(836) 신호가, IRQ2.ACTIVE(838) 비트 신호가 어서트되지 않고, 어서트되게 한다. CPU 다이(246) IRQ 브리지(818)는, IRQ2.PEND_CLR(836)이 활성화되어 있고 IRQ2.TYPE(842)가 LEVEL인 것으로 인해, 그것의 IRQ2.REPOLL(840) 비트를 설정한다. IRQ2.ACTIVE(838)이 설정되지 않았으므로, 이것은 즉시 트랜잭션 상호연결부(460) 트랜잭션을 요청하여 ASIC 다이(271) 상의 IRQ2(812) 인터럽트 소스를 재폴링할 수 있다. 이것은 C0(844)와 동일한 코딩을 가질 수 있는 트랜잭션 C1(846)이 사이클 19(866)에서 트랜잭션되게 한다. ASIC 다이(271) IRQ 브리지(826)는, 그것의 IRQ2(812) 인터럽트 요청 입력을 검사하고, 이것이 어서트되지 않음으로 인해 추가의 액션을 취하지 않는 것에 의해, C1(846)의 수신에 응답한다. CPU 다이(246)는 인터럽트 활성화 메시지를 수신하지 않으므로 IRQ2.PENDED(834) 레지스터는 설정되지 않은 상태로 유지된다. 일정 시간 후에, ASIC 다이(271) IRQ2(812) 인터럽트 소스가 다시 활성화될 때, ASIC 다이(271)은 사이클 5(852)에서 발생한 E1 NEVT(424) 트랜잭션과 유사한 방식으로 이를 CPU 다이(246)에 나타낼 수 있다.
도 9는 ASIC 다이(271) DMA 활성화된 버스 슬레이브와 CPU 다이(246)의 DMA 컨트롤러(212) 내부에 포함된 신호(922) 사이의 DMA 요청 동기화를 도시하는 예시적인 시퀀스 다이어그램을 묘사하고 있다. 이 예시에서, DMA 가능한 AHB 다이 주변 장치는, CPU 다이 DMA 컨트롤러가 ASIC 다이(271) 상의 FIFO 주소에 4-사이클 버스트 기록을 구현하는 것을 초래해야 하는, CPU 다이 DMA 요청 DRQ1(920)에 동기화되어야 하는 DMA 요청 DRQ1(910)을 제공한다. 시퀀스의 시작에서, DMA 컨트롤러(212)는 아직 그 채널에 대해 활성화되지 않았다. CPU 및 ASIC 다이 DRQ 브리지(912 및 914) 각각은, DRQ 채널 각각에 대해 독립적으로 두 다이 사이의 DRQ 동기화를 위해 상태 916 및 918을 유지한다(DRQ 동기화 상태 머신(414 및 428) 내부에도 신호가 있음). 이 시퀀스의 시작 부분에서, DRQ 채널 DRQ1(920)에 대한 CPU 다이(246) 상태는 UNKN이고, 이는 ASIC 다이(271) 상의 DRQ1(910) 신호에 대한 지식이 없음을 나타내며, 이 상태에 있는 동안 DMA 컨트롤러(212)에 입력되는 DRQ1(920)에 비활성 레벨을 제공한다. 이 상태는 리셋 후 초기 상태이며, DMA 컨트롤러(212)가 서비스를 위해 비활성화된 그 DRQ 채널을 가질 때마다 입력된다. DRQ1(910)에 대한 ASIC 다이 브리지(365)의 초기 상태는 DISA이며, 이는 CPU 다이(246)가 그 채널에 대한 DRQ 동기화에 관심이 없음을 브리지의 그 측에 나타낸다.
사이클 1(934)에서, DRQ1(920)의 서비스가 DMA 컨트롤러(212)에서 활성화된다. CPU 다이 DRQ 브리지(912)는 DMA 채널이 서비스를 위해 활성화됨을 나타내는 신호 DRQ1.ENA를 수신한다. 그것의 동기화 상태가 UNKN이므로, 그것은 DRQ 채널 DRQ1(910)에 대해 ASIC 다이(271) DRQ 브리지(914)로부터 동기화를 요청하는 특수 커맨드 C0(930)를 NDIO(421) 상호연결부 상에서 요청한다. 트랜잭션 C0(930)가 성공적으로 완료되면 CPU 다이(246) DRQ 브리지(912)가 그 DRQ 채널에 대해 ARMD 상태로 들어간다. AMRD 상태에 있는 동안, DRQ1(920)에 대한 비활성 표시를 DMA 컨트롤러(212)에 제공한다. 커맨드 C0(930)를 수신하면, ASIC 다이 DRQ 브리지(914)는 그것의 DRQ1(910) 동기화 상태(918)에 대해 ARMD 상태로 들어간다.
ASIC 다이의 DRQ 브리지(914)가 DRQ1(910) 채널에 대해 ARMD 상태에 있는 동안, DRQ1(910) 표시를 검사하고 신호가 활성인 것으로 관찰되면 그 채널에 대해 PEND 상태로 들어간다. 이는 사이클 4에서 발생한다. PEND 상태에 있는 동안, NEVT(424) 브리지가 DRQ1 활성화의 표시를 CPU 다이(246)에 전송하도록 요청한다. 사이클 5(938)에서, NEVT(424) 브리지는 사용 중이 아니므로 이벤트 E0에 대한 2-사이클 직렬화를 시작하여 DRQ1 활성화 표시를 전송한다. 이 이벤트 전송이 완료되면, ASIC 다이 DRQ 브리지(914)는 TRGD 상태로 들어간다. 사이클 6에서 NEVT(424) 이벤트 E0의 수신 표시가 CPU 다이 DRQ 브리지(912)에 제공된다. 이 이벤트를 수신할 때 DRQ 브리지(912)는 DRQ1 채널에 대해 ARMD 상태에 있으므로, 그 채널에 대해 TRGD 상태로 들어간다. CPU 다이 DRQ 브리지(912)가 DRQ1 채널에 대해 TRGD 상태에 있는 동안, 트랜잭션 상호연결부로부터 버스 트랜잭션이 그 DRQ 채널과 관련된 버스 트랜잭션에 대해 NRESP(423) 상에서 OKDN 응답을 수신하고 있다는 표시를 수신하고 있지 않는 한, DMA 컨트롤러(212)에 활성 DRQ 표시 DRQ1(920)을 제공한다. 이 경우, 이 표시를 수신하지 않고 있으므로 DMA 컨트롤러(212)에 DRQ1(920)을 어서트한다.
사이클 9(940)에서, DMA 컨트롤러(212)는 그것의 DRQ1(920) 입력의 어서션에 반응하여 프로그래밍된 AHB 버스트 트랜잭션을 시작한다. 이는 트랜잭션이 DRQ1(920) 응답 시퀀스의 일부임을 나타내는, 추가 주소 단계 정보 DRQN(924)를 AHB 주소 단계 동안 CPU 다이 브리지(350)에 제공한다. 이 경우, 요구되는 트랜잭션은 비증분 버스트이므로, 이는 NDIO(421) 커맨드 단계 커맨드 C1(932)이 비증분 버스트 유형을 나타내야 함을 나타내는 NOINCR(724) 주소 단계 버스트 힌트 또한 제공한다. NDIO(421) 커맨드 C1(932)는 CPU 다이 브리지(350)에 의해 브리징된 AHB 트랜잭션을 개시하기 위해 발행된다. ASIC 다이 브리지(365)는 이 커맨드를 수신하고 모니터링되어야 하는 DRQ 채널 넘버가 DRQ1(910)이 되도록 등록한다. 그 트랜잭션에 대한 하나 이상의 데이터 단계 각각 동안, 트랜잭션이 데이터 단계 성공 완료를 표시해야 할 때마다, 그 데이터 단계 동안 커맨드 단계에 표시된 DRQ 채널에 대한 ASIC 다이(271)의 DRQ 요청이 높은 경우 NRESP(423) 표시는 OK가 될 것이다. 대신 데이터 단계 동안 그 ASIC 다이(271) DRQ 요청이 낮은 경우, NRESP(423) 표시는 OKDN이다. 각 데이터 단계에 대해, CPU 다이 AHB 브리지(926)는 성공적인 데이터 단계 완료를 나타내는 것으로 OK 또는 OKDN 중 하나를 수락한다. 각 CPU 다이(246)가 OKDN을 수신하는 경우, 이 수신에 대한 표시를 DRQ 브리지(912)에 추가로 제공한다. DRQ 브리지(912)는, 그 채널에 대한 DMA 컨트롤러(212)에 대한 그 자체의 DRQ 표시를 디어서트하고 그 채널에 대한 그것의 DRQ 동기화 상태를 ARMD로 전환함으로써 이에 응답한다. OKDN의 각 ASIC 다이(271) 전송에 대해, 그 채널에 대한 ASIC 다이(271) DRQ 동기화 상태는 ARMD로 변경될 것이다. 이 예시적인 시퀀스에서, 이것은 사이클 12(942)에서 처음 발생하며, 이는 두 다이 상에서 DRQ1(920 및 910)의 비활성화를 정확한 사이클 방식으로 동기화한다.
일 실시예에서, CPU 다이 및/또는 ASIC 다이는 런타임에 변경될 수 있는 다수의 NDIO(421) 폭 구성으로 구현되어 다른 다이에 대한 다수의 상이한 구성과의 결합을 가능하게 한다. 이는 단일 설계가 상이한 상호연결부 폭을 갖는 다수의 다른 설계와 결합될 수 있는 유연성을 허용하기 때문에 바람직하다. 일부 실시예에서, NEVT 및 NRESP는 또한 재분할될 수 있다.
도 10a는, 예를 들어, 파워업 또는 리셋(1010)에서, 초기 감소 레이트 데이터 발견 절차를 구현하는 일 실시예를 예시하고 있으며, 두 다이가 상호간에 지원되는 상호연결부 폭을 결정하기 위해 서로에 대해 그들의 능력을 협상하는 것이 가능하다. 일 실시예에서, 시작 시 또는 리셋(1010)에 응답하여, 일부 또는 모든 상호연결부 폭의 두 다이가, 퍼스펙티브(perspective) 다이로 제한된 내부 초기화 프로세스(1020)를 실행하고, 둘 다 보편적으로 지원되는 작은 상호연결부 폭을 가정하여 시작될 수 있으며 이를 사용하여 복수의 연결 메시지를 아마도 교환할 수 있는 연결(1030)에 사용할 수 있다. 그 다음, 두 다이는 이 최소 포맷을 능력(1040) 데이터 교환에 사용할 수 있고, 그 다음, 둘 다 지원하는 더 나은 성능 포맷에 대해 합의(1050)할 수 있다. 이들은, 예를 들어, 독립적인 평가에 의해, 또는 CPU 다이(246)가 그것의 선호되는 포맷을 선택하고 CTRL 트랜잭션(106)을 사용하여 모드 변경을 ASIC 다이에 통신하는 것에 의해, 또는 둘 다에 의해, 예를 들어, 두 다이가 최상의 능력 세트를 식별하고 CPU 다이가 트랜잭션 상호연결부(460) 트랜잭션(1060)을 사용하여 그것의 선택된 세트를 ASIC 다이에 전송함으로써 이를 수행할 수 있다. 또한, 정상 동작 동안 전력을 보존하기 위해 최소한의 기능을 유지하거나 인터페이스 전력 소비를 최적화하는 것과 같이 동작 동안 능력을 재협상하는 것이 바람직할 수 있다. 이 경우, 두 다이는 더 낮은 능력 세트에서 시작할 수 있고, CPU 다이는 리셋할 필요 없이 CRTL 메시지(1060)를 사용하여 합의를 변경하기 위해 나중에 선택된 초기 능력 교환(1040)에 항상 기초할 수 있다.
도 10b는, CPU 다이(246)가 일부 또는 모든 상호연결부 폭을 가질 수 있지만, ASIC 다이가 일부 또는 모든 폭 선택(option)에 의해 요구되는 비선택적인 신호 세트 및 다수의 선택적 신호와 같은 제한된 수의 선호 폭만으로 구현되는 것을 허용하는 대안적 발견 프로세스의 실시예이다. ASIC 다이에 의해 제공되는 상호연결부만 CPU 다이(246)에 연결되고, 다른 CPU 다이(246) 선택적 상호연결부 포트는 연결되지 않은 상태로 남겨진다. 리셋 또는 파워업(1010) 및 두 다이의 초기화(1020) 후, ASIC 다이는 그것의 선택적 상호연결부의 일부 또는 전부에 저항 풀(1070)을 적용하여 발견 동안 그것의 연결을 나타낼 수 있다. CPU 다이(246)는 그것의 선택적 상호연결부 포트 중 어느 것이 이 저항 풀의 존재를 검출할 수 있는지를 감지하여 포트 검출(1080)을 수행할 수 있다. 이러한 방식으로 CPU 다이가 ASIC 다이 상호연결부 폭을 결정할 수 있다. 또한, 이 정보를 사용하여 CPU 다이(246)는 임의의 추가 메시지 교환을 필요로 하지 않고 ASIC 다이와 매칭되도록 그것의 내부 능력(1090)을 설정할 것이다. 상호연결부 폭이 검출되면, ASIC 다이가, 예를 들어, NDIO 상에서 적절한 커맨드를 검출하는 것에 의해, 풀을 제거할 수 있다. 일 실시예에서, ASIC 다이는 풀업을 적용할 수 있으며 모두 0으로 코딩된 NDIO 상의 IDLE 커맨드는 풀업 제거를 나타낼 수 있다. 약한 전류 소스와 같은 다른 ASIC 다이 표시 또한 저항 풀의 대안으로서 사용될 수 있다.
도 10a 및/또는 도 10b의 프로세스의 일부 실시예에서, 추가적인 또는 더 적은 동작이 있을 수 있다. 게다가, 동작들의 순서가 변경될 수 있고, 및/또는 둘 이상의 동작들이 단일 동작으로 결합될 수 있다.
일 실시예에서, 개시된 통신 기법은 마스터/슬레이브 관계에서 항상 두 개의 다이를 브리징하는 시스템을 제공한다. CPU 다이는 적어도 하나의 마이크로컨트롤러 코어(CPU)와 그것의 긴밀하게 결합된 메모리를 포함하는 것으로 예상된다. CPU 다이는 단일 CPU 코어로 제한되지 않으며 멀티코어를 동일하게 지원할 것이다. CPU 다이는 또한, 하나 이상의 DMA 컨트롤러와 메모리를 포함할 수 있다. CPU 다이는 리드 프레임에 대한 임의의 직접 연결을 필요로 하지 않을 것으로 예상된다. ASIC 다이는 외부 세계로의 CPU 다이의 게이트웨이가 될 수 있다. 이것은, 특정 애플리케이션을 위해 CPU 다이의 피처를 보완하는 데 필요한 인터페이스와 로직 중 어느 것이든 구현하는 메모리 매핑된 주변 장치를 포함한다. 인터페이스는 버스 트랜잭션, 인터럽트 이벤트 및 DMA 요청을 ASIC 다이 주변 장치와 CPU 다이 간에 CPU에 투명한 방식으로 브리징하며, 이에 따라 CPU 기능을 확장한다. 외부로부터, 사용자에게, 두 다이가 단일 CPU처럼 보이고 거동할 수 있다. CPU 블록 관점에서, 유닛은 이러한 주변 장치에 직접 유선으로 연결되어 있다고 '생각'하지만, 실제로 이들은 두 번째 다이의 일부이다(추가의 세부사항에 대해서는 도 2 및 도 3 참조). 이러한 효과(예컨대, 애플리케이션 개발 멀티-다이 투명성)를 달성하기 위해, 본 명세서는 다수의 실시예를 포함한다.
이 설명에서 특정 선택이 단지 텍스트 및 도면을 준비하는 데 있어서의 편의를 위해 이루어졌으며, 반대되는 표시가 없는 한, 선택은 그 자체로 설명된 실시예의 구조 또는 동작에 관한 추가 정보를 전달하는 것으로 해석되어서는 안 된다. 선택의 예시는, 도면 넘버링에 사용되는 지정의 특정 구성 또는 할당, 및 실시예의 피처 및 요소를 식별하고 참조하는 데 사용되는 요소 식별자(예컨대, 콜아웃 또는 숫자 지정자)의 특정 구성 또는 할당을 포함한다."
"포함한다(include)" 및 “포함한다(comprise)"라는 단어의 다양한 형태는 개방형 범위의 논리적 세트를 설명하는 추상적 개념으로 해석되도록 특별히 의도되었으며, 명시적으로 설명되지 않는 한("내에"라는 단어가 뒤따르는 것과 같이) 물리적 구속을 전달하도록 의도된 것이 아니다.
전술한 실시예가 설명 및 이해의 명확성을 위해 일부 상세하게 설명되었지만, 개시된 통신 기법은 제공된 세부 사항으로 제한되지 않는다. 개시된 통신 기법의 많은 실시예가 있다. 개시된 실시예는 예시적인 것이며 제한적인 것은 아니다.
설명과 일치하는 구성, 배열 및 사용의 많은 변형이 가능하며, 발행된 특허의 청구항의 범위 내에 있음이 이해될 것이다. 예를 들어, 상호연결부 및 기능-단위 비트-폭, 클록 속도, 및 사용되는 기술 유형은 각 컴포넌트 블록의 다양한 실시예에 따라 가변적이다. 상호연결부 및 로직에 주어진 명칭은 단지 예시적인 것이며, 설명된 개념을 제한하는 것으로 해석되어서는 안 된다. 흐름도 및 흐름 다이어그램 프로세스, 액션 및 기능 요소의 순서와 배열은 다양한 실시예에 따라 가변적이다. 또한, 특별히 반대로 진술되지 않는 한, 지정된 값 범위, 사용된 최대 및 최소 값, 또는 다른 특정 사양(예를 들어, 파일 유형, 레지스터 및 버퍼의 엔트리 또는 스테이지의 수)은, 단지 설명된 실시예의 것일 뿐이며, 구현 기술의 개선 및 변경을 추적할 것으로 예상되며, 제한으로 해석되어서는 안된다.
다양한 컴포넌트, 서브시스템, 동작, 기능, 루틴, 서브루틴, 인라인 루틴, 절차, 매크로, 또는 이들의 일부를 구현하기 위해 설명된 것들 대신에, 통상의 기술자에게 알려진 기능적으로 동등한 기법이 채용될 수 있다. 또한, 실시예의 많은 기능적 측면은 하드웨어(예컨대, 일반적으로 전용 회로부) 또는 소프트웨어(예컨대, 일부 방식의 프로그래밍된 컨트롤러 또는 프로세서를 통해) 중 하나에서 선택적으로 실현 가능하며, 이는 실시예에 의존적인 설계 제약 및 더 빠른 프로세싱(이전에 하드웨어에 있던 기능의 소프트웨어로의 이송을 용이하게 하는) 및 더 높은 집적 밀도(이전에 소프트웨어에 있던 기능의 하드웨어로의 이송을 용이하게 하는)의 기술 추세의 함수로서 이해된다. 다양한 실시예의 구체적인 변형은, 이에 제한되는 것은 아니나, 분할에 있어서의 차이; 상이한 폼 팩터 및 구성; 다른 운영 체제 및 다른 시스템 소프트웨어의 사용; 상이한 인터페이스 표준, 네트워크 프로토콜 또는 통신 링크의 사용; 및 특정 애플리케이션의 고유한 엔지니어링 및 비즈니스 제약에 따라 본 명세서에 설명된 개념을 구현할 때 예상되는 다른 변형을 포함한다.
실시예는 설명된 실시예의 많은 측면의 최소 구현에 요구되는 것을 훨씬 넘는 세부사항 및 환경적 맥락으로 설명되었다. 통상의 기술자는 일부 실시예가 나머지 요소 간의 기본적인 협력을 변경하지 않고 개시된 컴포넌트 또는 피처를 생략한다는 것을 인식할 것이다. 따라서, 개시된 세부사항의 대부분은 설명된 실시예의 다양한 측면을 구현하는 데 요구되지 않는다는 것이 이해된다. 나머지 요소가 기존의 접근 방식과 구별 가능한 범위까지, 생략된 컴포넌트 및 피처는 본 명세서에 설명된 개념에 제한되지 않는다.
이러한 설계의 모든 변형은 설명된 실시예에 의해 전달되는 교시에 대한 비실질적 변경이다. 또한, 본 명세서에 설명된 실시예는 다른 컴퓨팅 및 네트워킹 애플리케이션에 광범위한 적용가능성을 가지며, 설명된 실시예의 특정 애플리케이션 또는 산업에 제한되지 않는다는 것이 이해된다. 따라서, 개시된 통신 기법은 발행된 특허의 청구항의 범위 내에 포함되는 수많은 가능한 수정 및 변형을 포함하는 것으로 해석되어야 한다.
개시된 실시예는 임의의 전자 디바이스일 수 있다(또는 임의의 전자 디바이스에 포함될 수 있다). 예를 들어, 전자 디바이스 다음을 포함할 수 있다: 휴대 전화 또는 스마트폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 노트북 컴퓨터, 개인용 또는 데스크톱 컴퓨터, 넷북 컴퓨터, 미디어 플레이어 디바이스, 전자 책 디바이스, MiFi® 디바이스, 스마트 워치, 웨어러블 컴퓨팅 디바이스, 휴대용 컴퓨팅 디바이스, 소비자 전자 디바이스, 액세스 포인트, 라우터, 스위치, 통신 장비, 테스트 장비, 차량, 선박, 비행기, 자동차, 트럭, 버스, 오토바이, 제조 장비, 농장 장비, 건설 장비, 또는 또 다른 유형의 전자 디바이스.
특정 컴포넌트가 실시예를 설명하기 위해 사용되었지만, 대안적인 실시예에서는, 상이한 컴포넌트 및/또는 서브시스템이 존재할 수 있다. 따라서, 시스템 및/또는 집적 회로의 실시예는 더 적은 컴포넌트, 추가 컴포넌트, 상이한 컴포넌트를 포함할 수 있으며, 둘 이상의 컴포넌트가 단일 컴포넌트로 결합될 수 있고, 단일 컴포넌트가 둘 이상의 컴포넌트로 분리될 수 있으며, 그리고/또는 하나 이상의 컴포넌트의 하나 이상의 위치가 변경될 수 있다.
더욱이, 시스템 및/또는 집적 회로의 실시예에서의 회로 및 컴포넌트는 바이폴라, PMOS 및/또는 NMOS 게이트 또는 트랜지스터를 포함하는 아날로그 및/또는 디지털 회로의 임의의 조합을 사용하여 구현될 수 있다. 게다가, 이들 실시예에서의 신호는 대략 이산적인 값을 갖는 디지털 신호 및/또는 연속적인 값을 갖는 아날로그 신호를 포함할 수 있다. 추가적으로, 컴포넌트 및 회로는 싱글 엔드형이거나 또는 차동형일 수 있으며, 전원 공급 장치는 유니폴라 또는 바이폴라일 수 있다. 앞선 실시예에서 전기적 커플링 또는 연결은 직접적이거나 간접적일 수 있다는 점에 유의한다. 앞선 실시예에서, 경로(route)에 대응하는 단일 라인은 하나 이상의 단일 라인 또는 경로를 나타낼 수 있다.
집적 회로는 통신 기법의 기능 중 일부 또는 전부를 구현할 수 있다. 이러한 집적 회로는 통신 기법과 연관된 기능을 구현하는 데 사용되는 하드웨어 및/또는 소프트웨어 메커니즘을 포함할 수 있다.
일부 실시예에서, 본 명세서에 설명된 회로 중 하나 이상을 포함하는 집적 회로 또는 집적 회로의 일부를 설계하기 위한 프로세스의 출력은, 예를 들어, 자기 테이프 또는 광학 또는 자기 디스크와 같은 컴퓨터 판독 가능 매체일 수 있다. 컴퓨터 판독 가능 매체는 집적 회로 또는 집적 회로의 일부로서 물리적으로 예시될 수 있는 회로부를 설명하는 데이터 구조들 또는 다른 정보로 인코딩될 수 있다. 이러한 인코딩에 다양한 포맷이 사용될 수 있지만, 이러한 데이터 구조는 일반적으로 다음과 같은 것으로 기록된다: CIF(Caltech Intermediate Format), GDSII(Calma GDS II Stream Format), EDIF(Electronic Design Interchange Format), OA(OpenAccess), 또는 OASIS(Open Artwork System Interchange Standard). 집적 회로 설계 분야의 통상의 기술자는 위에서 상세히 설명된 유형의 개략도 및 대응하는 설명으로부터 이러한 데이터 구조를 개발할 수 있고, 컴퓨터 판독 가능 매체에 데이터 구조를 인코딩할 수 있다. 집적 회로 제조 분야의 통상의 기술자는, 이러한 인코딩된 데이터를 사용하여 본 명세서에 설명된 회로 중 하나 이상의 회로를 포함하는 집적 회로를 제조할 수 있다.
앞선 실시예에서의 동작 중 일부는 하드웨어 또는 소프트웨어로 구현되었지만, 일반적으로 앞선 실시예에서의 동작은 매우 다양한 구성 및 아키텍처에서 구현될 수 있다. 따라서, 앞선 실시예에서의 동작 중 일부 또는 전부는 하드웨어에서, 소프트웨어에서 또는 양쪽 모두에서 수행될 수 있다. 예를 들어, 통신 기법의 동작 중 적어도 일부는 프로세서에 의해 또는 집적 회로의 펌웨어에서 실행되는 프로그램 명령어를 사용하여 구현될 수 있다.
더욱이, 수치 값의 예시가 앞선 논의에서 제공되었지만, 다른 실시예에서는 상이한 수치 값이 사용된다. 그 결과, 제공된 수치 값은 제한되는 것으로 의도되지 않는다.
앞선 설명에서, '일부 실시예'를 언급한다. '일부 실시예'는 가능한 모든 실시예의 서브세트를 설명하지만, 항상 실시예의 동일한 서브세트를 지정하는 것은 아니라는 점에 유의한다.
전술한 설명은 임의의 통상의 기술자가 개시를 만들고 사용하는 것을 가능하게 하도록 의도되며, 특정 애플리케이션 및 그것의 요구사항의 맥락에서 제공된다. 더욱이, 본 개시의 실시예의 앞선 설명은 예시 및 설명의 목적으로만 제시되었다. 이들은, 완전한(exhaustive) 것으로 또는 본 개시를 개시된 형태로 제한하는 것으로 의도되지 않는다. 따라서, 통상의 기술자에게는 많은 수정 및 변형이 명백할 것이며, 본 개시의 정신 및 범위에서 벗어나지 않고 본 명세서에 정의된 일반 원리가 다른 실시예 및 애플리케이션에 적용될 수 있다. 추가적으로, 앞선 실시예에 대한 논의는 본 개시를 제한하도록 의도되지 않는다. 따라서, 본 개시는 제시된 실시예에 제한되도록 의도되는 것이 아니라, 본 명세서에 개시된 원리 및 피처에 부합하는 가장 넓은 범위를 부여받아야 한다.

Claims (20)

  1. 시스템에 있어서,
    중앙 프로세싱 유닛(central processing unit; CPU) 및 제1 브리지를 갖는 제1 다이;
    제2 브리지를 갖는 제2 다이 - 상기 제2 다이는 제2 CPU를 배제(exclude)하거나 상기 제1 브리지 및 상기 제2 브리지와 관련되지 않은 제3 CPU를 가짐 - ; 및
    상기 제1 브리지 및 상기 제2 브리지에 전기적으로 결합된 다이 대 다이(die-to-die) 상호연결부 - 상기 다이 대 다이 상호연결부는 상기 제1 다이 내의 제1 버스 및 상기 제2 다이 내의 제2 버스보다 더 적은 수의 신호 라인을 포함함 -
    를 포함하고, 상기 제1 브리지 및 상기 제2 브리지는 상기 다이 대 다이 상호연결부의 존재를 마스킹하도록 구성되어, 상기 제1 다이 상의 마스터에게 상기 제2 다이의 기능이 상기 제1 다이 상에서 구현되는 것처럼 보이도록 하는 것인, 시스템.
  2. 제1항에 있어서, 상기 마스터는 상기 CPU를 포함하는 것인, 시스템.
  3. 제1항에 있어서, 상기 제1 다이는 다수의 디바이스를 포함하고, 상기 다수의 디바이스 중 하나 이상의 디바이스는, 상기 다이 대 다이 상호연결부를 통해 상기 제2 다이 상의 버스 슬레이브에 대한 버스 트랜잭션에 관여(engage)하도록 구성된 버스 마스터로서 역할을 하도록 구성되는 것인, 시스템.
  4. 제1항에 있어서, 상기 제2 브리지는 상기 제1 다이 상의 버스 마스터에 의한 트랜잭션을 일시 중지하여, 상기 제1 버스 마스터에 의한 상기 일시 중지된 트랜잭션을 완료하기 전에 상기 다이 대 다이 상호연결부를 통해 상기 제2 다이 상의 제2 버스 마스터에 의한 트랜잭션이 발생하는 것을 허용하도록 구성되는 것인, 시스템.
  5. 제1항에 있어서, 상기 제2 다이는 다수의 디바이스를 포함하며, 상기 다수의 디바이스 중 하나 이상의 디바이스는 상기 제1 브리지 및 상기 제2 브리지에 대해 버스 슬레이브로서 역할을 하도록 구성되는 것인, 시스템.
  6. 제1항에 있어서, 상기 제1 다이는 상기 제2 다이의 단일 인스터스만 구현될 때 상기 다이 대 다이 상호연결부를 통해 단일의 더 넓은 대역폭 연결을 제공하도록 구성되고, 상기 제2 다이의 두 개의 인스턴스가 있는 구현에 대해서는 상기 다이 대 다이 상호연결부를 통해 더 낮은 두 개의 대역폭 연결을 허용하는 것인, 시스템.
  7. 제1항에 있어서, 상기 제1 다이 상에서 구현된 소프트웨어 모델이 단일 다이 시스템 상에서 구현된 것과 동일한 것인, 시스템.
  8. 제1항에 있어서, 상기 제1 버스 및 상기 제2 버스는 공통 포맷을 갖는 것인, 시스템.
  9. 제8항에 있어서, 상기 포맷은, ARM 어드밴스드 마이크로컨트롤러 버스 아키텍처(Advanced Microcontroller Bus Architecture; AMBA) 어드밴스드 고성능 버스(Advanced High-Performance Bus; AHB), AHBLite 또는 AHB5를 포함하는 것인, 시스템.
  10. 제8항에 있어서, 상기 포맷은 Wishbone 아키텍처를 포함하는 것인, 시스템.
  11. 제1항에 있어서,
    상기 제2 다이 상의 제3 버스에 전기적으로 결합된 상기 제2 다이 상의 제2 버스 마스터 및 버스 슬레이브로서 상기 제3 버스에 전기적으로 결합된 제3 브리지;
    상기 제1 다이 상의 제4 버스에 전기적으로 결합된 상기 제1 다이 상의 제2 버스 슬레이브 및 버스 마스터로서 상기 제4 버스에 전기적으로 결합된 제4 브리지; 및
    상기 제3 브리지와 상기 제4 브리지 사이에서 제2 신호를 전달하도록 구성된 제2 다이 대 다이 상호연결부를 더 포함하고, 상기 제2 다이 대 다이 상호연결부의 수는 상기 제2 버스 마스터와 상기 제3 브리지 사이의 신호 라인의 수보다 적고,
    상기 제1 브리지, 상기 제2 브리지, 및 상기 다이 대 다이 상호연결부는, 버스 트랜잭션이 단일 다이 시스템에서 발생하는 것과 동일한 방식으로 상기 버스 슬레이브와의 상기 버스 트랜잭션에 상기 버스 마스터가 관여하는 것을 가능하게 하도록 구성되는 것인, 시스템.
  12. 제11항에 있어서, 상기 제2 다이 상의 버스 슬레이브에 액세스하기 위한 CPU 명령어는 상기 버스 슬레이브가 상기 제1 다이 상에서 구현된 것과 동일한 것인, 시스템.
  13. 제1 브리지를 갖는 제1 다이 및 제2 브리지를 갖는 제2 다이 사이에서 통신하는 방법에 있어서,
    상기 제1 브리지에서, 상기 제1 다이 내의 중앙 프로세싱 유닛(central processing unit; CPU)으로부터 상기 제2 다이의 기능에 대응하는 신호를 수신하는 단계;
    상기 제1 브리지 및 상기 제2 브리지에 전기적으로 결합된 다이 대 다이 상호연결부를 통해 신호를 상기 제2 브리지로 통신하는 단계 - 상기 다이 대 다이 상호연결부는 상기 제1 다이 내의 제1 버스 및 상기 제2 다이 내의 제2 버스보다 더 적은 수의 신호 라인을 포함함 -
    를 포함하고, 상기 신호를 통신할 때, 상기 제1 브리지 및 상기 제2 브리지는 상기 다이 대 다이 상호연결부의 존재를 마스킹하여, 상기 제1 다이 상의 마스터에게 상기 제2 다이의 기능이 상기 제1 다이 상에서 구현되는 것처럼 보이도록 하고,
    상기 제2 다이는 제2 CPU를 배제하거나 상기 제1 브리지 및 상기 제2 브리지와 관련되지 않은 제3 CPU를 가지는 것인, 방법.
  14. 제13항에 있어서, 상기 마스터는 상기 CPU를 포함하는 것인, 방법.
  15. 제13항에 있어서, 상기 제1 다이는 다수의 디바이스를 포함하고, 상기 다수의 디바이스 중 하나 이상의 디바이스는, 상기 다이 대 다이 상호연결부를 통해 상기 제2 다이 상의 버스 슬레이브에 대한 버스 트랜잭션에 관여(engage)하는 버스 마스터로서 역할을 하는 것인, 방법.
  16. 제13항에 있어서, 상기 방법은, 상기 제2 브리지가 상기 제1 다이 상의 버스 마스터에 의한 트랜잭션을 일시 중지하여, 상기 제1 버스 마스터에 의한 상기 일시 중지된 트랜잭션을 완료하기 전에 상기 다이 대 다이 상호연결부를 통해 상기 제2 다이 상의 제2 버스 마스터에 의한 트랜잭션이 발생하는 것을 허용하는 단계를 포함하는 것인, 방법.
  17. 제13항에 있어서, 상기 제2 다이는 다수의 디바이스를 포함하며, 상기 다수의 디바이스 중 하나 이상의 디바이스는 상기 제1 브리지 및 상기 제2 브리지에 대해 버스 슬레이브로서 역할을 하는 것인, 방법.
  18. 제13항에 있어서, 상기 제1 다이는 상기 제2 다이의 단일 인스터스만 구현될 때 단일의 더 넓은 대역폭 상호연결부를 제공하고, 상기 제2 다이의 두 개의 인스턴스가 있는 구현에 대해서는 더 낮은 두 개의 대역폭 연결을 허용하는 것인, 방법.
  19. 제13항에 있어서, 상기 제1 다이 상에서 구현된 소프트웨어 모델이 단일 다이 시스템 상에서 구현된 것과 동일한 것인, 방법.
  20. 전자 디바이스에 있어서,
    중앙 프로세싱 유닛(central processing unit; CPU) 및 제1 브리지를 갖는 제1 다이;
    제2 브리지를 갖는 제2 다이 - 상기 제2 다이는 제2 CPU를 배제하거나 상기 제1 브리지 및 상기 제2 브리지와 관련되지 않은 제3 CPU를 가짐 - ; 및
    상기 제1 브리지 및 상기 제2 브리지에 전기적으로 결합된 다이 대 다이(die-to-die) 상호연결부 - 상기 다이 대 다이 상호연결부는 상기 제1 다이 내의 제1 버스 및 상기 제2 다이 내의 제2 버스보다 더 적은 수의 신호 라인을 포함함 -
    를 포함하고, 상기 제1 브리지 및 상기 제2 브리지는 상기 다이 대 다이 상호연결부의 존재를 마스킹하도록 구성되어, 상기 제1 다이 상의 마스터에게 상기 제2 다이의 기능이 상기 제1 다이 상에서 구현되는 것처럼 보이도록 하는 것인, 전자 디바이스.
KR1020237037556A 2020-04-15 2022-03-26 심리스하게 집적된 마이크로컨트롤러 칩 KR20230164152A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063010341P 2020-04-15 2020-04-15
US17/225,057 2021-04-07
US17/225,057 US11487683B2 (en) 2020-04-15 2021-04-07 Seamlessly integrated microcontroller chip
PCT/US2022/022068 WO2022216469A1 (en) 2020-04-15 2022-03-26 Seamlessly integrated microcontroller chip

Publications (1)

Publication Number Publication Date
KR20230164152A true KR20230164152A (ko) 2023-12-01

Family

ID=78081836

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237037556A KR20230164152A (ko) 2020-04-15 2022-03-26 심리스하게 집적된 마이크로컨트롤러 칩

Country Status (6)

Country Link
US (11) US11487683B2 (ko)
EP (1) EP4320522A1 (ko)
JP (1) JP2024515055A (ko)
KR (1) KR20230164152A (ko)
CN (1) CN117321580A (ko)
WO (1) WO2022216469A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180276175A1 (en) * 2017-03-22 2018-09-27 National Instruments Corporation Direct Network Access by a Memory Mapped Peripheral Device for Scheduled Data Transfer on the Network
CN111061663B (zh) * 2019-12-15 2021-03-26 苏州浪潮智能科技有限公司 一种数据传输方法、装置及相关组件
US11675729B2 (en) * 2021-09-28 2023-06-13 Shanghai Zhaoxin Semiconductor Co., Ltd. Electronic device and operation method of sleep mode thereof
TWI792795B (zh) * 2021-12-22 2023-02-11 凌陽科技股份有限公司 具自動切換功能之小晶片系統及其訊號溝通方法

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3588831A (en) * 1968-11-13 1971-06-28 Honeywell Inf Systems Input/output controller for independently supervising a plurality of operations in response to a single command
TW448365B (en) 1999-11-15 2001-08-01 Via Tech Inc Bus arbitration method providing preemption function between control chip sets
IL148834A (en) * 2000-09-10 2007-03-08 Sandisk Il Ltd Removable, active, personal storage device, system and method
US7353362B2 (en) 2003-07-25 2008-04-01 International Business Machines Corporation Multiprocessor subsystem in SoC with bridge between processor clusters interconnetion and SoC system bus
US7143246B2 (en) 2004-01-16 2006-11-28 International Business Machines Corporation Method for supporting improved burst transfers on a coherent bus
EP1605618A1 (en) * 2004-06-11 2005-12-14 Alcatel Bandwidth optimization in transport of Ethernet frames
JP4555029B2 (ja) * 2004-09-01 2010-09-29 株式会社日立製作所 ディスクアレイ装置
KR100704627B1 (ko) * 2005-04-25 2007-04-09 삼성전자주식회사 보안 서비스 제공 장치 및 방법
US7539809B2 (en) * 2005-08-19 2009-05-26 Dell Products L.P. System and method for dynamic adjustment of an information handling systems graphics bus
US20070094436A1 (en) * 2005-10-20 2007-04-26 Keown William F Jr System and method for thermal management in PCI express system
US7447824B2 (en) * 2005-10-26 2008-11-04 Hewlett-Packard Development Company, L.P. Dynamic lane management system and method
US20080172510A1 (en) * 2007-01-16 2008-07-17 Wei-Jen Chen Parallel bus architecture and related method for interconnecting sub-systems utilizing a parallel bus
US8473269B1 (en) * 2007-02-27 2013-06-25 Xilinx, Inc. System-level hardware and software development and co-simulation system
EP2158585A1 (en) * 2007-04-17 2010-03-03 Massimiliano Ciccone Real-time continuous digital control of parameters and settings of analogue sound effects
US7975084B1 (en) * 2008-02-06 2011-07-05 American Megatrends, Inc. Configuring a host computer using a service processor
US8024620B2 (en) * 2008-07-25 2011-09-20 Freescale Semiconductor, Inc. Dynamic address-type selection control in a data processing system
US8510577B2 (en) * 2008-07-28 2013-08-13 Microsoft Corporation Reducing power consumption by offloading applications
KR20120041008A (ko) * 2010-10-20 2012-04-30 삼성전자주식회사 버스 시스템
US9223978B2 (en) * 2011-10-28 2015-12-29 Confer Technologies, Inc. Security policy deployment and enforcement system for the detection and control of polymorphic and targeted malware
CN103092701B (zh) * 2011-10-31 2017-02-08 联想(北京)有限公司 一种通信方法、装置及电子设备
US8954721B2 (en) * 2011-12-08 2015-02-10 International Business Machines Corporation Multi-chip initialization using a parallel firmware boot process
JP6017584B2 (ja) * 2011-12-21 2016-11-02 インテル コーポレイション 動的リンク幅調整
CN103455455A (zh) * 2012-05-30 2013-12-18 鸿富锦精密工业(深圳)有限公司 串口切换系统、服务器及串口切换方法
US20140119463A1 (en) * 2012-10-29 2014-05-01 Texas Instruments Incorporated Scalable Multifunction Serial Link Interface
US10311014B2 (en) * 2012-12-28 2019-06-04 Iii Holdings 2, Llc System, method and computer readable medium for offloaded computation of distributed application protocols within a cluster of data processing nodes
US9224452B2 (en) * 2013-01-17 2015-12-29 Qualcomm Incorporated Heterogeneous memory systems, and related methods and computer-readable media for supporting heterogeneous memory access requests in processor-based systems
CN104956347B (zh) * 2013-02-28 2018-05-22 英特尔公司 将一种互连协议的枚举和/或配置机制用于不同的互连协议
JP5815069B2 (ja) * 2013-09-17 2015-11-17 キヤノン株式会社 画像形成装置、画像形成装置の制御方法、及びコンピュータプログラム
KR101558687B1 (ko) * 2013-12-10 2015-10-08 현대자동차주식회사 직렬 통신 테스트 장치, 시스템 및 방법
JP6461959B2 (ja) 2013-12-26 2019-01-30 インテル コーポレイション マルチチップパッケージリンク
US9798378B2 (en) * 2014-03-31 2017-10-24 Google Technology Holdings LLC Apparatus and method for awakening a primary processor out of sleep mode
US10152445B2 (en) * 2015-02-17 2018-12-11 Mediatek Inc. Signal count reduction between semiconductor dies assembled in wafer-level package
US20160285624A1 (en) 2015-03-26 2016-09-29 Intel Corporation Pseudorandom bit sequences in an interconnect
CN112612730A (zh) 2015-09-26 2021-04-06 英特尔公司 多芯片封装链路错误检测
KR102415388B1 (ko) * 2015-11-13 2022-07-01 삼성전자주식회사 시스템 온 칩 및 그것의 보안 디버깅 방법
KR102416465B1 (ko) * 2015-11-30 2022-07-04 삼성전자주식회사 공유 자원을 효율적으로 관리하는 데이터 처리 시스템
US10852955B2 (en) * 2015-12-29 2020-12-01 EMC IP Holding Company LLC Method and system for accessing data objects stored in a storage system using object descriptors allocated by clients
US10230235B2 (en) * 2016-01-28 2019-03-12 Renesas Electronics Corporation Semiconductor device and power feed system
US9946674B2 (en) 2016-04-28 2018-04-17 Infineon Technologies Ag Scalable multi-core system-on-chip architecture on multiple dice for high end microcontroller
WO2018000406A1 (en) * 2016-07-01 2018-01-04 Intel Corporation Asymmetric lanes in point-to-point interconnect
US10599590B2 (en) * 2016-11-30 2020-03-24 International Business Machines Corporation Uniform memory access architecture
US10445278B2 (en) 2016-12-28 2019-10-15 Intel Corporation Interface bridge between integrated circuit die
US10346342B1 (en) * 2017-03-07 2019-07-09 Amazon Technologies, Inc. Uniform memory access architecture
US10860449B2 (en) * 2017-03-31 2020-12-08 Intel Corporation Adjustable retimer buffer
US10642338B2 (en) * 2017-09-28 2020-05-05 Intel Corporation Hierarchical power management unit for low power and low duty cycle devices
JP6745289B2 (ja) 2018-01-10 2020-08-26 インテル コーポレイション マルチチップパッケージリンク
US10496594B1 (en) 2018-06-01 2019-12-03 Nxp Usa, Inc. Inter-processor communication method for access latency between system-in-package (SIP) dies
WO2020037620A1 (zh) * 2018-08-23 2020-02-27 深圳市汇顶科技股份有限公司 中断处理方法、主芯片、从芯片及多芯片系统
US10852352B2 (en) * 2018-10-25 2020-12-01 Dell Products, L.P. System and method to secure FPGA card debug ports
US10855600B2 (en) * 2018-11-13 2020-12-01 Intel Corporation System, apparatus and method for traffic shaping of data communication via an interconnect
US10719357B1 (en) * 2019-02-26 2020-07-21 Nxp Usa, Inc. Hardware for supporting OS driven load anticipation based on variable sized load units
US11232049B2 (en) * 2019-12-13 2022-01-25 Micron Technology, Inc. Memory module with computation capability
US11347875B2 (en) * 2020-01-28 2022-05-31 Intel Corporation Cryptographic separation of memory on device with use in DMA protection

Also Published As

Publication number Publication date
US12026112B2 (en) 2024-07-02
US11782858B2 (en) 2023-10-10
CN117321580A (zh) 2023-12-29
US11487684B2 (en) 2022-11-01
US20220214985A1 (en) 2022-07-07
US11599489B2 (en) 2023-03-07
US20210326277A1 (en) 2021-10-21
US11487683B2 (en) 2022-11-01
US20230185744A1 (en) 2023-06-15
US20210326283A1 (en) 2021-10-21
US20210326288A1 (en) 2021-10-21
US20210326489A1 (en) 2021-10-21
US11741033B2 (en) 2023-08-29
EP4320522A1 (en) 2024-02-14
US20210326289A1 (en) 2021-10-21
US20220222190A1 (en) 2022-07-14
US20210326073A1 (en) 2021-10-21
US11487685B2 (en) 2022-11-01
US11726935B2 (en) 2023-08-15
US20240126708A1 (en) 2024-04-18
WO2022216469A1 (en) 2022-10-13
US20210326287A1 (en) 2021-10-21
JP2024515055A (ja) 2024-04-04

Similar Documents

Publication Publication Date Title
US10409347B2 (en) Domain-differentiated power state coordination system
US11487684B2 (en) Power management in a seamlessly integrated microcontroller chip
US9009512B2 (en) Power state synchronization in a multi-core processor
US6131131A (en) Computer system including an enhanced communication interface for an ACPI-compliant controller
EP2469377A2 (en) Decentralized power management distributed among multiple processor cores
JP2002049576A (ja) チップ搭載システムのためのバス・アーキテクチャ
KR20050052547A (ko) 이벤트 전달
WO2002082267A1 (en) Fpga coprocessing system
US8531893B2 (en) Semiconductor device and data processor
US20130054852A1 (en) Deadlock Avoidance in a Multi-Node System
US10176132B2 (en) Configuration arbiter for multiple controllers sharing a link interface
JP2021090188A (ja) ストリーミングファブリックインタフェース
JP2018502359A (ja) デッドロック回避のための方法及び回路
US7689758B2 (en) Dual bus matrix architecture for micro-controllers
Zou et al. DirectNVM: Hardware-accelerated NVMe SSDs for high-performance embedded computing
US20160224486A1 (en) Interrupt-driven i/o arbiter for a microcomputer system
Hurst How to Accelerate Peripheral Monitoring in Low Power Wearables with DMA
KR20080097756A (ko) 반도체 메모리 데이터 전송 제어장치