2013-05-18 6 views
0

많은 성공을 거두지 못한 채로 메모리 정렬에 대해 배우려고합니다. IBM의 this 문서를 사용하고 있습니다. 그러나2 바이트 메모리 액세스 세분성

주소 1에서 읽을 때 주소가 고르게 해당하지 않기 때문에 발생하는주의 사항 :

사람이 발췌는 더블 바이트 메모리 액세스 세분화 섹션에서 무엇을 의미하는지 설명해 주시겠습니까 프로세서의 메모리 액세스 경계, 프로세서 추가 작업이 필요합니다. 이러한 주소를 정렬되지 않은 주소라고합니다. 주소 1은 정렬되지 않기 때문에 2 바이트 단위의 프로세서는 추가 메모리 액세스를 수행해야하므로 작업 속도가 느려집니다.

다른 메모리가 순서대로 액세스되는 이유는 무엇입니까? 메모리 액세스 경계와 그것이 심지어 메모리 액세스 경계에 있다는 것은 무엇을 의미합니까?

상위 수준 프로그래밍 (Objective-C 및 C++)에서만 델타가 있으므로 CPU에 대한 지식이 매우 제한되어 있습니다. 어떤 도움이라도 대단히 감사합니다!

감사합니다.

+0

기사의 앞부분을 읽었습니까? 프로세서가 메모리에 액세스하는 방법을 보여주는 다이어그램이있는 "메모리 액세스 세분성" – Barmar

+0

네,하지만 다른 전화가 걸리는 이유를 모르겠습니다. – foobar5512

답변

2

이 예에서는 더블 바이트 액세스 세분성이있는 CPU에서 4 바이트 연속 블록을 읽으 려하면 어떻게되는지 설명합니다. 이 유형의 CPU에서 메모리는 항상 짝수 바이트로 시작하는 바이트 쌍으로 액세스됩니다.

바이트 0으로 시작하는 블록을 읽으 려하면 바이트 0-1 및 바이트 2-3의 두 가지 읽기를 수행해야합니다.

바이트 1로 시작하는 블록을 읽으 려하면 바이트 0-1 (바이트 1을 얻기 위해), 바이트 2-3 및 바이트 4-5 (바이트 4를 얻기 위해) .

메모리 액세스 세분성는 동시에 액세스되는 바이트 수이고, 바이트의 각 그룹이 시작되는 곳에 메모리 액세스 경계이다. 바이트 그룹은 세분화 된 짝수 배수에서 항상 처리됩니다. 짝수 주소에서 시작하는 2 바이트 세분성의 경우 4 배수 단위 인 경우 4의 배수가됩니다.

비유로, 각 층마다 4 개의 아파트가있는 아파트 건물. 유닛 0-3은 바닥 0에, 유닛 4-7은 바닥 1 등에 있습니다. 유닛 0-3의 문 아래에서 플라이어를 미끄러 뜨리려면 한 층으로 가야합니다. 그러나 1 층에서 4 층까지 전단지를 넘기려면 1-3 층은 0, 4 층은 바닥 2로 가야합니다.

+0

그냥 1에서 시작할 수없는 이유가 있습니까? 예를 들어, 1-2, 2-3. 또한 4 바이트가 아니겠습니까? 감사! – foobar5512

+0

그것은 정렬 된 메모리 액세스가 작동하지 않기 때문입니다. 하드웨어는 특정 청크로 메모리에 액세스하도록 설계되었습니다. – Barmar

+0

오, 오케이 ... 도와 주셔서 감사합니다! – foobar5512