KR20160036794A - 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
KR20160036794A
KR20160036794A KR1020140128830A KR20140128830A KR20160036794A KR 20160036794 A KR20160036794 A KR 20160036794A KR 1020140128830 A KR1020140128830 A KR 1020140128830A KR 20140128830 A KR20140128830 A KR 20140128830A KR 20160036794 A KR20160036794 A KR 20160036794A
Authority
KR
South Korea
Prior art keywords
cpu
arbiter
bus
fifo
interrupt
Prior art date
Application number
KR1020140128830A
Other languages
Korean (ko)
Other versions
KR102333544B1 (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

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)
  • Bus Control (AREA)

Abstract

According to an I/O bus arbiter of the presenting invention, a CPU (processor) is used with the I/O bus arbiter to perform burst-mode data transmission in every I/O access. In addition, a DMA signal, a bus-request/bus-grant signal, and a bridge are not required, and it is unnecessary to connect a bus system with a peripheral device like a PCI. The I/O arbiter is made of port engines with an interrupt controller having a circular buffer, FIFO, and a compatibility CPU interrupt signal, the port engines configured to directly connect a device to an appropriate interface buffer, and is able to transmit synchronization data through one arbiter. The purpose of the present invention is to provide a better model and eliminate some features to simplify a system.

Description

마이크로컴퓨터 시스템용 인터럽트-구동 I/O 중재기{AN INTERRUPT-DRIVEN I/O ARBITER FOR A MICROCOMPUTER SYSTEM}[0001] The present invention relates to 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 시스템도 같은 체계로 동작한다.Conventional input / output (I / O) bus arbiters are necessary for complex multi-bus systems, as well as for buses as well as simplicity of the system-on-chip (SOC) architecture. For example, a new communications processor, such as the Intel IXP435, has three bus arbiters, four buses, and two bridges on a single chip, where the SOC is a single-CPU based ARM architecture, or two hardware-assisted accelerators or coprocessors Even so. The Intel Pentium series of computer systems and other microcomputer-based SOC systems also operate in the same system.

대부분의 중재기는 적어도 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-Request-Grant (REQ-GNT) pair for the bus request signal from the device, and a corresponding bus grant signal from the arbiter. The same is true for CPU (processor), direct memory access (DMA), interrupt (INT) and bus requet-bus grant (BUSREQ-BUSGNT). That is, a complete understanding and familiarity with a particular system is required to implement a simple arbiter. DMA is often the most complex device in PC systems.

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

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

복잡한 중재체계에 대한 개발은 이미 이루어지고 있다. 2006년 8월 22일 등록허여된 삼성전자의 미국특허 7096293B2에 소개된 중재체계는 메인 CPU 신호인 INT(interrupt) 신호에 크게 의존하고 있다. 그러나, 이 경우에도 중재를 위해서는 기존의 REQ-GNT 신호쌍이 여전히 필요하여, 이 특허는 PCU 버스를 필수로 하고있다.The development of complex intervention systems is already underway. The arbitration system introduced in Samsung Electronics' US patent 7096293B2 registered on August 22, 2006 largely depends 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, and this patent requires the PCU bus.

모토롤라의 1993년 2월 9일 등록된 미국특허 5,185,694에 소개된 블록 MOVE는 CPU를 이용해 프로그래머가 데이터의 버스트-전송을 제어하도록 한다. 이 발명에서는 메모리 사이에 버스트-전송을 채택하지만, 이런 아이디어를 I/O에도 적용할 수 있다. The block MOVE introduced in Motorola's US Patent 5,185,694, issued Feb. 9, 1993, allows the programmer to control the burst-transfer of data using the CPU. This invention adopts burst-transfer between memories, but this idea can 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 we have seen burst-transfer as the basic operation of the PCI bus specification made by Intel in 1994. The same concept can be applied to general SDRAM used in microcomputer from this time, and it is the same in DDR of 2002 and DDR2 of 2009.

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

I/O 중재기I / O arbiter

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

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

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

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

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

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

