ONE QUESTION AT A TIME.

천천히 생각하고, 분명하게.

TODAY’S QUESTION326 / 1500

두 명령어가 같은 사이클에 하나의 실행 자원을 요구합니다. 구조적 해저드는 데이터 해저드와 어떻게 다르고 어떤 설계로 줄이나요?

잠깐, 답변을 보기 전에
먼저 내 말로 설명해 볼까요?

답변과 점검 포인트 펼치기답변 접기
01

구두 답변

정의를 외우기보다, 원리와 조건을 연결해 설명해 보세요.

구조적 해저드는 같은 사이클에 하나뿐인 하드웨어 자원을 동시에 요구해서 생기고, 데이터 해저드는 값이나 순서가 아직 준비되지 않아 생깁니다. 두 명령어의 피연산자가 서로 독립이어도 단일 포트 메모리를 공유하면 충돌할 수 있습니다. 예를 들어 5단계 모델에서 사이클 4에 이전 명령어의 MEM과 뒤 명령어의 IF가 동시에 메모리 포트를 요구한다면, 한 요청을 사이클 5로 미루어 bubble을 넣어야 합니다. 이것은 add 결과를 다음 sub가 기다리는 RAW와 원인이 다릅니다.

해결책은 자원 복제, 포트 분리, 사용 시점 조정, stall입니다. instruction cache와 data cache를 분리하면 IF와 MEM이 각 포트를 사용할 수 있습니다. 단일 메모리 포트를 유지하면 arbitration이 한 요청을 선택하고 다른 명령어의 valid를 유지한 채 다음 cycle로 보냅니다. 실행 유닛을 두 개로 늘리는 방식도 있지만, 두 명령어가 동시에 결과를 만들면 register file의 write port나 공용 writeback bus가 다시 한계가 됩니다. 그러므로 “ALU를 늘리면 해결된다”는 답은 자원 그래프의 다음 병목을 놓칩니다.

판단할 때는 cycle별 점유표를 먼저 작성합니다. 예를 들어 cycle 4에 IF=I3, MEM=I1, EX=I2라면 단일 메모리 포트 모델에서는 IF 또는 MEM 중 하나를 표시하고, 분리 포트 모델에서는 둘을 동시에 허용합니다. 분리 포트의 이득은 해당 충돌의 bubble을 줄이는 것이지만 면적, 배선, 전력, 검증 경우의 수를 늘립니다. register-file read port가 두 개 필요한 경우와 세 개 필요한 경우도 같은 방식으로 세어야 합니다. 구조적 stall과 RAW stall을 따로 계수해야 최적화가 실제 병목을 겨냥했는지 확인할 수 있습니다. 정확한 포트 수와 arbitration은 대상 CPU 문서 없이는 일반화하지 않습니다.

02

득점 포인트

이해가 드러나는 지점을 확인해 보세요.

  • IF/MEM 단일 포트 충돌을 register-file과 writeback bus 병목까지 확장해 자원표로 설명합니다.
  • 구조적 자원 충돌을 RAW 의존성이나 OS 스케줄링 경쟁과 같은 층위로 부릅니다.
03

감점 포인트

놓치기 쉬운 조건과 오해를 짚어 보세요.

  • 질문에 없는 일반론으로 결론을 흐리거나 모든 CPU·workload에 같은 규칙을 적용합니다.
  • 중간 상태, 실패 조건, 성능·보안 비용을 생략해 결과만 단정합니다.
04

더 파고들 거리

하나 더 질문하며 이해의 범위를 넓혀 보세요.

  • 분리 cache와 포트 복제 전후의 cycle별 점유율과 면적 trade-off를 비교해 보세요.
  • 입력 순서와 자원 조건을 바꿨을 때 어느 결론이 유지되고 어느 비용이 달라지는지 검증해 보세요.

득점·감점 포인트는 학습용 자기 점검 기준이며, 특정 회사의 실제 채점표가 아닙니다.

← 전체 질문 보기