Firmware Engineer 직무적성검사 준비

박재권·2025년 4월 17일

📘 펌웨어 엔지니어 적성검사 + SoC 설계 Flow + 개념 정리 (정답 및 해설 포함)


✅ 1. 펌웨어 직무 적성검사 예상문제 (기초)

Q1. uint8_t a = 0b10110000; a = a | (1 << 2); 결과는?
A1. 0b10110100 → 비트 2가 1로 설정됨 (OR 연산)

Q2. 상위 4비트 유지, 하위 4비트 0으로 만드는 마스크는?
A2. 0xF0 → AND 연산 시 하위 비트 제거됨

Q3. 타이머 인터럽트 기반 흐름?
A3. 타이머 설정 → 인터럽트 발생 → ISR 실행 → 상태 업데이트

Q4. 상태머신: 정지 → 상승 → 도착 흐름을 위한 입력 조건은?
A4. 상승 버튼 입력 + 현재층 < 목표층 조건 만족 시

Q5. ROM / RAM / Flash / SRAM / DRAM 차이?
A5.

  • ROM: 읽기 전용
  • RAM: 휘발성
  • Flash: 전기적 비휘발성
  • SRAM: 빠름, 비싸고 용량 작음
  • DRAM: 느리지만 대용량, 리프레시 필요

Q6. I2C 특징 2가지?
A6. 슬레이브 주소 기반 통신 / SCL-SDA 단선 통신 / 멀티마스터 지원

Q7. 72MHz 클럭에서 1초 루프 = 몇 사이클?
A7. 약 72,000,000 사이클

Q8. MOV R0, #0x10 → 의미는?
A8. R0 레지스터에 0x10 저장


✅ 2. SoC 설계 Flow + 업계 용어

Q9. SoC 설계 Flow?
A9.
1. Specification 정의
2. 아키텍처 설계
3. RTL 설계
4. 시뮬레이션
5. 합성(Synthesis)
6. 배치배선(Layout)
7. DRC/LVS 확인
8. Tape-out
9. Bring-up
10. 펌웨어 개발

Q10. IP란?
A10. Intellectual Property: UART, SPI, I2C 등의 재사용 가능 설계 블록

Q11. MMIO란?
A11. Memory-Mapped I/O: 메모리 주소처럼 레지스터 접근

Q12. Bootloader 역할?
A12. MCU 초기 부팅, 사용자 코드 로딩, 업데이트 수행

Q13. Bring-up 시 첫 확인 항목?
A13. 전원, 클럭, MMIO 접근 가능 여부

Q14. Bare-metal이란?
A14. OS 없이 하드웨어 직접 제어 (MCU 전용 방식)

Q15. FOTA란?
A15. Firmware Over-The-Air: 무선 펌웨어 업데이트


✅ 3. 개념 기반 직무 문제 (심화)

Q16. Embedded Flash vs External Flash 차이?
A16.

  • Embedded: 속도 빠름, 통합 용이
  • External: 대용량, SPI/NAND 등 연결 필요

Q17. Bring-up 디버깅 방법 3가지?
A17.

  • UART printf
  • GPIO 토글
  • JTAG 디버깅 (Step 실행, 메모리 확인)

Q18. Timer vs PWM 차이?
A18.

  • Timer: 시간 기반 이벤트
  • PWM: 듀티비 조절 파형 생성 (ex. 모터 속도)

Q19. LED 끄는 코드 (MMIO)?
A19. REG &= ~(1 << n); → n번 비트를 0으로

Q20. UART 115200bps에서 1byte 전송 시간?
A20. 약 86.8μs (10bit 기준)

Q21. Flash 메모리 갱신 절차?
A21. 블록 단위 Erase → Page 단위 Write

Q22. Stack Overflow 원인?
A22. 무한 재귀 / ISR에서 큰 지역 변수 사용

Q23. Device Tree란?
A23. 리눅스에서 하드웨어 설정을 커널에 전달하는 구조

Q24. JTAG의 용도?
A24. 디버깅, 레지스터 접근, 메모리 확인, 펌웨어 다운로드


✅ 4. MCU 및 버스 관련 문제

Q25. AHB와 APB의 차이는?
A25.

  • AHB (Advanced High-performance Bus): 고속, 파이프라인 지원
  • APB (Advanced Peripheral Bus): 저속 주변장치용, 구조 단순

Q26. Cortex-M4와 M0의 차이점?
A26.

  • M4: DSP 명령, FPU 지원, 인터럽트 빠름
  • M0: 소형, 저전력, 구조 단순

Q27. 인터럽트 벡터 테이블은 어떤 역할을 하나요?
A27.
각 인터럽트에 대한 ISR 주소를 저장해 MCU가 인터럽트 발생 시 해당 위치로 점프하도록 한다.


Q28. 벡터 테이블이 위치하는 기본 주소는 어디인가요?
A28.
일반적으로 0x00000000 또는 ROM 영역. 일부 MCU는 RAM에 위치하도록 재배치 가능.


✅ 5. 디버깅과 테스트

Q29. Logic Analyzer의 활용 예시는?
A29.
I2C, SPI 등 디지털 신호의 타이밍 분석, 버그 추적