이런 모델은 복잡성 여부와 무관하게 디바이스에 직접 연결이 가능하고, 하나의 I/O 중재기 이외에는 버스 브리지와 전기신호 한계를 갖는 PCI와 같은 모든 버스가 필요 없다.These models can be connected directly to the device, with or without complexity, and do not require any bus, such as PCI, with bus bridges and electrical signal limits, other than a single 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, showing three main elements within a CPU 100, a device interface signal 106, an arbiter interrupt controller 105, a FIFO 104 and a port engine 103, Lt; / RTI > Regardless of whether the character is character or block data transfer, the device is connected to the port engine, and the port engine is responsible for 32-bit word translation from the engine or FSM (Finite-State-Machine) for device format and device 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 during burst transfer. The device activates a dedicated INT signal to request attention by the associated FIFO, which then queues the request to 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 port engine 103, which translates all data formats from device 102 into complete 32-bit words. The device transmits a 32-bit data packet, and the I / O arbiter must buffer this data in the associated FIFO 104. [ As a result, the CPU 100 must place this data in a buffer in main memory, like all other processes. 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 the native interrupt comes from a specific 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 operates this queue, the I / O arbiter activates the CPU INT 107 and waits for the CPU INTA (Interrupt-Acknowledgment) signal 108, and the I / O arbiter assigns the interrupt vector, . The CPU 100 reads this ID and jumps to the interrupt service routine for this vector, and if this port has a block of data in the FIFO 104 and leads all of it to a port dedicated main memory buffer I know.

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

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

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

도 2를 참조하여 자세히 설명한다. I/O 중재기는 중재 인터페이스(200), 인터럽트 컨트롤러(201), FIFO-0을 포함한 다수의 FIFO 모듈(204), port-0 engine을 포함한 다수의 포트엔진으로 이루어진다. 점선 박스로 표시되고 중재기을 구성하지 않으며 device-0을 포함한 다수의 디바이스(202)가 도시되어 있다. 여기서는 디바이스 데이터 경로들 중의 하나인 device-0(202)을 다른 디바이스들을 대표해 I/O 중재기에 연결한다. Will be described in detail with reference to FIG. The I / O arbiter includes 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, shown as a dashed box and not comprising an arbiter and containing device-0, are shown. Here, device-0 202, which is 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) 신호들을 작동하여 버스트모드 데이터전송을 시작한다. Controlling all synchronous burst transfers between the CPU 100 and the FIFOs to the CPU 100 is a key point, so the CLK 209 signal is unidirectional. Under these conditions, all independent DMA transfers by the device are not possible. Whether reading or writing a series of data in response to an interrupt request, the initial connection of the FIFO device begins with a write instruction for 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 CS (Chip-Select) signal to select the FIFO device. When interrupting an instruction, the FIFO device is an open-drain connection and responds with an active STP2 (207) signal bound to all STP2 (207) signals. The CPU 100 then activates the CLK 209, STP1 208, RD 211 and WR 210 signals to start burst mode data transmission.

메인 메모리나 FIFO에서 소정 길이의 데이터블록을 위한 간단한 완전 전송을 위한 버스트전송 프로토콜A burst transfer protocol for simple full transfer for a data block of a predetermined 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) 신호가 정지되었음을 통보하여 라이트 동작이 버스트 데이터전송을 시작하지 않고 명령어 위상임을 인식한다.A read from the device-0 202 is initiated by the CPU 10 so that the WR 210 signal together with each address (A 12 -A 0 ) 206 lines forms a CS_10 205, -0 204 Write a command to form a device. The FIFO-0 204 notifies that the CLK 208 signal is stopped and recognizes that the write operation does not start the burst data transfer but the instruction phase.

이 명령어가 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 this command decodes by the FIFO-0 204 to mean that the CPU 100 desires to read a set of data, the FIFO-0 204 immediately receives the STP2 207 signal indicating that this command is ready At which time the CPU 100 activates the CLK 209 signal synchronously with the 32-bit data block in the FIFO-0 204 to begin the burst-read sequence. After the predetermined block length is transmitted, the FIFO-0 204 activates the STP2 207 signal to inform the CPU that the end of the burst transmission 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 the FIFO-0 204, the FIFO-0 204 decodes this instruction into a write instruction after the instruction phase, and then the FIFO-0 204 issues STP2 The CPU 100 immediately activates the signal 207, at which time the CPU 100 activates the CLK (209) signal synchronously with the 32-bit data word block in the main memory to initiate the burst write sequence. After the predetermined block length is transmitted, the CPU 100 operates the STP1 208 signal to inform the FIFO-0 204 that the burst transmission is completed.

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

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

