DMA

agnusdei·2024년 10월 29일
0

Hardware & Software

목록 보기
74/136

문제: DMA(Direct Memory Access) 전송 방식에 대해 설명하시오.

답변:

DMA(Direct Memory Access)는 CPU의 개입 없이 메모리와 외부 장치 간에 데이터를 직접 전송할 수 있는 방식입니다. 이를 통해 시스템의 효율성을 높이고 CPU의 부하를 줄이는 데 사용됩니다. DMA는 여러 전송 방식이 있으며, 각 방식의 특징을 이해하는 것이 중요합니다. 주요 DMA 전송 방식은 아래와 같습니다.

1.	Burst 전송 방식 (Block Mode)
•	개념: Burst 전송 방식에서는 한 번에 하나의 큰 데이터 블록(Block)을 전송합니다. 전송이 시작되면, 전송이 완료될 때까지 CPU는 시스템 버스(System Bus)에 접근하지 않습니다. 이 방식은 데이터 전송이 연속적으로 이루어져 빠른 속도로 데이터를 전송할 수 있습니다.
•	사용처: 주로 하드 디스크와 같은 속도가 빠른 장치에 사용됩니다.
•	장단점: Burst 방식은 대용량 데이터 전송에 유리하나, 전송 동안 CPU는 버스를 사용할 수 없기 때문에 다른 작업을 수행하지 못하는 CPU 대기 시간이 발생할 수 있습니다.
2.	Cycle Stealing 방식 (Word Mode)
•	개념: Cycle Stealing 방식은 CPU가 버스를 사용하지 않는 사이클을 이용하여 DMA가 데이터를 전송합니다. 즉, CPU가 메모리에 접근하지 않는 아주 짧은 순간을 ‘훔치듯(Stealing)’ 사용하여 데이터를 전송합니다.
•	동작 방식: CPU가 버스를 사용하지 않는 사이클에 DMA 제어기가 버스 사용권을 요청하고, 그 순간을 활용해 데이터를 한 번에 한 단위(word)씩 전송합니다.
•	특징 및 장점: Cycle Stealing 방식은 CPU가 다른 작업을 수행할 수 있는 시간 확보가 가능하여 시스템 효율성을 높입니다. 그러나 CPU와 DMA가 동시에 버스를 사용하려 할 때 속도가 느린 DMA에 버스 사용권을 먼저 양보하는 방식이기 때문에, CPU의 동작이 일시적으로 중단될 수 있습니다.
•	단점: CPU와 DMA가 번갈아 버스를 사용하다 보니, CPU가 DMA의 작업이 완료될 때까지 기아 상태(Starvation)에 빠질 가능성이 있습니다.
3.	Interleaved DMA (교차 접근 방식)
•	개념: Interleaved DMA는 CPU와 DMA가 동시에 버스를 효율적으로 사용하도록 설계된 방식입니다. CPU와 DMA가 각자 버스 사용 시간을 분할하여 교차 접근하는 방식으로 동작합니다.
•	동작 원리: CPU가 버스를 사용하지 않는 시간(짧은 순간)을 파악하여 DMA 제어기가 그 시간을 활용하여 데이터를 전송합니다. 이 방식은 Burst 전송보다 시간이 오래 걸릴 수 있지만, CPU가 더 많은 작업을 동시에 수행할 수 있습니다.
•	장점: CPU와 DMA가 동시에 작업을 수행할 수 있어 시스템 효율성이 높아지고 자원 활용이 최적화됩니다.
•	단점: 각 작업에 필요한 시간이 나눠지기 때문에 전송 속도가 다소 느려질 수 있음.

비교 요약:

전송 방식 특징 장점 단점
Burst 전송 방식 블록 단위 전송, CPU가 버스를 전송 동안 사용하지 않음 빠른 속도로 대용량 전송 가능 전송 중 CPU가 대기해야 함
Cycle Stealing 짧은 순간을 이용한 데이터 전송 CPU의 작업 효율성 증대 CPU의 작업이 중단 가능성
Interleaved DMA CPU와 DMA가 버스를 교차 사용 자원 활용 최적화, CPU와 DMA 동시 작업 가능 전송 속도가 다소 느림