Q30. 디버깅 시 SWD와 JTAG의 차이?
A30.

  • SWD: 2선식 디버깅 (CLK + IO), ARM MCU 전용
  • JTAG: 4~5선식, 범용, 체인 가능

Q31. printf 디버깅이 어려운 환경에서 주로 사용하는 기법은?
A31.
GPIO 토글, LED 점멸, Logic Analyzer, Watchdog 리셋 확인


✅ 6. 메모리와 링커 스크립트

Q32. 링커 스크립트에서 .text, .data, .bss의 의미는?
A32.

  • .text: 실행 코드
  • .data: 초기화된 전역/정적 변수
  • .bss: 초기화되지 않은 변수

Q33. static 변수는 어느 영역에 저장되나?
A33.
초기화된 변수 → .data, 초기화 안된 변수 → .bss


Q34. 스택(Stack)과 힙(Heap)의 차이점?
A34.

  • Stack: 함수 호출 시 자동 관리, LIFO 구조
  • Heap: 동적 할당, malloc() 사용, 수동 해제 필요

✅ 7. 인터페이스 및 하드웨어 제어

Q35. SPI 통신 구성 요소?
A35.
MOSI, MISO, SCK, SS (Slave Select)


Q36. I2C와 UART의 주요 차이점은?
A36.

  • I2C: 동기식, 멀티마스터, 슬레이브 주소 필요
  • UART: 비동기식, 풀-듀플렉스, 시작/종료 비트 필요

Q37. UART 송신 코드 예시 (레지스터 기반)?
A37.

while (!(USART1->SR & USART_SR_TXE));  
USART1->DR = 'A';

Q38. SPI 통신에서 MSB First란?
A38.
데이터 전송 시 상위 비트부터 먼저 전송


Q39. Pull-up 저항은 언제 사용되나?
A39.
I2C 통신, 스위치 입력 안정화, Floating 방지용


Q40. MCU가 GPIO 핀에서 값을 읽을 때 입력이 Floating이면 어떤 문제가 생기나?
A40.
예측 불가능한 동작, 오작동 가능 → Pull-up/down 저항 필요


✅ 8. 기초회로 문제 (해설 및 정답 포함)


Q41. 옴의 법칙이란?

A41.
전압(V) = 전류(I) × 저항(R) → V = IR


Q42. 직렬 연결된 100Ω과 200Ω 저항의 합성 저항은?

A42.
100 + 200 = 300Ω


Q43. 병렬 연결된 100Ω과 200Ω 저항의 합성 저항은?

A43.
1 / (1/100 + 1/200) = 66.67Ω


Q44. 전압 분배 법칙이란?

A44.
직렬 연결된 저항에서 원하는 지점의 전압:
Vout = Vin × (R2 / (R1 + R2))


Q45. 커패시터는 어떤 상황에서 충전/방전을 하나요?

A45.
전압 변화 시 충전/방전하며, DC에서는 오픈 회로처럼 동작, AC에서는 주파수 의존적으로 동작


Q46. 바이패스 커패시터는 어떤 용도로 사용되나?

A46.
전원선에서 노이즈 제거, IC 근처에 배치


Q47. 다이오드의 역할은?

A47.
한 방향으로만 전류 흐름을 허용 (정류, 보호 등)


Q48. 쇼트키 다이오드의 특징은?

A48.
낮은 순방향 전압(약 0.2~0.3V), 고속 스위칭


Q49. Zener 다이오드는 어떤 용도에 쓰이나요?

A49.
역방향으로 동작하여 전압 레귤레이터로 사용


Q50. NPN 트랜지스터의 동작 조건은?

A50.
베이스에 전압이 걸려야 전류가 흐름 (베이스-이미터 전압 V_BE ≈ 0.7V 이상 필요)


Q51. Pull-up 저항이 없는 상태에서 버튼을 누르지 않았을 때 입력 핀의 상태는?

A51.
Floating 상태 → 값이 불안정함


Q52. 전압원과 직렬 연결된 LED에 저항 없이 바로 연결하면 어떤 일이 생길까?

A52.
과전류로 인해 LED 손상 또는 파손


Q53. 오실레이터 회로의 목적은?

A53.
주기적인 파형(클럭)을 생성하여 MCU 등의 타이밍 소스로 사용


Q54. RC 회로에서 커패시터 충전 시간은 어떻게 계산하는가?

A54.
시간 상수 τ = RC → 5τ 이후 약 99% 충전됨


Q55. 쇼트 회로(Short circuit)란?

A55.
거의 0Ω 경로로 인해 과전류가 흐르는 상태 → 발열, 손상 가능


Q56. 퓨즈(Fuse)의 역할은?

A56.
과전류 발생 시 회로를 차단하여 보호


Q57. GND(접지)는 왜 필요할까?

A57.
공통 기준점 제공, 전압 차 계산 기준, 회로 안정성 보장


Q58. 입력 임피던스가 높은 회로는 어떤 장점이 있을까?

A58.
신호 소스를 방해하지 않음 → 측정기, 연산증폭기 등에 사용


Q59. 아날로그 신호를 MCU에서 읽을 수 있도록 하는 회로는?

A59.
ADC (Analog to Digital Converter)


Q60. Pull-up과 Pull-down 회로의 차이?