이때 인터럽트 컨트롤러가 동작을 시작하는데; FIFO를 읽고 비우는데 CPU(100)를 필요로 하는 디바이스가 많을 수 있다.At this time, 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), which takes device-0 (204) as a data path, generates a unique interrupt when it is completely filled. At the I / O arbiter, the interrupt controller 201 knows that the interrupt is coming from FIFO-0 204 and queues the port ID of the interrupt circular buffer 216 being pending.

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 a CPU INTA 213 (interrupt-aware) signal, at which time the I / The interrupt vector is loaded on this signal. CPU 100 reads this ID and jumps to an interrupt service routine (ISR) for this vector, and notices that this port has a block of data in FIFO-0 (204). The interrupt controller 201 determines that the next device to be serviced at the end of the FSM cycle comes from the FIFO-0 204 and sends an INTA 217 signal to the FIFO-0 204. The FIFO-0 204 activates the STP2 207 signal to recognize that it is ready to transfer, allowing the CPU 100 to know that the burst-read sequence has begun. Subsequently, the CPU 100 reads all of these into the main memory buffer reserved for the port-0 (204). When the FIFO-0 204 is emptied, the FIFO-0 204 activates the STP2 207 signal informing the CPU 100 that the block transfer is finished, and then waits for the next interrupt coming from the device- Should be.

CPU(100)가 버스트 라이트 전송을 할 때, FIFO-0(204)는 STP2(207) 신호를 작동하여 FIFO 버퍼가 채워진 때를 CPU(100)에 알려주고, 이 경우 CPU100)는 버스트-라이트 사이클을 끝낸다.When the CPU 100 makes a burst write transmission, the FIFO-0 204 activates the STP2 207 signal to notify the CPU 100 when the FIFO buffer is filled, in which case the CPU 100 may perform a burst- End it.

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

이상의 설명은 캐릭터나 블록 디바이스, ROM과 같은 집적회로, 하드디스크 드라이브, LAN, 다른 CPU, 및 DMA 메커니즘, 브리지, 추가 버스나 중재기가 없이 상상할 수 있는 다른 모든 것이든 어떤 디바이스도 포트에 부착하기 위한 시스템의 기초를 제공한다.
The above description is intended for any device, such as a character or block device, an integrated circuit such as a ROM, a hard disk drive, a LAN, another CPU, and any other device that can be imagined without DMA mechanisms, bridges, Provides the foundation of the system.

Claims (10)

