강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

whichan123님의 프로필 이미지
whichan123

작성한 질문수

PCB HW설계 실무 : STM32를 활용한 Mixed-signal 보드 설계 프로젝트

Micro-controller & Debugger 선택하기

AHB, APB 차이 질문입니다!

해결된 질문

작성

·

58

0

안녕하세요 삼코치님, AHB 와 APB 관련 질문 있습니다.
9강에서 AHB가 가장 속도가 느리다고 하셨는데, AHB는 고속 메모리 엑세스를 위한 것이고 APB는 저속 주변 장치들과 연결되는데 왜 AHB가 APB보다 느린건지 궁금합니다.

답변 2

0

안녕하세요, 답변 남겨드립니다.

핵심은 “속도가 느리다”라는 표현이 단순히 클록 주파수만을 의미하지 않고, “버스의 구조적 특성과 접근 방식에 따른 실질적인 데이터 전송 효율”을 의미한다는 점입니다.

AMBA(Advanced Microcontroller Bus Architecture) 계열 버스는 계층적으로 구성되어 있으며, 일반적으로 AHB → APB 순으로 하위 레벨 버스로 확장됩니다. AHB는 주로 CPU, DMA, 메모리(예: Flash, SRAM)처럼 대용량 데이터를 빠르게 주고받아야 하는 블록을 연결하는 고속 버스입니다. 반면 APB는 GPIO, UART, SPI, I2C, Timer 등 저속 주변 장치와의 제어 신호 전달용으로 설계되어 있습니다.

이제 ‘AHB가 느리다’는 표현이 나온 이유를 기술적으로 풀어보겠습니다. AHB는 파이프라인 구조와 버스트 전송(burst transfer)을 지원하지만, 이러한 고기능 구조로 인해 주소 단계(Address Phase)와 데이터 단계(Data Phase)가 분리되어 있고, 마스터 간의 중재(Arbitration)나 슬레이브 응답(Ready/Wait signal)에 따른 지연이 발생할 수 있습니다. 즉, 실제 단일 트랜잭션(예: 한 번의 Read/Write 요청)에 대해 초기 오버헤드가 존재합니다. 반면 APB는 단일 싸이클 기반의 매우 단순한 프로토콜을 가지며, Address → Enable → Data 단계로 끝나기 때문에 구조적으로 단순하고 latency가 짧습니다. 따라서 “단일 접근 기준으로는” APB가 빠르게 느껴질 수 있습니다.

예를 들어 STM32F4 시리즈에서 AHB는 CPU(ARM Cortex-M4)와 SRAM, Flash를 연결하고, 그 아래 APB1, APB2 버스가 존재합니다. AHB 클록이 168 MHz로 동작하고 APB1이 42 MHz, APB2가 84 MHz로 동작하더라도, 단일 레지스터 접근 시 AHB는 내부적으로 여러 신호 핸드셰이크를 거치기 때문에 몇 사이클이 소모될 수 있습니다. 반면 APB는 단순히 Peripheral Register에 직접 접근하기 때문에 오히려 “단일 명령 실행 시간”만 보면 빠르게 반응할 수 있습니다. 그러나 AHB는 연속된 대량 데이터 전송에서 버스트 모드(예: 8-beat, 16-beat 전송)를 지원하므로, 실제 데이터 전송 효율(Throughput)은 APB보다 압도적으로 높습니다.

정리하자면,

  • AHB는 고속 대역폭을 위한 구조이지만 파이프라인·중재 오버헤드 때문에 단일 접근 지연(latency)은 클 수 있습니다.

  • APB는 단순 제어용 버스로 구조가 간단해 latency가 짧지만, 대량 데이터 전송에는 부적합합니다.

  • 실제 MCU 내에서는 AHB 클록이 더 높지만, 주변장치 접근 시 APB 브리지 단을 거치므로 체감 속도는 APB가 더 단순하게 동작하는 것처럼 보일 수 있습니다.

따라서 “AHB가 느리다”는 표현은 클록 속도나 전송 대역폭이 아니라, 단일 접근의 효율과 구조적 단순성을 비교한 문맥에서 나온 표현으로 이해하시면 됩니다.

whichan123님의 프로필 이미지
whichan123
질문자

상세하게 답변해주셔서 감사합니다 바로 이해가 됐습니다!

0

안녕하세요, 인프런 AI 인턴입니다. whichan123님.

질문하신 AHB와 APB의 차이에 대해 설명드리겠습니다. 흔히 사용하는 AMBA(Advanced Microcontroller Bus Architecture) 프로토콜에서는 AHB(Advanced High-performance Bus)와 APB(Advanced Peripheral Bus)가 서로 다른 용도로 사용됩니다.

  1. AHB(Advanced High-performance Bus):

    • AHB 버스는 고속 메모리 액세스와 고성능 장치에 사용됩니다.
    • AHB의 특징은 버스트 전송 지원과 파이프라인 동작을 통해 데이터 전송 속도가 높다는 것입니다.
    • 하지만 버스 아키텍처가 복잡하고 다양한 제어 신호가 많기 때문에, 단순한 전송을 할 때 그 오버헤드가 발생할 수 있어 특정 시나리오에서는 실제 전송 속도가 느릴 수 있습니다.
  2. APB(Advanced Peripheral Bus):

    • APB 버스는 저속 주변 장치와 연결하기 위해 설계되었습니다.
    • 제어 구조가 단순하기 때문에 APB를 통한 데이터 전송은 오버헤드가 적고 구현이 간단합니다.
    • APB는 파이프라인이나 버스트 전송을 지원하지 않기 때문에 전반적인 전송 속도는 낮지만, 단순한 읽고 쓰기 작업에서는 효율적일 수 있습니다.

결론적으로, AHB가 일반적으로 더 빠른 데이터 전송을 지원하지만 복잡한 구조로 인해 오버헤드가 발생할 수 있고, 이로 인해 경우에 따라서는 APB가 단순한 작업에서 빠르게 느껴질 수 있습니다.

가장 중요한 것은 각 버스가 설계 목적에 맞게 사용하는 것입니다. AHB는 큰 데이터 전송과 고속 요구 사항이 있을 때 유리하고, APB는 저속의 단순한 주변 장치와 연결할 때 더 유리합니다.

두 버스를 비교하는 기존 질문도 참조하시기를 권장드립니다:
- AMBA AHB와 APB의 차이점 이해하기

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

whichan123님의 프로필 이미지
whichan123

작성한 질문수

질문하기