A60.

  • Pull-up: 입력이 없을 때 High 상태 유지
  • Pull-down: 입력이 없을 때 Low 상태 유지

✅ 9. RTOS 관련 문제


Q61. RTOS의 주요 구성 요소 3가지는?

A61.
1. Task (또는 Thread)
2. Scheduler
3. Inter-task Communication (Queue, Semaphore 등)


Q62. Preemptive Scheduling이란?

A62.
우선순위가 더 높은 Task가 실행 중인 낮은 Task를 중간에 끊고 실행되는 방식
→ 실시간성 확보에 적합


Q63. Semaphore와 Mutex의 차이점은?

A63.

  • Semaphore: 공유 리소스 개수 제어용, 카운팅 가능
  • Mutex: 단일 리소스 보호, 소유자 개념 있음

Q64. RTOS에서 context switch란?

A64.
현재 Task의 상태(레지스터 등)를 저장하고 다른 Task로 전환하는 과정


Q65. Task가 Block 상태에 들어가는 경우는?

A65.
Delay, Semaphore 획득 대기, Queue 메시지 수신 대기 등


Q66. RTOS에서 Stack Overflow를 방지하기 위한 방법?

A66.

  • Task별 Stack Size 충분히 확보
  • Stack 사용량 모니터링 (Watermark check)
  • Static stack allocation 사용

Q67. RTOS 없이 구현된 코드와 비교하여 RTOS의 장점은?

A67.

  • 멀티태스킹
  • 코드 모듈화
  • 일정 응답시간 보장
  • 디버깅, 유지보수 용이

✅ 10. DMA & 인터럽트 관련 문제


Q68. DMA의 장점은?

A68.
CPU의 개입 없이 주변장치와 메모리 간 데이터를 전송하여 CPU 부하를 줄임


Q69. DMA는 어떤 종류의 전송을 지원하나요?

A69.

  • Memory to Peripheral
  • Peripheral to Memory
  • Memory to Memory (일부 지원)

Q70. 인터럽트와 폴링 방식의 차이는?

A70.

  • 폴링: CPU가 반복적으로 상태 확인
  • 인터럽트: 이벤트 발생 시 자동으로 ISR 실행
    → 인터럽트가 전력 효율성과 반응성에서 유리함

Q71. Nested interrupt란?

A71.
인터럽트 중에 더 높은 우선순위의 인터럽트가 발생하여 중첩 실행되는 것


Q72. NVIC는 무엇인가?

A72.
Nested Vectored Interrupt Controller –
Cortex-M MCU에서 인터럽트 우선순위, Enable/Disable을 관리


Q73. 인터럽트 우선순위를 설정할 수 있는 이유는?

A73.
더 긴급한 작업을 빠르게 처리할 수 있도록 하기 위해
(예: 타이머 인터럽트 > 버튼 입력)


Q74. DMA와 인터럽트를 병행하여 사용할 수 있나요?

A74.
가능. DMA 완료 시 인터럽트를 발생시켜 처리 흐름 제어


Q75. 인터럽트 핸들러 안에서 긴 연산을 수행하면 어떤 문제가 발생하나요?

A75.

  • 다른 인터럽트가 지연됨 (응답성 저하)
  • 시스템 전체가 느려짐
    → 짧게 처리하고 Task나 Flag로 넘기는 게 원칙

✅ 11. 기초 회로 문제 추가


Q76. 연산 증폭기(Op-Amp)의 가장 대표적인 두 가지 구성 방식은?

A76.

  • 반전 증폭기 (Inverting Amplifier)
  • 비반전 증폭기 (Non-Inverting Amplifier)

Q77. 트랜지스터 스위칭 회로에서 베이스 저항이 필요한 이유는?

A77.
과도한 베이스 전류로 인한 과열 및 손상 방지


Q78. 클램핑 회로란?

A78.
출력 전압을 특정 범위로 제한하는 회로 (예: 다이오드로 ±0.7V 제한)


Q79. 파워 레일(Power Rail)이란?

A79.
PCB에서 전원(VCC, GND)을 배분하는 주요 배선 경로


Q80. 오실로스코프로 관찰 가능한 정보는?

A80.
전압의 시간 변화, 파형 모양, 진폭, 주기, 주파수, 노이즈 등


✅ 기초 회로이론 문제 (심화 설명 포함)


Q81. 직렬과 병렬 회로의 차이는 무엇인가요?

정답:

  • 직렬 회로: 전류가 한 경로로만 흐름. 전류는 동일, 전압은 분배됨.
  • 병렬 회로: 전류가 분기됨. 전압은 동일, 전류는 분배됨.

해설:
직렬 회로에서는 흐르는 전류가 동일하므로 저항이 많을수록 전압이 많이 걸린다. 병렬 회로는 각 지점의 전압이 동일하지만 저항값에 따라 분기된 전류가 다르게 흐른다.

예: LED를 병렬 연결하면 각각 동일한 전압이 걸리므로 저항을 따로 달지 않으면 과전류가 흐를 수 있음.


Q82. 커패시터는 왜 AC를 통과시키고 DC는 막을까?

정답:
커패시터는 전압이 변화할 때만 전류를 흐르게 하기 때문에, 정전압인 DC는 차단, 변화하는 AC는 통과시킨다.

