새소식

반응형
CS 지식/컴퓨터구조

[컴퓨터구조] 18-2. I/O - 2 (DMA 등..)

2023.10.10
  • -
반응형

Interrupts

CPU가 있으면 CPU가 직접 check 즉, polling하지 않고 IO 자체가 준비가 되면 IO가 interrupt를 걸어서 준비가 됐음을 알린다.

 

priority를 줄 수도 있음(우선순위를 먼저 처리)

  • 장치가 준비됐거나 error가 발생했을 때,
    • Controller는 CPU에게 interrupt를 건다.
  • Interrupt는 exception과 같은 것.
    • 그러나 명령 실행에 동기화되지 않음
    • instruction 사이에 handler를 호출할 수 있다
    • Cause information often identifies the interrupting device
    • 이유 정보가 종종 interrupting device를 식별
  • Priority interrupts
    • 더 긴급한 주의가 필요한 장치는 우선 순위가 높다
    • 낮은 우선순위의 Interrupt를 위해 handler를 Interrupt할 수 있다
  • Special hardware needed
    • Interrupt controller
    • 현재 모인 interrupt를 처리해서 CPU에 달린 하나의 interrupt pin으로 보내준다.

 

Interrupt controller

  • Example: ARM microcontroller (Cortex M0)

interrupt source들 모아서 CPU에게 알려주고 우선순위, 대기열 등에 의거하여 interrupt를 control 해주는 interrupt controller이 있음

 

I/O Data Transfer

  • Polling and interrupt-driven I/O
    • CPU가 메모리와 I/O 데이터 레지스터 간에 데이터 전송
    • 고속 장치의 경우 시간이 많이 소요됨
  • CPU가 harddisk에서 데이터는 lw하고 다시 메모리에 저장하는 행동은 너무 시간 소모가 심함.
  • Direct memory access (DMA)
    • CPU가 관여하지 않고
    • OS가 메모리에서 시작 주소를 제공
    • I/O 컨트롤러가 메모리로/로부터 자동 전송
    • 완료 또는 오류 시 컨트롤러가 중단됨

 

  • CPU는 다음과 기능이 있다. (셋 중 어느 기능이라도 없으면 CPU가 아님)
    • Arithmetic and Logical processing
    • Data move(lw/sw)
    • flow control
  • DMA는 위 기능 중에서 다른건 다 못하고 Data move만 가능하도록 만든 것이다.
  • IO에서 메모리, 메모리에서 IO

 

CPU 는 DMA controller 에게 다음과 같은 정보를 보낸다.

  • Read/Write
  • Device address
  • Starting address of memory block for data
  • Amount of data to be transferred

 

Direct Memory Access (DMA)

  • For high-bandwidth devices (like disks) interrupt-driven I/O would consume a lot of processor cycles
    • disk와 같은 높은 bandwidth를 가진 기기(interrupt-driven IO)는 수많은 processor cycle을 소비할 것이다.
  • With DMA, the DMA controller has the ability to transfer large blocks of data directly to/from the memory without involving the processor
    • DMA controller는 CPU 없이 memory와 직접적으로 거대 data block을 옮기는 능력이 있다.
  1. The processor initiates the DMA transfer by supplying the I/O device address, the operation to be performed, the memory address destination/source, the number of bytes to transfer
    • CPU는 I/O device address, 메모리 주소 destination/source, 전송할 바이트 수를 공급함으로써 DMA 전송을 시작한다.
  2. The DMA controller manages the entire transfer (possibly thousand of bytes in length), arbitrating for the bus
    • DMA controller는 전체의 전송을 관리한다.(가능한 한 1000 bytes 크기) ,bus를 커버하면서
  3. When the DMA transfer is complete, the DMA controller interrupts the processor to let it know that the transfer is complete
    • DMA 전송이 끝나면 DMA controller가 CPU에게 interrupt를 걸어서 다 끝났음을 알린다.
  • 하나의 시스템에 여러 개의 DMA 장치가 있을 수 있다
    • Processor 및 DMA 컨트롤러는  bus cycles 및 메모리에 대해 경쟁한다

처음에는 slave처럼 작동하다가 CPU가 bus를 끊으면 마치 master처럼 작동

 

DMA Data transfer (Example)

  • DMA 없이

  1. 메모리와 I/O 사이의 CPU 전송(읽기/쓰기) 데이터
  2. I/O 작업이 느리다 -> CPU 오버헤드

 

  1. CPU write 명령(r/w), 장치 주소, 메모리 주소 및 카운트
  2. Bus Request와 Bus Grant
  3. DMA는 데이터 전송을 제어한다(CPU는 여전히 캐시를 사용하고 다른 계산을 수행할 수 있음)
  4. 작업이 완료되면 CPU에 인터럽트를 보낸다

 