1) PCI(peripheral-connect-interface)를 포함한 I/O 버스, 2) BUSQEQ-BUSGNT(Bus-Request & Bus-Grant) 쌍인 버스제어신호, 3) DMA(direct-memory-access) 제어신호, 4) 속도가 각각 다른 여러 주변장치들을 격리하기 위한 버스브리지, 및 5) PCI용, I/O와 메모리용, 그리고 부트 ROM을 포함한 저속 주변장치용의 하나 이상의 중재기들을 필요로하고 마이크로컴퓨터 보드나 SOC(system-on-chip) 디바이스를 포함한 콤퓨터 보드에서 실행되는 많은 데이터 전송방법들을 없애고, 프로세서 내에 내장되거나 별도의 칩에 구현되며, 새로운 컴퓨터 파라다임을 실행할 수 있는 새로운 프로세서 모듈을 구현하는 것을 특징으로 하는 I/O 중재기 블록1) an I / O bus including a peripheral-connect-interface (PCI), 2) a bus control signal that is a Bus-Request-Bus-Grant (BUSGNT) pair, 3) ) Bus bridge to isolate various peripheral devices of different speeds, and 5) one or more arbiters for PCI, I / O and memory, and low speed peripheral devices including boot ROM, It is characterized by the elimination of many data transfer methods running on computer boards including SOC (system-on-chip) devices, the implementation of a new processor module embedded in the processor or implemented on a separate chip, I / O arbiter block 제1항에 있어서, 상기 I/O 중재기가 모든 디바이스에 대해 다수의 FIFO와 포트-엔진들을 제각기 구현하고, I/O 중재기가 데이터의 동기적 버스트 전송을 하는데 있어 공통의 프로세서 인터럽트 신호쌍(INT-INTA)와 3개의 동기신호(CLK, STP1, STP2)를 사용하며, 모든 I/O 디바이스들이 블록 디바이스로 간주되는 것을 특징으로 하는 I/O 중재기 블록.2. The method of claim 1, wherein the I / O arbiter implements a plurality of FIFOs and port-engines for every device, and wherein the I / O arbiter has a common processor interrupt signal pair (INT -INTA) and three synchronization signals (CLK, STP1, STP2), and all I / O devices are regarded as block devices. 제1항에 있어서, 상기 FIFO와 포트-엔진들이 공통의 프로세서 인터럽트 신호쌍(INT-INTA)와 3개의 동기신호(CLK, STP1, STP2)와 협력하도록 하여 SOC나 마이크로컴퓨터에서 모든 버스브리지들을 제거할 수 있는 것을 특징으로 하는 I/O 중재기 블록.The system of claim 1, wherein the FIFO and the port-engines cooperate with a common processor interrupt signal pair (INT-INTA) and three synchronization signals (CLK, STP1, STP2) to remove all bus bridges from the SOC or microcomputer Gt; I / O < / RTI > 제1항에 있어서, CPU를 이용해 인터럽트 신호쌍(INT-INTA)과 관련 3개의 동기신호(CLK, STP1, STP2)만을 사용해 모든 I/O 디바이스를 위한 버스트-전송을 하며, 상기 CLK 신호는 동기 데이터 스트로브이고, STP1과 STP2는 각각 FIFO 컨트롤러로 입출력하는 버스트 주기의 끝을 나타내는 것을 특징으로 하는 I/O 중재기 블록.2. The method of claim 1, wherein the CPU performs burst-transfer for all I / O devices using only the interrupt signal pair (INT-INTA) and the three associated synchronization signals (CLK, STP1, STP2) Data strobe, and STP1 and STP2 each indicate the end of a burst period of input / output to / from the FIFO controller. 제1항에 있어서, CPU 메인 메모리의 디렉트 어드레스용 CPU 어드레스 버스로의 어드레스 채널을 제어하고 CPU를 셧다운시키는 CPU의 DMA 인터페이스 신호들을 불필요하게 하고, 제2항에 따른 인터럽트 신호들과 3개의 동기신호들을 이용해 CPU 제어하에 DMA 전송을 하는 것을 특징으로 하는 I/O 중재기 블록.The method according to claim 1, further comprising the steps of: controlling the address channel to the CPU address bus for the direct address of the CPU main memory and making the DMA interface signals of the CPU for shutting down the CPU unnecessary; To perform DMA transfer under the control of the CPU using the I / O arbiter. 제1항에 있어서, CPU 어드레스와 데이터버스들을 불능화하는 CPU의 버스 마스터링을 제어하는 종래의 BUSREQ-BUSGNT 신호쌍을 불필요하게 하는 것을 특징으로 하는 I/O 중재기 블록.3. The I / O arbiter block of claim 1, wherein a conventional BUSREQ-BUSGNT signal pair that controls bus mastering of the CPU that disables the CPU address and data buses is dispensed with. 제2항에 있어서, 프로세서 인터페이스 신호에 대한 단일 INT-INTA(Interrupt-Interrupt Acknowledge) 신호쌍의 디바이스 액세스를 중재하는 내부 인터럽트 컨트롤러를 이용하고, 이 인터럽트 컨트롤러가 디바이스 포트마다 각각 INT-INTA 신호쌍을 공급하며 자체 내부 원형 FIFO 버퍼에 개별 인터럽트를 큐하는 것을 특징으로 하는 I/O 중재기 블록.3. The method of claim 2, further comprising: using an internal interrupt controller to arbitrate device access of a single pair of INT-INTA signals to the processor interface signal, And queues an individual interrupt into its own internal circular FIFO buffer. ≪ RTI ID = 0.0 > I / O < / RTI > 제2항에 있어서, 다양한 데이터 전송모드와 속도의 외부 주변기기들에 액세스하는데 다수의 디바이스 포트 엔진들을 이용하고, 캐릭터나 블록 디바이스가 일정한 뷰의 데이터 블록을 제시하여 어떤 경우에도 버스트-전송을 하는 것을 특징으로 하는 I/O 중재기 블록.3. The method of claim 2, further comprising: using a plurality of device port engines to access external peripherals of various data transfer modes and speeds, wherein the character or block device presents a block of data of a certain view to perform burst- Characterized by an I / O arbiter block. 제2항에 있어서, 디바이스로부터 데이터를 송수신하는데 다수의 FIFO를 이용하고, 각 디바이스의 포트 엔진마다 FIFO로 들어가는 동일한 데이터 블록에 대해 각각 다른 인터페이스 신호를 이용해 데이터와 디바이스의 타입을 변환하는 것을 특징으로 하는 I/O 중재기 블록.3. The method of claim 2, wherein a plurality of FIFOs are used to transmit and receive data from the device, and data and device types are converted using different interface signals for the same data block entering the FIFO for each port engine of each device I / O arbiter blocks. 제2항에 있어서, 중재 방식과 우선순위를 일으킬 수 있는 버퍼 사이즈를 바꿔 디바이스의 버스트-전송에 맞는 체계를 채택하는데 디바이스의 CPU 소프트웨어 지식에 의존하는 것을 특징으로 하는 I/O 중재기 블록.
3. The I / O arbiter block of claim 2, wherein the arbitration scheme and the buffer size that can cause the priority are changed to rely on the knowledge of the CPU software of the device to adopt a scheme suitable for the burst-transfer of the device.
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 true KR20160036794A (en) 2016-04-05
KR102333544B1 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)