해설:
커패시터는 충전과 방전을 반복하면서 전류를 흐르게 한다.

  • DC: 일정한 전압 → 일정 시간 후 충전 완료 → 전류 흐르지 않음 (오픈 회로처럼 동작)
  • AC: 전압이 계속 변함 → 항상 충/방전 발생 → 전류 흐름 유지

응용: 커플링(Coupling) 커패시터는 AC만 통과시키기 위해 사용됨.


Q83. 인덕터는 어떤 동작을 하나요? 커패시터와 어떻게 반대인가요?

정답:

  • 인덕터는 전류의 변화에 저항(자속 생성)
  • 급격한 전류 변화 방지
  • AC는 저항 생기고, DC는 저항 없음

해설:
인덕터는 자속(자기장)을 이용하여 전류를 저장함. 전류 변화가 급격하면 반발력(유도 기전력)이 생겨서 변화율을 낮춘다.

  • DC: 일정한 전류 → 인덕터가 저항처럼 동작 안 함
  • AC: 전류 변화가 지속 → 인덕턴스로 인해 저항 발생 (리액턴스)

필터 회로에서 커패시터와 함께 사용되어 고/저역 필터 설계 가능


Q84. RC 회로에서 시간 상수 τ는 무슨 의미인가요?

정답:

  • 시간 상수 τ = R × C
  • τ 시간 후 충전은 약 63%, 방전은 약 37% 진행됨
  • 5τ 후에는 거의 완전 충/방전됨 (99%)

해설:
전압 변화가 지수 함수 형태로 이루어지며, 시간 상수는 회로의 반응 속도를 결정한다.

  • 작은 τ → 빠른 반응
  • 큰 τ → 느린 반응

예: 전원 스위치 딜레이, 버튼 디바운싱, ADC 안정화 시간 등에 활용됨


Q85. 휘트스톤 브리지(Wheatstone Bridge)의 목적은 무엇인가요?

정답:

  • 미세한 저항 변화 측정에 사용 (센서용)
  • 브리지 균형 상태에서 출력 전압이 0이 됨

해설:
센서의 저항값이 바뀌면 브리지 회로에서 출력 전압이 발생 → 이를 측정하여 물리량(압력, 온도 등)으로 변환 가능

예: 스트레인 게이지, 온도 센서 회로


Q86. 연산 증폭기(Op-Amp)의 이득은 왜 이상적으로 무한대인가요?

정답:
이상적인 Op-Amp는 입력 간 전압 차가 0이 되도록 작동하므로, 극히 작은 입력 전압에도 큰 출력 변화가 발생한다.

해설:

  • 이득 A → 무한대
  • 입력 임피던스 → 무한대 (전류 거의 흐르지 않음)
  • 출력 임피던스 → 0 (출력이 강함)

이러한 특성으로 정밀한 증폭, 비교기, 필터 등 다양하게 활용됨.


Q87. 전원 노이즈를 제거하기 위해 사용하는 부품은 무엇인가요?

정답:

  • Bypass Capacitor (바이패스 커패시터)
  • Ferrite Bead
  • LDO/레귤레이터

해설:
고주파 노이즈를 GND로 우회시켜 전원 안정성을 높인다. 특히 디지털 회로나 MCU 근처에서는 0.1µF 커패시터를 많이 사용한다.


Q88. MOSFET의 Gate는 전류를 흘릴까?

정답:
아니요. 게이트는 절연되어 있어 전류가 거의 흐르지 않음

해설:
MOSFET은 Gate-Oxide 절연막이 있어, 전압에 따라 채널이 열릴 뿐 전류는 흐르지 않는다.
→ 따라서 전압 제어 소자, MCU의 GPIO로 직접 제어 가능


Q89. FET와 BJT의 차이는 무엇인가요?

정답:

항목BJTFET
제어 방식전류 제어 (베이스 전류)전압 제어 (게이트 전압)
입력 임피던스낮음높음
속도느림빠름
전력 소모높음낮음

해설:
FET는 고속 스위칭과 저전력으로 현대 회로에 더 적합. BJT는 고전력 증폭기 등에 사용됨.


Q90. 회로의 임피던스 매칭이 중요한 이유는?

정답:
신호 손실, 반사, 왜곡을 방지하여 에너지 전달 효율을 높이기 위함

해설:
특히 고주파(예: RF, 고속 데이터)에서는 송신단과 수신단의 임피던스를 맞추지 않으면 신호 반사가 발생. 일반적으로 50Ω 또는 75Ω으로 설계함.


✅ 꼭 알아야 할 핵심 문제 10선 (분야 혼합형)


Q91. IP와 IP Integration이란 무엇인가요?

분야: SoC 설계 흐름

정답:

  • IP (Intellectual Property): 재사용 가능한 설계 블록 (예: UART, Timer, SPI 등)
  • IP Integration: 다양한 IP를 하나의 시스템에서 인터페이스 및 동작 타이밍 등을 맞춰 시스템화하는 과정

해설:
현대 SoC는 수많은 IP 블록의 조합으로 구성되며, 이들을 AMBA, Wishbone, Avalon 같은 버스로 연결해 하나의 칩을 구성함.


