2012-11-04 3 views
4

내 컴퓨터 구조 책은 레지스터 파일에 쓰기 이후MIPS 32 비트 아키텍처 : 동일한 클럭 사이클에서 레지스터 파일의 레지스터를 읽고 쓰는 방법은 무엇입니까?

는 "에지 트리거 함을 설명하고, 우리의 디자인은 법적 읽고 클럭 사이클 내에서 동일한 레지스터를 쓸 수 있습니다 다음 읽기는 값이 기록 된 얻을 것이다 이전 클럭 사이클에서 값을 쓰면 다음 클럭 사이클에서 읽을 수 있습니다. "

이것은 약간의 의미가 있으며, 나는 레지스터 파일을 어떻게 처리하는지 약간 이해합니다. 그러나, 나는 각 사건이 언제 일어나는 지 이해하지 못한다. 같은 주기로 32 개의 레지스터 파일 중 하나에서 읽고 그것을 쓰고 있다고 가정 해보십시오. 등록기는 언제부터 읽을 수 있습니까? 그것이 언제 쓰여질 것인가? 이벤트가 클럭 에지에 의해 트리거되는 방식을 완전히 이해하지 못하므로 설명 된 내용도 도움이됩니다. 고맙습니다!

답변

2

레지스터 값을 읽는 것은 비동기식이지만 아키텍처에서는 클래스에서 작업 할 때 레지스터가 동기식으로 작성됩니다 (즉, 쓰기가 에지 트리거 됨).

즉, 레지스터의 현재 값을 읽고, 일부 연산을 적용하고 (예 : 즉치를 더할 수 있음) 다음 올라가는 클럭 에지에서 결과를 쓸 수 있습니다.

$1의 현재 값을 사용하고 123을 더한 다음 결과를 $1에 다시 저장한다고 가정합니다. addiu $1, $1, 123

제어 장치는 클록주기의 시작에서 레지스터 파일에 ALU에 들어오는 데이터 버스 중 하나에 $ 1의 내용을 넣도록 지시합니다. 제어 유닛은 또한 ALU에 또한 들어가는 다른 데이터 버스에 즉시 (immediate) 123을 넣도록 지시 할 것이다. ALU 내부에 구현 된 단순한 조합 회로 인 덧셈은 덧셈을 계산하고 저장을 위해 레지스터 파일을 연결하는 데이터 버스에 결과를 넣습니다. 이 모든 작업은 시계의 상승 에지가 발생하기 전에 완료되며 추가 결과가 다음 올림 가장자리까지 표시됩니다. 어느 시점에서 상승 에지가 발생하고 추가 결과가 레지스터 $1에 다시 기록됩니다.

0

레지스터 파일은 플립 플롭으로 만들어집니다. 각 플립 플롭에는 저장소, 입력, 출력 및 트리거가 있습니다. 출력은 항상 저장된 값을 표시하므로 항상 읽을 수 있습니다. 트리거의 상승 에지에서 입력 값이 저장소로 이동합니다.