Cited By (1)

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

Citations (4)

* 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
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

Patent Citations (4)

* 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
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

Cited By (1)

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

Also Published As

Publication number Publication date
KR102333544B1 (en) 2021-12-01

Similar Documents

Publication Publication Date Title
US5819096A (en) PCI to ISA interrupt protocol converter and selection mechanism
KR970000842B1 (en) System direct memory access(dma)support logic for pci based computer system
US7263572B2 (en) Bus bridge and data transfer method
US5119480A (en) Bus master interface circuit with transparent preemption of a data transfer operation
WO2018120780A1 (en) Method and system for pcie interrupt
US6892266B2 (en) Multicore DSP device having coupled subsystem memory buses for global DMA access
KR930002787B1 (en) Universal peripheral controller self-configuring bootloadable ramware
US6567881B1 (en) Method and apparatus for bridging a digital signal processor to a PCI bus
US8972624B2 (en) USB virtualization
JP2018519587A (en) Configurable mailbox data buffer device
US5471639A (en) Apparatus for arbitrating for a high speed direct memory access bus
US5305442A (en) Generalized hierarchical architecture for bus adapters
US7006521B2 (en) External bus arbitration technique for multicore DSP device
US20160224486A1 (en) Interrupt-driven i/o arbiter for a microcomputer system
KR20160036794A (en) An interrupt-driven i/o arbiter for a microcomputer system
JP2008502977A (en) Interrupt method for bus controller
EP0426156B1 (en) Floppy disk controller with DMA verify operations
US7340554B2 (en) USB host controller with DMA capability
JP5146796B2 (en) Host controller
JPS62154045A (en) Bus arbitration system
WO2012143947A2 (en) Multi-host peripheral controller
CA2282166C (en) Method and apparatus for bridging a digital signal processor to a pci bus
JP2002073534A (en) Data transfer device
JPH05334234A (en) High speed dma transferring device
JP2001265711A (en) Device for transferring data and bus system

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