Q92. MMIO와 I/O 포트 방식의 차이점은?

분야: MCU 메모리 매핑

정답:

  • MMIO (Memory-Mapped I/O): 주변장치를 메모리 주소 공간에 매핑하여 접근
  • I/O Port 방식: 별도의 I/O 주소 공간을 통해 접근 (주로 x86에서 사용)

해설:
ARM이나 RISC-V 기반 시스템은 대부분 MMIO를 사용. 메모리처럼 포인터로 제어 가능하여 코드가 간결함.


Q93. Embedded Flash와 External Flash의 차이점은?

분야: 저장장치

정답:

  • Embedded Flash: 칩 내부에 내장, 속도가 빠름, 용량 작음
  • External Flash: 외부 칩에 존재, SPI/QSPI로 연결, 용량 큼

해설:
Firmware 부트는 보통 Embedded Flash에서 시작하고, 외부 Flash는 리소스 저장용 등으로 사용.


Q94. Timer와 PWM의 차이는 무엇인가요?

분야: MCU 주변장치

정답:

  • Timer: 시간 측정, 일정 주기로 인터럽트 발생
  • PWM: 일정 주기로 신호를 켜고 끄는 비율(듀티 사이클)을 조절

해설:
PWM은 내부 Timer의 기능을 기반으로 하며, LED 밝기/모터 속도 제어 등 아날로그 제어에 사용.


Q95. DMA와 CPU가 데이터를 공유할 때 발생할 수 있는 문제점은?

분야: 실시간 시스템

정답:

  • Race Condition, Cache Coherency 문제
  • Memory 버스 충돌 가능성

해설:
CPU와 DMA가 동시에 메모리를 접근하면 데이터 충돌 가능성 있음. 이를 방지하려면 Cache Clean/Invalidate 처리와 Memory Barrier 사용이 필요함.


Q96. Bring-up 과정에서 디버깅 방법 3가지는?

분야: 실무 디버깅

정답:
1. UART printf: 코드 진행 상태, 변수값 확인
2. GPIO 토글: 특정 시점 신호를 논리분석기/오실로스코프로 확인
3. JTAG 디버깅: 브레이크포인트, 스텝 실행, 메모리 확인 가능

해설:
보드 Bring-up 시 printf보다 GPIO나 JTAG이 더 신뢰성 있는 디버깅 방법이다.


Q97. SoC 설계 Flow의 일반적인 순서는?

분야: SoC 개발 과정

정답:
1. Specification 정의
2. RTL 설계 (Verilog/VHDL)
3. Simulation & Functional Verification
4. Synthesis
5. Floorplanning & Placement
6. Routing
7. Static Timing Analysis
8. DRC/LVS
9. Tape-out
10. Bring-up & Validation

해설:
실제 칩을 만들기 전 모든 단계에서 기능, 전기적, 시간적 특성을 검증해야 함. Verification이 전체의 60% 이상 차지.


Q98. Pull-up과 Pull-down 저항은 언제 사용하나요?

분야: 디지털 회로

정답:

  • 입력이 Floating 상태일 때 안정된 값 고정을 위해 사용
    • Pull-up → High 기본 상태
    • Pull-down → Low 기본 상태

해설:
버튼 입력이나 외부 신호가 연결되지 않은 순간에 예상치 못한 동작(노이즈 유입)을 막아줌.


Q99. 스위칭 레귤레이터와 LDO의 차이는?

분야: 전원 회로

정답:

  • LDO (Linear Regulator): 저잡음, 전압 강하 방식, 효율 낮음
  • 스위칭 레귤레이터: 인덕터 사용, 고효율, 노이즈 있음

해설:
민감한 아날로그 회로에는 LDO, 고전력 회로에는 스위칭 사용. 전력 효율/발열 고려.


Q100. 인터럽트를 마스킹하는 이유는?

정답:

  • 특정 코드(크리티컬 섹션) 실행 중 인터럽트로 인한 상태 불일치를 방지하기 위해

해설:
예를 들어, 전역 변수 수정 중 인터럽트가 발생해 같은 데이터를 참조하면 충돌 발생.
__disable_irq() 또는 뮤텍스 등으로 보호 필요.

좋아! 컴퓨터 구조는 펌웨어/SoC/임베디드 쪽 모두에서 매우 중요한 기초지식이라, 지원자가 꼭 알고 있어야 해.
아래는 펌웨어 엔지니어 및 하드웨어 기반 개발자를 위한 컴퓨터 구조 핵심 개념 문제 10선이야.
문제 + 정답 + 해설 형식으로 줄게.


🧠 컴퓨터 구조 핵심 개념 문제 10선 (정답 + 해설 포함)


Q101. 하버드 구조와 폰 노이만 구조의 차이점은?

정답:

  • 하버드 구조: 명령어 메모리와 데이터 메모리가 분리됨
  • 폰 노이만 구조: 명령어와 데이터를 같은 메모리에서 처리

해설:
하버드 구조는 동시에 명령어 fetch와 데이터 access가 가능하여 빠르지만, 구현 복잡도가 높음.
폰 노이만 구조는 단순하지만 명령어/데이터 충돌(Bottleneck) 발생 가능.


