해결된 질문
작성
·
75
0
안녕하세요! MEM/WB 레지스터에 대해, data memory에서 나온 값과 ALU에서 나온 값의 타이밍에 대해 궁금한 점 있어서 질문 드립니다.
EX/MEM 레지스터에서 나온 ALU 연산 결과는 다음 사이클에 바로 MEM/WB 레지스터로 이동하는 것은 이해했습니다.
하지만, Data memory에서 값을 가져오는 경우, EX/MEM에서 Address를 받고 다음 사이클에서 값이 나오고, 그 다음 사이클에 해당 값이 MEM/WB로 이동하여 두 사이클이 걸린다고 생각했습니다.
이러면 data load를 하는 경우는 5 cycle이 아닌 6 cycle이 소모된다고 생각했는데, 이렇게 생각하는 것이 맞는지 궁금합니다. 맞다면, Instruction 별로 소모되는 사이클이 차이가 생길 수도 있는지 궁금합니다.
질문 읽어주셔서 감사합니다!
답변 1
0
안녕하세요! 답변 남겨드립니다!
ALU 연산 결과와 Data Memory 접근 타이밍
1. ALU 연산 결과: EX/MEM 레지스터에서 ALU의 결과는 다음 사이클에 MEM/WB 레지스터로 이동합니다. 이 부분은 맞습니다.
2. Data Memory 접근: Data Memory에서 값을 가져오는 경우, EX/MEM 레지스터에서 주소를 받고, 다음 사이클에 Data Memory에서 값을 읽어옵니다. 이 값은 그 다음 사이클에 MEM/WB 레지스터로 이동합니다. 따라서, Data Memory에서 값을 읽는 경우는 다음과 같은 사이클이 소모됩니다:
- 1 사이클: EX/MEM에서 주소를 Data Memory에 전달
- 2 사이클: Data Memory에서 값이 출력
- 3 사이클: 출력된 값이 MEM/WB 레지스터로 이동
이 경우, Data Load를 수행할 때는 총 3 사이클이 소모됩니다. 따라서, ALU 연산 결과와 Data Memory 접근을 합치면, Data Load 명령은 총 5 사이클이 소모됩니다 (ALU 연산 1 사이클 + Data Memory 접근 3 사이클 + MEM/WB로의 이동 1 사이클).
사이클 소모의 차이
- Instruction 별 사이클 소모 차이: 맞습니다. 각 명령어의 특성에 따라 소모되는 사이클 수가 다를 수 있습니다. 예를 들어, ALU 연산은 5 사이클이 소모되지만, Data Load는 5 사이클이 소모되며, Store 명령은 Data Memory에 값을 쓰는 과정이 포함되므로 추가적인 사이클이 필요할 수 있습니다.
결론적으로, Data Load 명령은 5 사이클이 소모되며, 각 명령어에 따라 소모되는 사이클 수는 다를 수 있습니다.
답변 감사합니다!