ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [컴퓨터 구조] ISA 버스
    공학/컴퓨터구조 2023. 8. 9. 20:43

    글의 참고

    - https://docs.oracle.com/cd/E19455-01/805-7378/6j6un038j/index.html

    - https://en.wikipedia.org/wiki/Industry_Standard_Architecture

    - https://en.wikipedia.org/wiki/Memory-mapped_I/O_and_port-mapped_I/O

    - Intel_ISA_Spec2.01_Sep89.pdf


    글의 전제

    - 밑줄로 작성된 글은 강조 표시를 의미한다.

    - 그림 출처는 항시 그림 아래에 표시했다.


    글의 내용

    : ISA 버스는 IBM PC/XT, PC/AT를 위해 만들어진 버스다. IBM PC 시리즈에 특징이 뭘까? 바로 인텔 CPU를 사용했다는 것이다. 인텔 CPU는 2가지 메모리를 가지고 있었다. 우리가 흔히 RAM 이라고 부르는 영역과 I/O 디바이스들과 통신하기 위한 I/O 영역이 있다. 그런데, 이 구조는 인텔 CPU에서 만든게 아닌, ISA 버스에서 이 구조를 채택했기 때문에, 인텔 CPU가 따르게 된 것이다.

     

    : IBM PC/XT 시절에는 주로 Intel 8086, 8088이 사용되었기 때문에 ISA 버스의 대역폰은 주소 20비트, 데이터 8비트였다. 그러나, IBM PC/AT에 와서는 주소 24비트, 데이터 16비트로 확장되었다.

     

    : ISA의 32비트 확장 버스가 `EISA` 라고 부른다. 그러나, 이 모델은 처참히 실패해서 지금은 볼 수가 없다. 그리고 나서 나온 `VESA Local Bus`나 `PCI`가 ISA를 버스를 대체하면서 현재에 이르기까지 두루두루 사용되고 있다. 이제는 ISA 버스가 일반 소비자에게 판매되는 PC에서는 없지만, 간혹 산업용 PC에서는 호환성을 위해서 아직도 사용되는 것을 볼 수 있다(예를 들어, `ATA/IDE`)

     

    : `Port I/O`를 만든 `x86` 기준에서도 `Port-based I/O` 보다는 `Memory-mapped I/O`를 더 선호한다. 왜냐면, port I/O는 데이터 전송에 사용할 수 있는 레지스터를 하나로 제한한다(EAX, AX, AL). 그러나, MMIO는 모든 범용 레지스터를 사용할 수 있고, 뿐만 아니라, 더 적은 명령어를 사용해서 퍼포먼스 또한 더 좋다. 참고로, 당연한 얘기겠지만, 메모리에 접근하는 것이 속도도 더 빠르기 때문인 것도 있다. 그래서, AMD는 `x86_64`를 내놓으면서, 64비트 관련 port I/O를 더 이상 지원하지 않겠다고 밝혔다.

     

     

    - ISA 인터럽트

    : 내가 가지고 있는 ISA 스펙에서 인터럽트 관련 차트는 아래 내용이 끝이다. 엣지 트리거라는 것과 ISA의 모든 인터럽트 라인은 Intel 8259A로 직접적으로 매핑된다는 내용이 있다. 그리고, ISA 버스는 인터럽트를 인지하는 라인이 존재하지 않기 때문에, 메모리-맵 혹은 I/O 메모리를 통해서 인터럽트 인지를 했다고 전송해야 한다. 

    The interrupt lines of the connectors are directly connected to the Intel 8259A Interrupt Controller. The Interrupt Controller will react to the interrupt on a transition of low to high. There are no interrupt acknowledge lines on the ISA bus. The resource must use a memory or I/O access by the bus owner for an acknowledgement of the interrupt.

    ADD-ON CARD DESIGN FOCUS
    The interrupt control lines are attached to all of the slots and are edge triggered. The add-on cards must allow the selection of the interrupt line at the time of installation to avoid conflict with already installed cards or platform resources.

    - 참고 : Intel_ISA_Spec2.01_Sep89.pdf

     

    : PIC 8259A는 어떻게 인터럽트를 인지할까? PIC 8259A의 [IR0-IR7] 라인으로 외부 인터럽트가 들어오면, PIC는 `INT` 라인을 SET한다. 그렇면, CPU는 파이프라인 마지막 단계가 끝나는 시점에 인터럽트가 들어왔는지를 확인한다. 인터럽트가 발생했다는 것을 확인한 CPU는 `INTA#` 라인을 CLEAR해서 PIC에게 CPU가 인터럽트를 인지했음을 알린다. 그리고 PIC는 인터럽트 벡터 번호를 `[D7-D0]` 라인을 통해 CPU에게 전달한다.

    Symbol Pin No Type Name and Function
    D7–D0 4 –11 I/O BIDIRECTIONAL DATA BUS:
    - Control, status and interruptvector information is transferred via this bus.
    INT 17 O INTERRUPT:
    - This pin goes high whenever a valid interrupt request is asserted. It is used to interrupt the CPU, thus it is connected to the CPU’s interrupt pin.
    IR0–IR7 18 –25 I INTERRUPT REQUESTS:
    - Asynchronous inputs. An interrupt request is executed by raising an IR input (low to high), and holding it high until it is acknowledged (Edge Triggered Mode), or just by a high level on an IR input (Level Triggered Mode).
    INTA# 26 I INTERRUPT ACKNOWLEDGE
    - This pin is used to enable 8259A interrupt-vector data onto the data bus by a sequence of interrupt acknowledge pulses issued by the CPU.

     

    '공학 > 컴퓨터구조' 카테고리의 다른 글

    Port-Mapped IO  (1) 2023.08.11
    [컴퓨터 구조] AHCI  (0) 2023.08.10
    [컴퓨터 구조] PCI  (1) 2023.08.09
    [컴퓨터 구조] PCI 인터럽트  (0) 2023.08.08
    [컴퓨터구조][ARM] ARMv7 부트 코드  (0) 2023.08.07
Designed by Tistory.