Q102. 파이프라이닝(Pipelining)의 목적은?

정답:

  • 명령어 실행 단계를 겹쳐 처리함으로써 처리 속도를 높이기 위해

해설:
IF → ID → EX → MEM → WB의 각 단계를 나눠 여러 명령어를 동시에 실행시킴.
하지만 데이터/제어 해저드 같은 문제도 함께 생김.


Q103. 캐시 메모리의 역할은?

정답:

  • CPU와 메인 메모리 사이의 속도 차이를 줄이기 위해 사용되는 고속 메모리

해설:
자주 사용하는 데이터를 미리 저장하여 빠르게 접근.
L1, L2, L3 등 계층 구조를 갖고, Hit/Miss 개념이 중요.


Q104. 캐시의 지역성(Locality)이란?

정답:

  • 시간적 지역성: 최근에 접근한 데이터는 다시 접근할 가능성이 높음
  • 공간적 지역성: 인접한 데이터가 함께 접근될 가능성이 높음

해설:
캐시 설계는 이 지역성 개념을 바탕으로 함. 예: 블록 단위로 캐시하기.


Q105. 인터럽트(Interrupt)와 폴링(Polling)의 차이는?

정답:

  • 인터럽트: 이벤트 발생 시 CPU에 알림, 효율적
  • 폴링: CPU가 반복적으로 상태를 확인, 비효율적

해설:
실시간 반응이 필요한 시스템은 인터럽트 방식 사용.
단, 인터럽트 과다하면 Context Switch 오버헤드가 생김.


Q106. RISC와 CISC의 차이점은?

정답:

  • RISC: 단순한 명령어, 고속 실행
  • CISC: 복잡한 명령어, 적은 코드 양

해설:
ARM은 대표적인 RISC 구조, 인텔 x86은 CISC.
RISC는 파이프라이닝과 병렬처리에 유리함.


Q107. 버스(Bus)란 무엇인가요?

정답:

  • CPU, 메모리, 주변장치를 연결하는 통신 경로

해설:
주소 버스, 데이터 버스, 제어 버스로 구성됨.
버스 폭이 클수록 더 많은 데이터 전송 가능.


Q108. 프로그램 카운터(PC)의 역할은?

정답:

  • 다음에 실행할 명령어의 주소를 저장하는 레지스터

해설:
명령어 실행 후 PC는 자동으로 증가하거나 분기 명령에 따라 수정됨.


Q109. 명령어 사이클(Instruction Cycle)이란?

정답:
1. Fetch (명령어 읽기)
2. Decode (해석)
3. Execute (실행)
4. Memory Access (필요시)
5. Write Back

해설:
이 과정을 반복하면서 프로그램 실행이 이루어짐.


Q110. 페이징(Paging)의 목적은?

정답:

  • 메모리를 일정한 크기의 페이지로 나누어 관리하는 방식
  • 프로그램은 가상 주소, 하드웨어는 물리 주소 사용

해설:
주소 공간을 효율적으로 분할하고, 메모리 보호와 가상메모리 구현 가능.


📘 기초적인 컴퓨터 구조 개념 + 문제 (빅엔디안, MSB 등)


🔹 Q111. 빅 엔디안(Big Endian) vs 리틀 엔디안(Little Endian)

문제:
32비트 숫자 0x12345678을 메모리에 저장할 때,

  • Big Endian 방식으로 저장하면?
  • Little Endian 방식으로 저장하면?

정답:

  • Big Endian: 12 34 56 78
  • Little Endian: 78 56 34 12

해설:

  • Big Endian: 가장 큰 바이트(MSB)를 가장 앞(작은 주소)에 저장
  • Little Endian: 가장 작은 바이트(LSB)를 가장 앞에 저장

    대부분의 x86, ARM Cortex-M은 Little Endian 사용


🔹 Q112. MSB / LSB란?

정답:

  • MSB (Most Significant Bit): 가장 왼쪽 비트 (값이 가장 큼)
  • LSB (Least Significant Bit): 가장 오른쪽 비트 (값이 가장 작음)

예시:
8비트 값 10110100에서

  • MSB = 1 (2⁷ 자리)
  • LSB = 0 (2⁰ 자리)

해설:
이 개념은 시리얼 통신, 쉬프트 연산, 부호 판단 등에 매우 중요.

부호비트가 MSB 위치에 있을 경우, 1이면 음수(2의 보수 표현).


