1

저는 컴퓨터 아키텍처에 대해 배우고 있으며 프로그램을 실행할 때 컴퓨터가 어떻게 작동하는지 알고 있습니다. 저를 혼란스럽게 만드는 것은 명령 길이가 버스 너비보다 길고 명령 길이가 버스 너비의 두 배가 아닌 경우입니다. 우리가 12 비트 명령어와 8 비트 버스를 가지고 있다고 가정 해 봅시다. 컴퓨터는 무엇을합니까?버스가 전체 명령어 길이를 사용할 수 없으면 어떻게해야합니까?

  1. 은 (
  2. 는 8 비트에 의해 명령의 8 비트
  3. 저장 명령 레지스터의 8 비트
  4. 증가의 PC를 가져 오기
  5. 는 PC의 주소로 이동 PC를 분석 :이 있습니까? ??)
  6. 는 12 비트 길이이다 (명령 레지스터를 채우기 나머지 4 비트 페치?)

잘 보시다시피 저는 혼란 스럽습니다. 나는 이것이 그렇게 좋지 않다고 생각하지만, 어떻게 작동하는지, 모든 단계마다 PC가 무엇인지 자세히 알아야합니다.

도움에 감사드립니다. 미리 감사드립니다.

+0

* 다소 달라 * 관련 : [가변 길이 명령어로 컴퓨터가 가져 오는 명령어의 길이를 어떻게 알 수 있습니까?] (http://stackoverflow.com/q/24269368/2467198) –

답변

1

일반적으로 읽거나 쓸 수있는 메모리의 양은 1 바이트, 즉 8 비트입니다. 따라서 CPU가 12 비트 만 필요로하는 경우 두 개의 8 비트 바이트를 읽어야합니다. 16 비트에서 필요한 12 비트는 하드웨어에 의해 추출되고 나머지 4 비트는 사용되지 않습니다.
이것은 메모리 효율이 좋지 않기 때문에, 보통 CPU의 명령 길이는 8 비트의 배수가됩니다. 명령에 피연산자를 직접 패킹합니다.
예제의 7 단계는 8 단계를 가져 오는 6 단계 만 제외하고 4 단계 만 사용합니다.

+0

고마워! 그래서 실제로 PC는 매번 8 비트 씩 증가합니까? 따라서 1/2 명령 PC = [0x01] 이후와 2 명령 후 PC = [0x04]? 0x00에서 시작한다고 가정합니다. 그리고 명령어 레지스터는 CPU가 16 비트를 가져 오더라도 항상 12 비트입니까? – Myone

+0

사용 된 CPU/마이크로 컨트롤러에 따라 다릅니다. 제 1 CPU, 인텔 8080, 예를 들면. 8 비트 및 16 비트 명령어 12 비트 명령어를 사용하는 CPU가 있는지 나는 모른다. 그렇다면 메모리에서 3 개의 8 비트 바이트를 읽고 두 개의 명령어로 해석 할 수 있습니다. –

관련 문제