KR102333544B1 - An interrupt-driven i/o arbiter for a microcomputer system - Google Patents

An interrupt-driven i/o arbiter for a microcomputer system Download PDF

Info

Publication number
KR102333544B1
KR102333544B1 KR1020140128830A KR20140128830A KR102333544B1 KR 102333544 B1 KR102333544 B1 KR 102333544B1 KR 1020140128830 A KR1020140128830 A KR 1020140128830A KR 20140128830 A KR20140128830 A KR 20140128830A KR 102333544 B1 KR102333544 B1 KR 102333544B1
Authority
KR
South Korea
Prior art keywords
arbiter
cpu
block
fifo
bus
Prior art date
Application number
KR1020140128830A
Other languages
Korean (ko)
Other versions
KR20160036794A (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 유니버시티 테크놀로지 말레이시아
Priority to KR1020140128830A priority Critical patent/KR102333544B1/en
Publication of KR20160036794A publication Critical patent/KR20160036794A/en
Application granted granted Critical
Publication of KR102333544B1 publication Critical patent/KR102333544B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/4031Coupling between buses using bus bridges with arbitration
    • 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
    • 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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4265Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
    • G06F13/4273Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus using a clocked protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor

Abstract

본 발명의 I/O 버스 중재기는 모든 I/O 액세스에서 버스트모드 데이터전송을 하도록 CPU(프로세서)와 같이 사용되고, DMA 신호, 버스-리퀘스트/버스-그랜트 신호, 브리지가 불필요하여, PCI와 같은 주변기기에 버스시스템을 연결할 필요를 배제한다. I/O 중재기는 원형 버퍼가 달린 인터럽트 컨트롤러, FIFO, 및 호환성 CPU 인터럽트 신호와 함께 적절한 인터페이스 버퍼에 디바이스를 직접 연결하기 위한 포트엔진들로 이루어지고, 하나의 중재기로만 동기 데이터 전송을 할 수 있다.The I/O bus arbiter of the present invention is used with a CPU (processor) to perform burst mode data transfer in all I/O accesses, and DMA signals, bus-request/bus-grant signals, and bridges are unnecessary, so peripheral devices such as PCI It eliminates the need to connect the bus system to The I/O arbiter consists of a circular buffered interrupt controller, FIFO, and port engines to directly connect the device to the appropriate interface buffer with a compatible CPU interrupt signal, and only one arbiter is capable of synchronous data transfer. .

Description

마이크로컴퓨터 시스템용 인터럽트-구동 I/O 중재기{AN INTERRUPT-DRIVEN I/O ARBITER FOR A MICROCOMPUTER SYSTEM}AN INTERRUPT-DRIVEN I/O ARBITER FOR A MICROCOMPUTER SYSTEM

본 발명은 마이크로컴퓨터 시스템의 I/O 버스 중재에 관한 것이다.The present invention relates to I/O bus arbitration in microcomputer systems.

종래의 I/O 버스 중재기와 관련 기술개발Conventional I/O bus arbiter and related technology development

종래의 I/O(Input/Output) 버스 중재기는 버스는 물론 중재기도 다수인 SOC(System-On-Chip) 아키텍처의 간단한 것은 물론 복잡한 멀티버스 시스템에 필요하다. 예컨대, Intel IXP435와 같은 신형 통신 프로세서에는 하나의 칩에 3개의 버스 중재기와 4가지 버스와 2개의 브리지가 있는데, SOC가 싱글-CPU 기반 ARM 아키텍쳐인 경우나, 2개의 하드웨어 지원 액셀러레이터나 코프로세서인 경우에도 그렇다. 컴퓨터 시스템의 인텔 펜티엄 시리즈와 다른 마이크로컴퓨터 기반 SOC 시스템도 같은 체계로 동작한다.A conventional I/O (Input/Output) bus arbiter is required for a simple as well as a complex multi-bus system of a System-On-Chip (SOC) architecture in which there are multiple arbiters as well as a bus. For example, a newer communications processor such as the Intel IXP435 has three bus arbiters, four buses and two bridges on one chip, if the SOC is a single-CPU based ARM architecture, or two hardware-assisted accelerators or coprocessors. even if so The Intel Pentium series of computer systems and other microcomputer-based SOC systems operate in the same manner.

대부분의 중재기는 적어도 2개의 신호, 즉 디바이스로부터의 버스요청 신호를 위한 REQ-GNT(Request-Grant) 쌍과, 중재기로부터의 해당 버스 그랜트 신호를 필요로 한다. CPU(프로세서), DMA(direct memory access), INT(interrupt) 및 BUSREQ-BUSGNT(bus requet-bus grant; 버스 제어신호쌍)에도 마찬가지다. 즉, 간단한 중재기를 구현하는데 특정 시스템에 대한 완전한 이해와 친밀도가 필요하다. 흔히 DMA는 PC 시스템에서 가장 복잡한 디바이스이기도 하다.Most arbiters require at least two signals: a REQ-GNT (Request-Grant) pair for a bus request signal from the device, and a corresponding bus grant signal from the arbiter. The same is true for CPU (processor), DMA (direct memory access), INT (interrupt) and BUSREQ-BUSGNT (bus request-bus grant; bus control signal pair). In other words, a complete understanding and familiarity with a specific system is required to implement a simple mediator. Often, DMA is also the most complex device in a PC system.

종래의 중재기들은 I/O 디바이스 조건에 대해 지식이 빈약하거나 많은 경우 전혀 지식이 없어, 우선순위를 정하는 알고리즘이나 에이징에 대한 타임스탬프와 같은 복잡한 하드웨어 체계는 물론, 기타 디바이스 전송 능력을 예측하여 단순화할 수 있는 다른 체계들에 필요하다. 이런 체계들은 광대역 디바이스에 필요한 패킷과 같은 현재의 프로세싱 모듈의 관점에서 개조가 필요하다.Conventional arbiters have little or no knowledge of I/O device conditions, in many cases predicting and simplifying complex hardware schemes such as prioritization algorithms and timestamps for aging, as well as other device transmission capabilities. It is necessary for other systems that can do it. These schemes need to be retrofitted in terms of current processing modules, such as packets required for broadband devices.

I/O 중재기를 구현한 방법의 일례로 인기가 있는 중재기 칩을 종래의 시스템에 사용한 방법에 있다. Intel 8289는 모든 인텔기반 펜티엄 컴퓨터의 원조격인 Intel 8288 버스 컨트롤러와 Intel 8086 CPU에 동작하도록 설계된 실험적인 중지개 칩들 중의 하나이다. 1978년 Intel 8086 CPU가 도입된 뒤 생긴 MCS-86 지원칩 집단의 일부이다. 8289로는 디바이스들이 버스중재를 필요할 때는 물론 중재기가 중재를 필요로할 때도 멀티-중재 칩이 좀더 혼란을 일으킬 수 있다. An example of how an I/O arbiter is implemented is a method using a popular arbiter chip in a conventional system. The Intel 8289 is one of the experimental stopover chips designed to work with the Intel 8288 bus controller and the Intel 8086 CPU, the predecessor of all Intel-based Pentium computers. It is part of the MCS-86 support chip family that was created after the introduction of the Intel 8086 CPU in 1978. With the 8289, multi-arbitration chips can be more disruptive when devices need bus arbitration as well as when an arbiter needs arbitration.

복잡한 중재체계에 대한 개발은 이미 이루어지고 있다. 2006년 8월 22일 등록허여된 삼성전자의 미국특허 7096293B2에 소개된 중재체계는 메인 CPU 신호인 INT(interrupt) 신호에 크게 의존하고 있다. 그러나, 이 경우에도 중재를 위해서는 기존의 REQ-GNT 신호쌍이 여전히 필요하여, 이 특허는 PCU 버스를 필수로 하고있다.The development of complex intervention systems is already underway. The arbitration system introduced in US Patent 7096293B2 of Samsung Electronics, which was granted on August 22, 2006, relies heavily on the INT (interrupt) signal, which is the main CPU signal. However, even in this case, the existing REQ-GNT signal pair is still required for arbitration, so this patent makes the PCU bus essential.

모토롤라의 1993년 2월 9일 등록된 미국특허 5,185,694에 소개된 블록 MOVE는 CPU를 이용해 프로그래머가 데이터의 버스트-전송을 제어하도록 한다. 이 발명에서는 메모리 사이에 버스트-전송을 채택하지만, 이런 아이디어를 I/O에도 적용할 수 있다. Block MOVE, introduced in US Patent 5,185,694 issued on February 9, 1993 by Motorola, uses a CPU to allow a programmer to control burst-transmission of data. Although this invention employs burst-transfer between memories, this idea can also be applied to I/O.

버스트 전송이나 동기 데이터전송은 1993년 이래의 모든 특허의 시스템에 필요한 것으로, 본 발명자들은 버스트-전송을 1994년에 인텔에서 만든 PCI 버스 사양의 기본 동작으로 보았다. 이때부터 마이크로컴퓨터에 사용된 일반 SDRAM에도 같은 개념을 적용할 수 있고, 2002년의 DDR과 2009년의 DDR2에도 마찬가지다.Burst transfer or synchronous data transfer is required for all patented systems since 1993, and the present inventors viewed burst-transfer as the basic operation of the PCI bus specification made by Intel in 1994. From this point on, the same concept can be applied to general SDRAM used in microcomputers, and the same applies to DDR2 in 2002 and DDR2 in 2009.

데이터의 버스트-전송을 위해서는 송신포드와 수신포트 양쪽의 속도차를 일치시키기 위해 FIFO가 필요하다. 이런 추세에 맞춰 본 발명의 I/O 중재 기술을 개발하게 되었다.For burst-transmission of data, a FIFO is needed to match the speed difference between the sending and receiving ports. In line with this trend, the I/O arbitration technology of the present invention was developed.

I/O 중재기I/O Arbitrator

현재의 마이크로컴퓨터 시스템은 버스, 중재기, 인터럽트, DMA, 브리지들을 별도로 취급되어야 하는 별개의 엔티티로 본다. 현재의 모델은 유닉스 논리 디바이스 드라이버 모델을 캐릭터 디바이스와 블록 디바이스로 구분해 취급한다. 디바이스마다 I/O 버스가 달라야 한다. I/O 버스가 하나 이상 있을 때는 이들 버스들을 격리하고 버스에서 버스로 도약하기 위한 브리지가 있어야 한다. 이 경우, 각 버스에 묶인 디바이스들의 중재기는 물론, 각각의 중재기 사이를 중재하기 위한 추가 중재기도 있어야 한다. 또, 이들 독립적인 데이터전송을 관리하기 위해 인터럽트 신호인 DMA 신호들을 연결해야 한다. 이런 복잡한 체계의 일례가 Intel IXP435 통신 프로세서와 인텔 펜티엄 시리즈 프로세서가 있는데, 이들 모두 PC용이다.Current microcomputer systems see buses, arbiters, interrupts, DMAs, and bridges as separate entities that must be treated separately. The current model treats the Unix logical device driver model as a character device and a block device. Each device must have a different I/O bus. When there is more than one I/O bus, there must be a bridge to isolate these buses and jump from bus to bus. In this case, there must be an arbiter of devices bound to each bus, as well as an additional arbiter to arbitrate between each arbiter. In addition, in order to manage these independent data transfers, DMA signals, which are interrupt signals, must be connected. An example of such a complex system is the Intel IXP435 communications processor and the Intel Pentium series processor, both for PCs.

본 발명은 이런 모든 기능적 목적들을 하나로 합치면서도 시스템을 단순화하기 위해 몇가지 특징들을 없애면서도 더 좋은 모델을 제공하는 것을 목적으로 한다.An object of the present invention is to provide a better model while removing some features to simplify the system while combining all these functional purposes into one.

새로운 I/O 중재기는 많은 최신 시스템에서 수년간 사용한 뒤 모든 입증된 데이터전송 기술들을 통합하는데, 예컨대 버스트-전송이나 동기 데이터전송, FIFO, 및 FPGA(Field-Programmable-Gate-Array)에 의해 작동되는 하드웨어 엔진들을 통합하여, 이해하고 채택하기 간단함은 물론 더 좋지는 않더라도 적어도 동등한 성능을 낼 수 있는 I/O 중재기를 안출하였다. 주요 특징은 본 발명을 제외한 다른 중재기들 없이도 버스 액세스를 위한 디바이스를 처리하는데 일관성이 있다는 것이다.The new I/O Arbitrator incorporates all proven data transfer technologies after years of use in many modern systems, such as burst-transfer or synchronous data transfer, FIFO, and hardware powered by Field-Programmable-Gate-Array (FPGA). By unifying the engines, we have come up with an I/O arbiter that is simple to understand and adopt, as well as at least equivalent if not better. A key feature is the consistency in handling the device for bus access without other intermediaries other than the present invention.

클린 CPU 디자인에 의해 가장 잘 지원되는 클린 디자인으로부터, PCI 버스를 포함한 I/O 중재기에 사용된 종래의 인터페이스 신호는 불필요하고, CPU로 제어되는 3개 동기 클록신호 세트와 CPU 인터럽트 신호만을 이용해 시스템에서 완벽히 제거될 수 있다.From the clean design best supported by the clean CPU design, the conventional interface signals used in the I/O arbiter, including the PCI bus, are unnecessary, and only a set of three synchronous clock signals controlled by the CPU and the CPU interrupt signal can be used in the system. can be completely removed.

그 이유는 컴퓨터 시스템에서의 모든 처리가 인터럽트에 의해 제어되기 때문이다. 따라서, 시스템 디자이너로 하여금 인터럽트 관점에서 생각하게 하는 인터럽트-구동 프로세서를 생성하는데 있어서 인터럽트 신호들을 약화시키는 다른 제어신호들은 필요없게 할 수 있다. 모든 I/O 동작들을 관찰하고 하여, 내부 동작들을 하나의 균일한 인터럽트 이베트처럼 흐르게 하고 소스들을 인터럽트 컨트롤러에 집어넣는다. The reason is that all processing in the computer system is controlled by interrupts. Thus, in creating an interrupt-driven processor that forces the system designer to think in terms of interrupts, other control signals that dampen interrupt signals may not be needed. By observing and doing all I/O operations, the internal operations flow like one uniform interrupt event and push the sources into the interrupt controller.

이런 패러다임은 캐릭터, 블록, 부트 ROM 디바이스나 네트웍 디바이스와 같은 이질적 디바이스들을 FIFO와 버퍼를 갖춘 하나의 동질의 디바이스처럼 보는데 있다. 동직의 디바이스들은 I/O 중재 엔진과 CPU에 동일한 인터페이스를 제공하여, 결국 버퍼와 FIFO의 크기만 다르게한다. 이 경우 CPU가 디바이스내의 제어 레지스터에 직접 액세스하지 못하고, 완전한 32-비트 워드 블록만을 리드/라이트할 수 있어, 소프트웨어 레벨에서의 물리적 디바이스 드라이버 코드를 없애게 된다.The paradigm is to view heterogeneous devices such as characters, blocks, boot ROM devices, and network devices as one homogeneous device with FIFOs and buffers. Homogeneous devices provide the same interface to the I/O arbitration engine and CPU, resulting in different sizes of buffers and FIFOs. In this case, the CPU does not have direct access to the control registers in the device and can only read/write complete 32-bit word blocks, eliminating the physical device driver code at the software level.

이런 모델은 복잡성 여부와 무관하게 디바이스에 직접 연결이 가능하고, 하나의 I/O 중재기 이외에는 버스 브리지와 전기신호 한계를 갖는 PCI와 같은 모든 버스가 필요 없다.These models allow direct connection to devices of any complexity and eliminate the need for bus bridges and all buses such as PCI with electrical signal limitations other than one I/O arbiter.

발명의 요약Summary of the invention

도 1은 본 발명의 I/O 중재기의 개략도로서 CPU(100) 내부의 3개 주요 요소와 디바이스 인터페이스 신호(106), 중재기 인터럽트 컨트롤러(105), FIFO(104) 및 포트엔진(103)을 보여준다. 성질이 캐릭터이든 블록 데이터전송이든 상관없이 디바이스는 포트엔진에 연결되고, 포트엔진은 디바이스의 포맷과 디바이스의 신호제어를 위한 엔진이나 FSM(Finite-State-Machine)으로부터 32-비트 워드변환을 담당한다. 1 is a schematic diagram of an I/O arbiter of the present invention with three main elements inside the CPU 100 and a device interface signal 106, an arbiter interrupt controller 105, a FIFO 104 and a port engine 103. shows Regardless of the nature of the character or block data transmission, the device is connected to the port engine, and the port engine is responsible for converting the 32-bit word from the FSM (Finite-State-Machine) or the engine for device format and signal control. .

이런 I/O 중재기(101)의 주요 기능은 7개의 FIFO 버스들 중의 하나를 CPU(101) 버스에 연결하되, 버스트 전송시 한번에 하나씩 한다. 디바이스는 전용 INT 신호를 작동하여 관련 FIFO에 의한 주의를 요청하고, 이때 중재기 인터럽트 컨트롤러(105)는 이 요청을 선입선출 기반으로 원형 버퍼(216)에 큐(queu)한다. The main function of this I/O arbiter 101 is to connect one of the seven FIFO buses to the CPU 101 bus, one at a time in a burst transfer. The device activates a dedicated INT signal to request attention by the associated FIFO, where the arbiter interrupt controller 105 queues the request in the circular buffer 216 on a first-in-first-out basis.

I/O 중재과정은 포트엔진(103)에서 시작하고, 포트엔진은 디바이스(102)로부터의 모든 데이터 포맷을 완벽한 32-비트 워드로 변환한다. 디바이스는 32-비트 데이터 패킷을 전송하고, I/O 중재기는 이 데이터를 관련 FIFO(104)로 버퍼해야 한다. 결국 CPU(100)는 모든 다른 프로세스와 마찬가지로 이 데이터를 메인메모리내의 버퍼에 두어야 한다. FIFO(104)가 충전되면, FIFO 블록(104)의 FIFO 컨트롤러가 고유 인터럽트를 생성한다. I/O 중재기 인터럽트 컨트롤러는 고유 인터럽트가 특정 포트로부터 온 것을 알고 포트 ID를 계류중인 인터럽트 원형 버퍼에 큐한다.The I/O arbitration process begins at the port engine 103, which converts all data formats from the device 102 into a complete 32-bit word. The device sends a 32-bit data packet, and the I/O arbiter must buffer this data into the associated FIFO 104 . As a result, the CPU 100, like all other processes, must put this data in a buffer in the main memory. When the FIFO 104 is charged, the FIFO controller of the FIFO block 104 generates a unique interrupt. The I/O arbiter interrupt controller knows that a unique interrupt is from a particular port and queues the port ID into the pending interrupt circular buffer.

포트 ID가 이 큐를 작동하면, I/O 중재기는 CPU INT(107)를 작동시키고 CPU INTA(Interrupt-Acknowledgement) 신호(108)를 대기하며, I/O 중재기는 포트 ID인 인터럽트 벡터를 이 신호에 둔다. CPU(100)는 이 ID를 리드하고, 이 벡터를 위한 ISR(interrupt service routine)로 점프하며, 이 포트가 FIFO(104)에 데이터 블록을 갖고 있으며 이 모두를 포트 전용의 메인메모리 버퍼에 리드한다는 것을 안다.When the port ID activates this queue, the I/O arbiter activates the CPU INT (107) and waits for the CPU INTA (Interrupt-Acknowledgement) signal (108), and the I/O arbiter sends an interrupt vector that is the port ID to this signal. put on The CPU 100 reads this ID, jumps to an interrupt service routine (ISR) for this vector, and states that this port has a block of data in the FIFO 104 and reads all of them into the port's dedicated main memory buffer. know that

CPU(100)의 데이터 블록 라이트 과정은 반대이다. CPU(100)는 가능한 언제라도 데이터 블록을 라이트하거나, I/O 중재기(101)를 통한 인터럽트에 반응해 라이트한다. CpU가 필요한 32-비트 워드와 포트 어드레스 외에도 제어라인의 동기 클록신호를 이용해 버스트 모드에서만 포트에 리드하거나 라이트함을 알아야 한다.The data block writing process of the CPU 100 is reversed. The CPU 100 writes a block of data whenever possible, or in response to an interrupt via the I/O arbiter 101 . Note that in addition to the 32-bit word and port address that the CpU requires, it only reads or writes to the port in burst mode using the synchronous clock signal on the control line.

I/O 중재기는 기본적으로 I/O 포트 요청 서비스의 인터럽트 시동을 기초로 작업한다. 모든 계류중인 인터럽트들은 원형 버퍼에서 큐되고, CPU로부터 INTA를 받았을 때 관련 벡터와 함께 CPU의 단일 인터럽트 핀으로 전송된다. 각 포트는 I/O 중재기를 큐하기 위한 자체 INT & INTA 핀들을 갖고 CPU로 INT를 보낸다.The I/O arbiter basically works based on the interrupt startup of the I/O port request service. All pending interrupts are queued in a circular buffer, and when an INTA is received from the CPU it is sent to the CPU's single interrupt pin with the associated vector. Each port has its own INT & INTA pins for queuing the I/O arbiter and sends an INT to the CPU.

도 1은 본 발명의 I/O 중재기의 개략도;
도 2는 모든 필요한 인터페이스 신호에 의한 I/O 중재기의 내부동작도.
1 is a schematic diagram of an I/O mediator of the present invention;
Figure 2 is an internal operation diagram of the I/O arbiter by all necessary interface signals.

도 2를 참조하여 자세히 설명한다. I/O 중재기는 중재 인터페이스(200), 인터럽트 컨트롤러(201), FIFO-0을 포함한 다수의 FIFO 모듈(204), port-0 engine을 포함한 다수의 포트엔진으로 이루어진다. 점선 박스로 표시되고 중재기을 구성하지 않으며 device-0을 포함한 다수의 디바이스(202)가 도시되어 있다. 여기서는 디바이스 데이터 경로들 중의 하나인 device-0(202)을 다른 디바이스들을 대표해 I/O 중재기에 연결한다. It will be described in detail with reference to FIG. 2 . The I/O arbiter consists of an arbitration interface 200, an interrupt controller 201, a plurality of FIFO modules 204 including FIFO-0, and a plurality of port engines including a port-0 engine. A number of devices 202 are shown, including device-0, which are indicated by dashed boxes and do not constitute an arbiter. Here, device-0 (202), one of the device data paths, is connected to the I/O arbiter on behalf of other devices.

CPU(100)와 FIFO들 사이의 모든 동기적 버스트전송을 CPU(100)로 제어하는 것이 키포인트인데, 이때문에 CLK(209) 신호는 단방향성이다. 이런 조건에서는 디바이스에 의한 모든 독립적인 DMA 전송이 불가능하다. 인터럽트 요청에 응답해 일련의 데이터를 리딩 또는 라이팅하든지 FIFO 디바이스의 초기 접속은 원하는 FIFO에 대한 라이트 명령어로 시작된다. 이 명령어는 FIFO 디바이스를 선택하는 CS(Chip-Select) 신호를 형성하는 각각의 어드레스 라인(A12-A0)(206)와 함께 WR(210) 신호를 작동시켜 FIFO에 라이트된다. 명령어를 인터럽트할 때 FIFO 디바이스는 오픈-드레인 연결이고 모든 STP2(207) 신호에 묶인 활성 STP2(207) 신호로 반응한다. 이어서, CPU(100)가 CLK(209), STP1(208), RD(211) 및 WR(210) 신호들을 작동하여 버스트모드 데이터전송을 시작한다. The key point is to control all synchronous burst transfers between the CPU 100 and the FIFOs with the CPU 100, which is why the CLK 209 signal is unidirectional. All independent DMA transfers by the device are not possible under these conditions. Whether reading or writing a set of data in response to an interrupt request, the initial connection of a FIFO device is initiated by a write command to the desired FIFO. This command is written to the FIFO by activating the WR 210 signal with each address line (A 12 -A 0 ) 206 forming a Chip-Select (CS) signal that selects the FIFO device. When interrupting an instruction, the FIFO device is an open-drain connection and reacts with an active STP2 (207) signal tied to all STP2 (207) signals. Then, the CPU 100 operates the CLK 209, STP1 208, RD 211 and WR 210 signals to start burst mode data transmission.

메인 메모리나 FIFO에서 소정 길이의 데이터블록을 위한 간단한 완전 전송을 위한 버스트전송 프로토콜A burst transfer protocol for a simple complete transfer for a block of data of a given length in main memory or FIFO.

device-0(202)으로부터의 리딩이 CPU(10)에 의해 개시되어, 각각의 어드레스(A12-A0)(206) 라인들과 함께 WR(210) 신호가 CS_10(205)를 형성하여 FIFO-0(204) 디바이스를 형성하도록 하는 명령어를 라이트한다. FIFO-0(204)은 CLK(208) 신호가 정지되었음을 통보하여 라이트 동작이 버스트 데이터전송을 시작하지 않고 명령어 위상임을 인식한다.Reading from device-0 202 is initiated by CPU 10 so that the WR 210 signal along with the respective address (A 12 -A 0 ) 206 lines form CS_10 205 to form a FIFO -0 (204) Write the instruction to form the device. The FIFO-0 204 notifies the CLK 208 signal that it has stopped, recognizing that the write operation is in command phase without initiating a burst data transfer.

이 명령어가 CPU(100)가 일단의 데이터를 리드하길 원함을 의미한다고 FIFO-0(204)가 해독하면, FIFO-0(204)는 이 명령어를 준비하고 있음을 나타내는 STP2(207) 신호를 즉각 작동시키고, 이때 CPU(100)는 FIFO-0(204)내의 32-비트 데이터 블록과 동기적으로 CLK(209) 신호를 가동하여 버스트-리드 시퀀스를 시작한다. 소정 블록 길이가 전송된 뒤, FIFO-0(204)는 STP2(207) 신호를 작동하여 버스트 전송의 끝 부분이 FIFO 버퍼의 끝에 도달한 것을 CPU에 알려준다.When FIFO-0 204 decodes that this instruction means that CPU 100 wants to read a set of data, FIFO-0 204 immediately sends signal STP2 207 indicating that it is preparing this instruction. At this point, the CPU 100 triggers the CLK 209 signal synchronously with the 32-bit data block in the FIFO-0 204 to initiate a burst-read sequence. After the predetermined block length has been transmitted, the FIFO-0 204 triggers the STP2 207 signal to inform the CPU that the end of the burst transfer has reached the end of the FIFO buffer.

FIFO-0(204)에 라이트할 때에도 마찬가지로, 명령어 위상에 뒤이어, FIFO-0(204)가 이 명령어를 라이트 명령어로 해독한 뒤, FIFO-0(204)는 이 명령어를 대기하고 있음을 나타내는 STP2(207) 신호를 즉각 가동하고, 이때 CPU(100)는 메인 메모리내의 32-비트 데이터 워드 블록과 동기적으로 CLK(209) 신호를 작동하여 버스트 라이트 시퀀스를 시작한다. 소정 블록 길이가 전송된 뒤, CPU(100)는 STP1(208) 신호를 작동하여 버스트 전송이 끝났음을 FIFO-0(204)에 알려준다. Similarly when writing to FIFO-0 (204), following the instruction phase, FIFO-0 (204) decodes this instruction into a write instruction, followed by STP2 indicating that FIFO-0 (204) is waiting for this instruction. The (207) signal is activated immediately, at which time the CPU 100 activates the CLK (209) signal synchronously with the 32-bit data word block in main memory to start the burst write sequence. After the predetermined block length is transmitted, the CPU 100 activates the STP1 208 signal to notify the FIFO-0 204 that the burst transmission is over.

FIFO내의 미지 길이의 데이터 블록의 불완전 전송을 위한 버스트전송 프로토콜Burst transfer protocol for incomplete transfer of data blocks of unknown length in FIFO

CPU(100)에서 FIFO로의 데이터전송은 소프트웨어의 제어하에 있어서 항상 알려져 있다. 이 소프트웨어는 최적의 데이터전송을 위해 디바이스에 대한 데이터 블록의 갯수와 데이터 길이를 항상 알 수 있다. 불가피한 유일한 변수는 디바이스로부터의 데이터전송, 즉 CPU(100)에 의한 버스트 리드인데, 이는 디바이스로부터 오는 데이터 블록의 갯수와 데이터 길이를 미리 알 수 있는 방법이 없기 때문이다. 예컨대, LAN 디바이스로부터의 패킷들은 FIFO 버퍼가 오버플로할 때까지 계속 유입되는데, 이 경우 인터럽트가 일어난다. The data transfer from the CPU 100 to the FIFO is always known under the control of software. The software always knows the number of data blocks and data length for a device for optimal data transfer. The only unavoidable variable is the data transfer from the device, that is, the burst read by the CPU 100, because there is no way to know in advance the number of data blocks and the data length coming from the device. For example, packets from a LAN device continue to flow in until the FIFO buffer overflows, in which case an interrupt occurs.

이때 인터럽트 컨트롤러가 동작을 시작하는데; FIFO를 읽고 비우는데 CPU(100)를 필요로 하는 디바이스가 많을 수 있다.At this point, the interrupt controller starts to operate; There may be many devices that require the CPU 100 to read and empty the FIFO.

device-0(204)를 데이터경로로 취한 FIFO-0(204)는 완전해 채워졌을 때 고유 인터럽트를 생성한다. I/O 중재기에서, 인터럽트 컨트롤러(201)는 인터럽트가 FIFO-0(204)에서 온 것을 알고 펜딩중인 인터럽트 원형버퍼(216)의 포트 ID를 큐(queue)한다. FIFO-0 (204) taking device-0 (204) as the datapath generates a unique interrupt when full and full. In the I/O arbiter, the interrupt controller 201 knows that the interrupt is from FIFO-0 204 and queues the port ID of the pending interrupt circular buffer 216 .

ID가 큐되면, I/O 중재기(101)가 CPU INT(212)를 작동시키고 CPU INTA(213)(인터럽트-인식) 신호를 대기하는데, 이때 I/O 중재기(101)는 포트 ID인 인터럽트 벡터를 이 신호에 싣는다. CPU(100)는 이 ID를 리드하고 이 벡터를 위한 ISR(interrupt service routine)로 점프하며, 이 포트가 FIFO-0(204)내의 데이터블록을 갖고있음을 알아챈다. FSM 사이클의 끝에서 서비스할 다음 디바이스가 FIFO-0(204)에서 온다고 결정한 인터럽트 컨트롤러(201)는 INTA(217) 신호를 FIFO-0(204)로 보낸다. FIFO-0(204)는 STP2(207) 신호를 작동하여 전송 준비가 되었음을 인식하여, 버스트-리드 시퀀스가 시작했음을 CPU(100)가 알도록 한다. 이어서, CPU(100)는 이들 전부를 port-0(204)용으로 예약된 메인 메모리 버퍼에 리드한다. FIFO-0(204)가 비워지면, 블록전송이 끝났음을 CPU(100)에게 알려주는 STP2(207) 신호를 FIFO-0(204)가 작동시킨 다음 device-0(202)에서 오는 다음 인터럽트를 대기해야 한다.When the ID is queued, the I/O arbiter 101 activates the CPU INT 212 and waits for the CPU INTA 213 (interrupt-aware) signal, where the I/O arbiter 101 is the port ID. An interrupt vector is loaded into this signal. CPU 100 reads this ID and jumps to an interrupt service routine (ISR) for this vector, noting that this port has a datablock in FIFO-0 204. At the end of the FSM cycle, the interrupt controller 201 determines that the next device to be serviced is from FIFO-0 204, and sends an INTA 217 signal to FIFO-0 204. The FIFO-0 204 activates the STP2 207 signal to recognize that it is ready to transmit, allowing the CPU 100 to know that the burst-read sequence has begun. The CPU 100 then reads all of them into the main memory buffer reserved for port-0 204 . When FIFO-0(204) is empty, FIFO-0(204) operates STP2(207) signal to inform CPU(100) that block transfer is complete, and then waits for the next interrupt from device-0(202). Should be.

CPU(100)가 버스트 라이트 전송을 할 때, FIFO-0(204)는 STP2(207) 신호를 작동하여 FIFO 버퍼가 채워진 때를 CPU(100)에 알려주고, 이 경우 CPU100)는 버스트-라이트 사이클을 끝낸다.When the CPU 100 sends a burst write, the FIFO-0 204 triggers the STP2 207 signal to inform the CPU 100 when the FIFO buffer is full, in this case the CPU100) initiates a burst-write cycle. finish