🔹 Q113. 2의 보수(Two's Complement) 표현이란?

문제:
8비트로 -5를 2의 보수로 표현하면?

정답:

  • 5의 이진수: 00000101
  • 1의 보수: 11111010
  • +1 더하면 → 11111011

해설:
2의 보수는 컴퓨터에서 음수를 표현하는 표준 방식이야.
MSB가 1이면 음수, 0이면 양수로 해석함.


🔹 Q114. Signed vs Unsigned 정수의 차이는?

정답:

  • Signed: 부호를 표현할 수 있음 (예: -128 ~ 127)
  • Unsigned: 부호 없이 양수만 표현 (예: 0 ~ 255)

해설:
C에서 intunsigned int 구분은 중요!
덧셈, 비교, 시프트 연산에서 오류가 발생할 수 있음.


🔹 Q115. Shift 연산에서 >>와 <<의 의미는?

정답:

  • x << n: x를 n비트 왼쪽으로 이동, 곱하기 2ⁿ
  • x >> n: x를 n비트 오른쪽으로 이동, 나누기 2ⁿ

주의:

  • 산술 시프트 (signed)는 부호 유지
  • 논리 시프트 (unsigned)는 0을 채움

🔹 Q116. Bit Masking 개념 문제

문제:
레지스터 0b10101101에서 4번째 비트를 1로 만들고 싶다. 어떤 연산을 해야 할까?

정답:

reg |= (1 << 3);  // 0-index 기준, 4번째 비트는 비트 3

해설:

  • |=는 OR 연산 → 해당 위치를 1로 만든다
  • AND (&), OR (|), XOR (^), NOT (~)은 하드웨어 제어 기본

🔹 Q117. Memory-mapped I/O와 I/O 포트 방식의 차이

정답:

  • MMIO (Memory Mapped I/O): I/O 장치를 메모리 주소처럼 접근 (*(volatile uint32_t*)0x40021000 = ...)
  • I/O Port 방식: CPU에 별도 I/O 명령 (IN, OUT)이 있음 (주로 x86)

해설:
ARM 기반 임베디드 시스템은 대부분 MMIO 사용.
메모리와 동일한 방식으로 장치를 제어할 수 있음.


🔹 Q118. 1바이트는 몇 비트인가?

정답:

  • 1 Byte = 8 bits

해설:
8비트는 0~255 범위의 숫자(256개) 표현 가능.
기억: 1 nibble = 4 bit, 2 nibble = 1 byte


🔹 Q119. 시프트 연산과 마스크 연산의 조합 문제

문제:
레지스터에서 5~3번 비트(3bit)만 추출하려면?

정답:

(value >> 3) & 0x07

해설:

  • 먼저 3비트 오른쪽으로 이동해 5~3비트를 LSB 쪽으로
  • 그리고 0b00000111 (0x07)로 마스킹하여 3비트만 추출

🔹 Q120. 주소 정렬(Alignment)이란?

정답:

  • 메모리에서 데이터가 자연스러운 경계(2, 4, 8 byte)에 맞게 저장되어야 함

해설:
4바이트 정렬된 시스템에서 int는 0, 4, 8 주소에 있어야 함.
정렬되지 않으면 접근이 느려지거나 하드웨어 오류 발생 가능.


🔍 컴퓨터 구조 & 시스템 설계 필수 문제 10선 (심화편)


Q121. DMA(Direct Memory Access)의 장점은?

정답:

  • CPU의 개입 없이 주변장치 ↔ 메모리 간 고속 데이터 전송 가능

해설:
CPU는 오직 전송 명령만 내리고, 그 이후 데이터 전송은 DMA 컨트롤러가 수행.
CPU의 부하 감소 + 빠른 전송 가능.
예: UART 수신 버퍼 → 메모리 저장, SPI 연속 전송 등.


Q122. MMU(Memory Management Unit)의 기능은?

정답:

  • 가상 주소 ↔ 물리 주소 변환
  • 접근 권한 제어 (프로세스 간 보호)
  • 페이지 매핑

해설:
MMU는 OS가 메모리를 효율적으로 관리할 수 있도록 지원함.
임베디드 고성능 OS(Linux 등)에서는 MMU가 필수적이지만, RTOS에서는 없을 수도 있음.


Q123. RTOS의 핵심 기능은?

정답:

  • 태스크 스케줄링 (우선순위 기반)
  • 인터럽트 처리
  • 동기화 (Semaphore, Mutex)
  • 타이머/딜레이

해설:
RTOS는 실시간 처리를 보장하는 운영체제로, 미션 크리티컬 임베디드 시스템에 주로 사용됨.
Ex: FreeRTOS, RTX, Zephyr


Q124. RISC-V에서 lw 명령어는 어떤 역할을 할까?

정답:

  • lw x5, 0(x10) → x10 주소에서 32비트 데이터를 읽어 x5에 저장

해설:

  • lw = load word (32-bit)
  • 기본적으로 RISC는 Load-Store 아키텍처 → 메모리 연산은 load/store로만 수행

Q125. Harvard Architecture가 DSP에 적합한 이유는?

정답:

  • 명령어와 데이터가 동시에 접근 가능 → 고속 연산 가능

해설:
DSP(Digital Signal Processor)는 반복적인 수치 연산이 많기 때문에 데이터와 명령어를 동시에 읽는 구조가 효율적임.


Q126. Cache의 Associativity란?

정답:

  • 특정 메모리 블록이 캐시의 어느 위치에 저장될 수 있는지 결정하는 방식

종류:

  • Direct Mapped (1개 위치)
  • Set Associative (n개 중 1곳)
  • Fully Associative (어디든)

해설:
Set-associative는 성능과 구현 복잡도의 균형점.
Miss율, Hit시간 등을 비교할 때 중요.


Q127. Interrupt Vector Table(IVT)이란?

정답:

  • 인터럽트 발생 시 실행할 ISR 주소를 저장한 테이블

해설:
CPU는 인터럽트가 발생하면 IVT를 참조해 해당 ISR을 실행함.
ARM Cortex-M에서는 벡터 테이블이 메모리 주소 0x00000000에서 시작함.


Q128. TCM(Tightly Coupled Memory)의 특징은?

정답:

  • CPU에 직접 연결된 저지연 고속 메모리

해설:
일반 SRAM보다 빠르고, 캐시 대신 사용되기도 함.
실시간 응답이 필요한 코드나 데이터 저장에 사용.
→ RTOS 커널, 인터럽트 핸들러 등.


Q129. Memory Hierarchy가 중요한 이유는?

정답:

  • 속도와 비용의 균형을 맞추기 위해 다단계 구조 사용
    (Register → Cache → RAM → SSD/HDD)

해설:
비싼 고속 메모리를 적게 사용하고, 저속 대용량 메모리는 캐시로 보완하는 구조.
속도 차이가 클수록 캐시 성능이 중요해짐.


Q130. Interrupt Latency를 줄이는 방법은?

정답:

  • ISR을 짧게 작성
  • 높은 우선순위 인터럽트 사용
  • 중첩 인터럽트 허용 설정
  • DMA 활용하여 ISR에서의 데이터 처리 제거

해설:
인터럽트 지연은 실시간 시스템에 치명적이기 때문에 짧고 빠른 처리가 필수.
보통 ISR에서는 flag만 세우고, 처리는 다른 쓰레드에서 진행.


🔧 임베디드/SoC 설계/시스템 구조 필수 개념 문제 10선 (고급편)


🔹 Q131. 인터럽트와 폴링의 차이점은?

정답:

  • 인터럽트: 이벤트 발생 시 하드웨어가 CPU에게 알림
  • 폴링: CPU가 주기적으로 상태를 직접 확인

해설:
인터럽트는 효율적이고 반응이 빠름.
폴링은 CPU 자원을 소모하지만 구현은 단순.


🔹 Q132. RTOS에서 Semaphore와 Mutex의 차이점은?

정답:

  • Semaphore: 리소스 개수를 관리 (1개 이상 가능)
  • Mutex: 오직 한 쓰레드만 소유 가능 (상호 배제)

해설:
Semaphore는 동기화, 이벤트 알림용.
Mutex는 자원 보호 전용, 소유권 개념이 있음.


🔹 Q133. SoC 설계 플로우 중 RTL 설계 이후의 단계는?

정답 (일반적 플로우 순서):
1. RTL 코딩 (Verilog/VHDL)
2. 시뮬레이션
3. Synthesis (논리합성)
4. Place & Route
5. Timing 분석
6. GDSII 생성
7. 칩 제조

해설:
FPGA일 경우는 GDSII 단계 없이 Bitstream으로 종료.


🔹 Q134. SoC에서 클럭 도메인 문제란?

정답:

  • 서로 다른 클럭을 사용하는 블록 간에 발생하는 타이밍 문제

해설:
비동기 클럭 사이에는 메타스테이블 상태가 발생할 수 있어.
해결책은 동기화 회로 (Synchronizer), FIFO 등.


🔹 Q135. 캐시 일관성(Cache Coherency)이란?

정답:

  • 다수의 캐시가 동일 데이터를 공유할 때, 변경 내용의 동기화를 유지하는 것

해설:
멀티코어 SoC에서는 한 CPU가 수정한 데이터를 다른 CPU가 읽을 때 문제가 발생할 수 있음.
해결 방법: MESI protocol, snooping, write-through 등.


🔹 Q136. 클럭 게이팅(Clock Gating)의 목적은?

정답:

  • 불필요한 회로에 클럭을 공급하지 않아 전력 소비를 줄임

해설:
SoC에서 파워 최적화를 위해 널리 쓰임.
예: 사용하지 않는 peripheral 블록에 클럭 차단.


🔹 Q137. 벡터 테이블에서 Reset Handler의 위치는?

정답:

  • ARM Cortex-M 기준, 0x00000004 주소에 있음
    (0x00000000은 초기 스택 포인터)

해설:
부팅 시 CPU는 이 주소의 값을 읽고, 해당 주소로 PC를 설정하여 실행 시작.


🔹 Q138. 인터럽트가 중첩될 수 있으려면 필요한 조건은?

정답:

  • 인터럽트 서비스 루틴에서 중첩 허용 설정
    (__enable_irq() or PRIMASK/BASEPRI 설정)

해설:
NVIC를 지원하는 Cortex-M에서는 우선순위 기반 중첩 인터럽트가 가능.


🔹 Q139. PLL(Phase Locked Loop)의 역할은?

정답:

  • 낮은 주파수의 클럭 입력을 받아 고속 클럭으로 변환

해설:
SoC 내부에서 8MHz 외부 클럭을 72MHz, 168MHz 등으로 증폭.
변동 없는 안정적 출력 유지.


🔹 Q140. Bootloader의 역할은?

정답:

  • 시스템 시작 시 펌웨어를 플래시 메모리에서 RAM 또는 실행 공간으로 로딩

해설:
다단계 부트 시스템에서 Stage 1이 ROM에 있고, Stage 2가 Flash → RAM으로 펌웨어 로딩 후 실행함.
→ 펌웨어 업데이트, 보안 부트에도 관여.



0개의 댓글