ISA와 어셈블리
RISC-V에서 4바이트를 읽는 lw 명령어의 주소가 4의 배수가 아닐 때(경계가 맞지 않을 때) 일어날 수 있는 일로 올바른 것은?
- A명령어가 자동으로 다음 4의 배수 주소로 바꿔 읽혀 항상 같은 속도로 올바르게 읽을 수 있다
- BCPU 구현에 따라 예외가 발생하거나, 하드웨어나 소프트웨어로 처리되어 매우 느려질 수 있다
- C주소의 하위 2비트는 무시되고 오류는 발생하지 않는다
정답과 해설 보기
정답: B. CPU 구현에 따라 예외가 발생하거나, 하드웨어나 소프트웨어로 처리되어 매우 느려질 수 있다
4바이트 데이터를 4의 배수 주소에 두면 한 번의 메모리 접근으로 읽을 수 있습니다. 경계를 넘으면 두 번의 접근이 필요하므로, RISC-V는 경계가 어긋난 접근을 회로로 처리할지, 예외를 일으켜 소프트웨어에 맡길지를 구현에 위임하고 있습니다. 후자라면 자릿수가 다를 만큼 느려집니다. 컴파일러가 구조체 멤버 사이에 패딩을 넣어 정렬하는 것은 이 때문입니다.