개념 이것저것

설계 목적에 따른 추상화

_KDE_ 2025. 4. 6. 17:11

adder를 설계시 (ripple-carry adder)

 

위와 같이 짜야하는데

 

이걸 8비트 ripple-carry로 만들려면 8개를 이어붙이고 carry 연결하면 복잡해지고 길어짐

 

 

하지만 processor 설계를 예를 들면

 

1. 설계 목적에 따라 추상화 수준이 다름

전체 데이터 경로(데이터패스)와 제어 흐름이 어떻게 연결되고 동작하는지를 보는 게 목적임

 

즉, “동작 흐름 설계”가 핵심이지, 개별 게이트까지 구현하는 게 핵심이 아님.

 

그래서 Adder는 내부 구조보다 “Adder가 있다”는 사실만 명확하게 표현하면 됨.

 

 

2. 합성 도구가 알아서 Gate-Level로 바꿔줌

 

assign sum = a + b;

 

위 코드는 컴파일러가 내부적으로 carry-lookahead adder, ripple-carry adder 등의 회로로 바꿔줌

👉 결국 게이트로 바뀌긴 하지만, 그걸 직접 짤 필요는 없는 상황

 

3. 생산성과 유지보수 측면에서 효율적

게이트 레벨로 일일이 짜면:

  • 코드 길어지고
  • 실수하기 쉽고
  • 나중에 바꾸기도 어려워

반면, 추상화된 adder 모듈은:

  • 직관적
  • 재사용 가능
  • 이해하기 쉬움

4. 게이트로 짜야 할 때도 있긴 함

  • 초저전력, 초고속 필요할 때
  • 레이아웃/면적 최적화가 중요할 때 (ASIC 레벨)
  • 수업에서 진짜 add 회로 동작 원리를 익히는 게 목적일 때