2017-12-13 17 views
0

는 분기 명령의 오프셋 (offset) 계산 : 분기 명령 오프셋을 계산하는 방법?

내 교수

는 답변을 우리에게 학습 가이드를 보내

Picture with the answers

얘들 아. 그는 실제로 그가 대답을 얻는 방법을 실제로 넘어서지 못했습니다. 나는 온라인으로 수색했으나 나는 운이 없으므로이 시점에서 나는 약간 절망적이다.

작성자가 어떻게 답변에 도달했는지 알고 있습니까?

+0

집에서 할 일은 무엇입니까? –

+1

아니야. 내일 마지막 시험을 치러 공부하고 있습니다. 내 질문에 대한 대답을 알아 냈어 : instr 1 지사에서 5 지침이 있으므로 -5 걸릴. 2를 보완하여 FFFB를 얻으십시오. 질문의 다른 부분에 대해서는 아무도 모른다면 설명을 정말 고맙겠습니다. –

답변

0

0xfffb은 -5의 16 비트 부호있는 2의 보수 표현입니다. 따라서이 머신에서 오프셋은 바이트 주소를 얻기 위해 (아마도 고정 된) 명령어 길이에 의해 스케일됩니다. (바이트 크기의 명령어를 가질 수 있지만 오프셋 자체는 16 비트이기 때문에 불가능합니다.) 아키텍처는 분기가 실행될 때까지 PC가 이미 증가되어 0 오프셋이 NOP이고, 분기 자체에 1 개의 오프셋 분기, 분기 앞의 명령어에 -2 분기 등이 포함됩니다. loop:에 도달 할 때까지 거꾸로 계산하십시오. (질문에 대한 정보가 더 많거나 알려진 컨텍스트가있어 답변을 작성하는 데 사용한 아키텍처의 세부 정보를 제공하거나 상당히 잘못 작성된 질문입니다.)

캐시 질문의 경우 대부분은 캐시 아키텍처 (또는 "캐시 지오메트리", "캐시 모양"등)를 설명하는 데 사용되는 이름을 알아야합니다. "2-way set associative"는 주어진 주소를 배치 할 수있는 캐시에 두 개의 위치가 있음을 의미합니다. 128 쌍이 있으며 각 쌍은 양방향 연관이고 각 블록은 32 바이트이기 때문에 두 개의 블록을 저장할 수 있습니다. (일반적으로 32 바이트 구조를 "캐시 라인"이라고 부릅니다. 여기에 "블록"이라는 단어가 저장되어있는 데이터와 "라인"에도 유효한 비트와 태그 등이 포함되어 있음을 알 수 있습니다.) 그런 다음 캐시 지오메트리에서 바깥쪽으로가는 최하위 비트부터 시작하여 주소를 세분화합니다.

명령어 캐시 인 것처럼 보이므로 아래쪽 두 비트가 0이고 32 비트 항목으로 캐시를 구성 할 것을 주장합니다. 블록은 32 바이트 또는 5 비트입니다. 2는 아마도 "0"이어야하는 "바이트 오프셋"이며, "블록 오프셋"(블록 내에서 실제로 오프셋)이라고하는 5 비트 부분을 완성하기 위해 3 비트가됩니다. (5 개의 하위 비트의이 하위 구획은 실제로 아무것도 바뀌지 않습니다.) 집합의 128 개 항목은 7 비트 "인덱스"를 제공합니다. 주소의 나머지 부분 인 20 비트는 블록에 태그를 지정하여 검색된 주소를 보유하고 있는지 확인해야합니다. (즉, 캐시 히트 또는 미스를 결정하는 것입니다.) 실제로 블록에 데이터가 있는지 여부를 말하면 하나 더 필요합니다.

그러면 데이터에 32 바이트 또는 256 비트를 추가하고 태그 20 비트와 유효 비트 1 개를 추가하고 128 세트와 2 가지 방법으로 곱합니다.

+0

감사합니다. 그건 불행히도 우리가받은 전부입니다. 그 문제의 다른 부분에 대한 답을 알고 있습니까? –

+0

캐시 부분에 나누기를 추가했습니다. (이유에 대해 투표를하지 않는 이유는 모르겠지만 ...) –

+0

감사합니다. 나는 파트 b가 어떻게 채워지는지에 관해서는 여전히 조금 잃어버린다. –