추가 설명: 기아 상태 (Starvation)

기아 상태(Starvation)란 특정 자원(버스, CPU 등)을 필요한 만큼 사용할 수 없는 상태를 의미합니다. DMA의 Cycle Stealing 방식에서, CPU와 DMA가 동시에 버스를 사용하려 할 때 CPU가 DMA에 버스 사용권을 자주 양보하게 되면 CPU는 자신의 작업을 제대로 수행하지 못하고 기아 상태에 빠질 수 있습니다.

DMA의 전송 방식에서 언급하는 사이클(Cycle)은 클록(Clock)과 직접적인 관계가 있습니다. 컴퓨터 시스템의 클록은 CPU와 메모리, 주변 장치들이 동기화되어 동작하도록 일정한 주기로 신호를 보내는 장치이며, 이 주기 하나하나가 사이클로 구분됩니다.

DMA에서의 사이클은 이러한 클록 주기를 기준으로 버스를 누가 사용하게 될지를 나누는 단위로 볼 수 있습니다. 다시 말해, 사이클은 클록 신호에 의해 생성된 연속된 주기들이며, 이 주기를 기반으로 CPU와 DMA가 번갈아 버스를 점유하게 됩니다.

구체적으로 설명하면:

1.	CPU와 DMA 간의 버스 점유 시간: CPU와 DMA가 모두 버스에 접근하려고 할 때, 클록 주기를 나누어 각각의 사이클에 특정 장치가 버스를 사용할 수 있도록 시간 분배를 합니다.
•	Cycle Stealing 방식에서는 CPU가 메모리에 접근하지 않고 대기하는 클록 사이클을 훔쳐서(DMA가 차지해서) 데이터 전송이 이루어집니다. 즉, CPU가 쉬는 클록 주기 동안 DMA가 잠시 버스를 점유하는 방식입니다.
2.	클록과 사이클의 분배 방식: 클록의 일정한 주기 중 일부는 CPU에 할당되고, 남은 일부는 DMA에 할당됩니다. 클록 주기 내에서 여러 사이클로 나뉘고, 각 사이클마다 버스 점유 우선권이 배정됩니다.
3.	동기화와 효율성: 시스템이 고속으로 동작할 때, 클록의 주기가 짧아지면(=주파수가 높아지면) 사이클이 더 짧아지고 더 자주 분배할 수 있기 때문에 CPU와 DMA 간의 동기화가 더욱 정밀해져 효율적으로 버스를 사용할 수 있습니다.

요약

•	**클록 주기(Clock Cycle)**는 DMA와 CPU가 시스템 자원을 동기화해 사용할 수 있도록 분배하는 단위입니다.
•	사이클은 클록 주기에 의해 생성된 일정한 주기를 의미하며, Cycle Stealing 방식에서는 CPU가 버스를 사용하지 않는 특정 클록 주기 동안 DMA가 이를 활용해 데이터 전송을 합니다.
•	클록이 빠를수록 (클록 속도가 높을수록) 사이클을 더 촘촘히 나눌 수 있어 CPU와 DMA의 자원 사용이 더욱 효율적입니다.

3.8GHz는 1초에 38억 번(3,800,000,000번)의 주기가 발생한다는 의미입니다.

계산 과정:

1.	**GHz(Gigahertz)**는 **10억(1,000,000,000) 헤르츠(Hz)**를 의미합니다.
2.	3.8GHz는 초당 3.8 * 10^9번, 즉 **3,800,000,000번의 주기(Cycle)**가 발생하는 속도입니다.

따라서 3.8GHz는 초당 38억 사이클이 진행되는 것입니다.

0개의 댓글