block 단위로 보낼 수 있는 버퍼가 존재

  • DMA가 Bus를 통해서 CPU에게 Request를 보냄
  • CPU가 허락함(Bus Grant)
  • 그러면 CPU와 memory의 연결을 끊어 버림
  • 그러면 DMA가 master가 돼서 memory를 직접 주거니 받거니 한다.
  • disk가 CPU를 거치지 않고 directly memory에 access 할 수 있게 됐다.
  • 전송을 마치면 interrupt를 보냄 -> 다시 CPU가 bus를 잡음

 

DMA data Transfer

  • DMA가 캐시된 메모리 블록에 기록하는 경우
    • 캐시된 복사본이 stale해진다. (탁해진다, 신선하지 않다)
  • write-back cache에 dirty block이 있고, DMA가 memory block을 읽는 경우
    • 오래된 데이터를 읽음
  • cache coherence 보장 필요
    • memory에 있는 데이터가 cache에도 있을 경우에는 memory에서 가져오거나 memory에 write해 봤자 의미가 없다.
      • cache에는 update 됐는데 memory에는 아직 update되지 않았다면 이 memory 내용을 가져오는 건 좋지 않음 -> cache coherence
      • write 할 때도 memory에만 update하면 안되고 cache에도 update 해주어야 함
    • DMA에 사용될 경우 OS는 캐시에서 쓰기를 강제로 수행합니다. (cache flush라고 함)
    • 혹은 non-cacheable memory locations for I/O 사용
      • cache를 통하지 않고 바로오도록 하는 공간을 따로 마련

 

DMA/VM Interaction

  • OS에서 메모리에 virtual address 사용
    • physical memory에서 DMA 블록이 연속되지 않을 수 있음
  • DMA에서 virtual address를 사용해야 하나?
    • DMA 컨트롤러는 virtual address를 hysical address로 변환해야 한다(즉, TLB 구조가 필요함)
  • 만약 DMA가 physical addresses 를 사용하는 경우  
    • 모든 DMA 전송이 한 page 내에 유지되도록 제한해야 한다. (그렇지 않은 경우, 메모리 내에서 연속적이지는 않습니다.)
    • 전송을 페이지 크기(page-sized)의 청크로 구분해야 할 수 있음
    • Or chain multiple transfers
    • Or DMA에 대해 연속적인 물리적 페이지 할당
  • Virtual 을 사용할 수도 physical을 사용할 수도 있음.
    • 어느 쪽을 사용하든 해당 페이지와 관련된 DMA 전송이 진행되는 동안 OS는 페이지를 다시 매핑하지 않음으로써 협력해야 한다

 

I/O system Performance

  • I/O 성능은 다음과 같다
    • Hardware: CPU, memory, controllers, buses
    • Software: operating system, database management system, application
    • Workload: request rates and patterns
  • I/O 시스템 설계를 통해 response timethroughput간에 균형을 맞출 수 있음  
    • 제한된 response time으로 수행되는 throughput 측정

 

I/O vs. CPU Performance

  • Amdahl’s Law
    • parallelism을 통해 컴퓨터 성능이 향상되므로 I/O 성능을 무시할 수 없다.
  • Example
    • Benchmark takes 90s CPU time, 10s I/O time
      • % IO time = 10/100 = 10%
    • CPUs 수 2배 증가 / 2-years
      • I/O unchanged
    • CPU time(1/f)은 줄여도 I/O time(f)은 줄일 수 없기 때문에 I/O time이 차지하는 비율이 점점 커진다.
    • 따라서 speed up을 할 수 없는 부분(f)인 I/O가 중요하다.

 

I/O System Design

  • latency requirements 만족
    • 시간이 많이 소요되는 작업의 경우
  • throughput 극대화
    • I/O 시스템에서 "가장 약한 링크"(가장 낮은 대역폭 구성 요소) 찾기
      • Processor and memory system ?
      • Underlying interconnection (i.e. bus?)
      • I/O controllers ?
      • I/O device themselves ?
  • 가장 약한 링크를 재구성하여 대역폭 및/또는 지연 시간(latency) 요구 사항 충족
  • 시스템에 남아 있는 구성 요소의 균형(balance) 조정

 

Concluding Remarks

  • I/O performance 측정
    • Throughput, response time
    • Dependability 과 cost도 중요함
  • CPU, 메모리, I/O 컨트롤러를 연결하는 데 사용되는 Buses
    • Polling, interrupts, DMA
  • I/O benchmarks
    • TPC, SPECSFS, SPECWeb
  • RAID
    • performance와 dependability 향상

 

disk controller 안에 dma가 들어있다.

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.