인터럽트 컨트롤러(201)는 시스템네 모든 펜딩 인터럽트들을 관리하는데 있어 버퍼 헤드(215)와 버퍼 테일(214)을 위한 포인터들을 계산하기 위한 FSM을 위해 CPU(100)로부터 2개의 신호쌍 INT(212)-INTA(212)만을 필요로 하여, 연결된 모든 디바이스들에 대해 자체 INT-INTA(217) 사이클을 재생한다. Interrupt controller 201 manages all pending interrupts in the system, two signal pairs INT 212 - Requiring only INTA 212, it regenerates its own INT-INTA 217 cycle for all connected devices.

이상의 설명은 캐릭터나 블록 디바이스, ROM과 같은 집적회로, 하드디스크 드라이브, LAN, 다른 CPU, 및 DMA 메커니즘, 브리지, 추가 버스나 중재기가 없이 상상할 수 있는 다른 모든 것이든 어떤 디바이스도 포트에 부착하기 위한 시스템의 기초를 제공한다.
The above description describes how to attach any device to a port, whether it be characters or block devices, integrated circuits such as ROMs, hard disk drives, LANs, other CPUs, and DMA mechanisms, bridges, and anything else imaginable without additional buses or intermediaries. It provides the basis for the system.

Claims (10)

마이크로컴퓨터 시스템의 I/O 중재기 블록에 있어서:
중재기 인터럽트 컨트롤러;
다수의 FIFO(first-in-first out buffers); 및
다수의 포트-엔진;을 포함하고,
마이크로컴퓨터 보드나 SOC 디바이스를 포함한 컴퓨터보드내 많은 데이터전송 방법들을 제거하도록 상기 I/O 중재기 블록이 별도의 칩에서 구현되거나 프로세서에 통합되고;
FIFO 각각과 포트엔진 각각이 각각의 I/O 디바이스용으로 구현되며;
상기 I/O 중재기 블록이 CPU와 다수의 FIFO 사이에 데이터의 동기적 버스트전송을 하는데 있어 공통의 프로세서 인터럽트 신호쌍(INT-INTA)과 3개의 동기신호(CLK, STP1, STP2를 사용하고, 모든 I/O 디바이스들이 블록 디바이스로 간주되며;
상기 I/O 중재기 블록이 DMA(direct memory access) 신호들을 필요로하지 않는 것을 특징으로 하는 I/O 중재기 블록.
In an I/O arbiter block of a microcomputer system:
arbiter interrupt controller;
multiple first-in-first out buffers (FIFOs); and
A plurality of ports-engines; including,
the I/O arbiter block is implemented on a separate chip or integrated into a processor to eliminate many data transfer methods in a computer board, including a microcomputer board or SOC device;
Each FIFO and each port engine are implemented for each I/O device;
The I/O arbiter block uses a common processor interrupt signal pair (INT-INTA) and three synchronization signals (CLK, STP1, STP2) for synchronous burst transfer of data between the CPU and multiple FIFOs, All I/O devices are considered block devices;
and the I/O arbiter block does not require direct memory access (DMA) signals.
제1항에 있어서, 상기 I/O 중재기 블록이 다수의 FIFO와 다수의 포트-엔진들이 공통의 프로세서 인터럽트 신호쌍(INT-INTA)과 3개의 동기신호들(CLK, STP1, STP2)와 협력하도록 하여 SOC나 마이크로컴퓨터에서 모든 버스브리지들을 제거할 수 있는 것을 특징으로 하는 I/O 중재기 블록.2. The method of claim 1, wherein the I/O arbiter block cooperates with a plurality of FIFOs and a plurality of port-engines with a common processor interrupt signal pair (INT-INTA) and three synchronization signals (CLK, STP1, STP2). An I/O arbiter block, characterized in that it is possible to remove all busbridges from the SOC or microcomputer. 제1항에 있어서, 상기 CLK 신호는 동기 데이터 스트로브이고, STP1과 STP2는 각각 FIFO 컨트롤러로 입출력하는 버스트 주기의 끝을 나타내는 것을 특징으로 하는 I/O 중재기 블록.The I/O arbiter block according to claim 1, wherein the CLK signal is a synchronous data strobe, and STP1 and STP2 each indicate the end of a burst period input/output to/from the FIFO controller. 제1항에 있어서, 상기 I/O 중재기 블록이 CPU 메인 메모리의 디렉트 어드레스용 CPU 어드레스 버스로의 어드레스 채널을 제어하고 CPU를 셧다운시키는 CPU의 DMA 인터페이스 신호들을 불필요하게 하고, 데이터의 동기적 버스트전송을 하고 모든 I/O 디바이스들을 블록 디바이스로 간주하게 하는데 공통의 프로세서 인터럽트 신호쌍(INT-INTA)과 3개의 동기신호들(CLK, STP1, STP2)을 이용해 CPU 제어하에 DMA 전송을 하는 것을 특징으로 하는 I/O 중재기 블록.2. The synchronous burst of data according to claim 1, wherein the I/O arbiter block controls an address channel to a CPU address bus for a direct address of CPU main memory and obviates the DMA interface signals of the CPU for shutting down the CPU; DMA transfer is performed under CPU control using a common processor interrupt signal pair (INT-INTA) and three synchronization signals (CLK, STP1, STP2) to transmit and treat all I/O devices as block devices. I/O arbiter block to 제1항에 있어서, 상기 I/O 중재기 블록이 CPU 어드레스와 데이터버스들을 불능화하는 CPU의 버스 마스터링을 제어하는 종래의 BUSREQ-BUSGNT 신호쌍을 불필요하게 하는 것을 특징으로 하는 I/O 중재기 블록.2. The I/O arbiter of claim 1, wherein the I/O arbiter block obviates the conventional BUSREQ-BUSGNT signal pair that controls the CPU's bus mastering disabling the CPU address and databuses. block. 제1항에 있어서, 상기 마이크로컴퓨터 시스템이 추가 중재기를 전혀 포함하지 않는 것을 특징으로 하는 I/O 중재기 블록.The I/O arbiter block of claim 1, wherein the microcomputer system does not include any additional arbiters. 삭제delete 삭제delete 삭제delete 삭제delete
KR1020140128830A 2014-09-26 2014-09-26 An interrupt-driven i/o arbiter for a microcomputer system KR102333544B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140128830A KR102333544B1 (en) 2014-09-26 2014-09-26 An interrupt-driven i/o arbiter for a microcomputer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140128830A KR102333544B1 (en) 2014-09-26 2014-09-26 An interrupt-driven i/o arbiter for a microcomputer system

Publications (2)

Publication Number Publication Date
KR20160036794A KR20160036794A (en) 2016-04-05
KR102333544B1 true KR102333544B1 (en) 2021-12-01

Family

ID=55800065

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140128830A KR102333544B1 (en) 2014-09-26 2014-09-26 An interrupt-driven i/o arbiter for a microcomputer system

Country Status (1)

Country Link
KR (1) KR102333544B1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160036795A (en) * 2014-09-26 2016-04-05 유니버시티 테크놀로지 말레이시아 A homogeneous device access method which removes physical device drivers in a computer operating system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030158608A1 (en) * 2002-02-13 2003-08-21 Canon Kabushiki Kaisha Data processing apparatus, image processing apparatus, and method therefor
US20050010706A1 (en) * 2003-06-26 2005-01-13 Samsung Electronics Co., Ltd. Dynamic bus arbitration method and bus arbiter

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4320292A (en) * 1979-08-22 1982-03-16 Nippon Telegraph And Telephone Public Corporation Coordinate input apparatus
US6065088A (en) * 1998-08-31 2000-05-16 International Business Machines Corporation System and method for interrupt command queuing and ordering

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030158608A1 (en) * 2002-02-13 2003-08-21 Canon Kabushiki Kaisha Data processing apparatus, image processing apparatus, and method therefor
US20050010706A1 (en) * 2003-06-26 2005-01-13 Samsung Electronics Co., Ltd. Dynamic bus arbitration method and bus arbiter

Also Published As

Publication number Publication date
KR20160036794A (en) 2016-04-05

Similar Documents

Publication Publication Date Title
KR100306636B1 (en) PCI-ISA Interrupt Protocol Converter and Selection Mechanism
JP4855451B2 (en) Storage device access method and apparatus
WO2018120780A1 (en) Method and system for pcie interrupt
US6892266B2 (en) Multicore DSP device having coupled subsystem memory buses for global DMA access
US6567881B1 (en) Method and apparatus for bridging a digital signal processor to a PCI bus
KR20010080515A (en) A direct memory access engine for supporting multiple virtual direct memory access channels
US8332564B2 (en) Data processing apparatus and method for connection to interconnect circuitry
US8972624B2 (en) USB virtualization
KR100708096B1 (en) Bus system and execution scheduling method for access commands thereof
JP2018519587A (en) Configurable mailbox data buffer device
US10210114B2 (en) Interrupt-driven I/O arbiter for a microcomputer system
JP2006113689A (en) Bus bridge device and data transfer method
US7006521B2 (en) External bus arbitration technique for multicore DSP device
KR102333544B1 (en) An interrupt-driven i/o arbiter for a microcomputer system
Aljumah et al. Amba based advanced dma controller for soc
US8996772B1 (en) Host communication device and method with data transfer scheduler
US7340554B2 (en) USB host controller with DMA capability
US7673091B2 (en) Method to hide or reduce access latency of a slow peripheral in a pipelined direct memory access system
US8966149B2 (en) Emulation of an input/output advanced programmable interrupt controller
JP5146796B2 (en) Host controller
Bandara et al. Enabling VirtIO Driver Support on FPGAs
US6085271A (en) System bus arbitrator for facilitating multiple transactions in a computer system
WO2008027092A1 (en) Computer communication
JPS62154045A (en) Bus arbitration system
WO2012143947A2 (en) Multi-host peripheral controller

Legal Events

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