2010-04-27 3 views
1

우리는 메모리 접근 횟수를 줄이기 위해 왜 데이터 정렬이 필요한지 (그리고 패딩과 같은 모든 노력을 했음) 이해합니다. 그러나 이것은 프로세서가 단지 4의 배수 주소를 가져올 수 있다고 가정합니다. 비트 아키텍처). 그리고 그 가정 때문에 우리는 메모리를 정렬해야합니다.효율적으로 액세스하려면 4의 메모리 정렬이 필요한 이유는 무엇입니까?

내 질문 :
왜 우리는 4의 배수 (효율성, 하드웨어 제한, 또 다른 하나)에 액세스 할 수 있습니까?

이렇게하면 어떤 이점이 있습니까? 사용 가능한 모든 주소에 액세스 할 수없는 이유는 무엇입니까?

답변

4

메모리는 메모리 버스에 연결된 하드웨어 (RAM)로 구성됩니다. 버스가 넓어 질수록 데이터를 가져 오는 데 필요한주기가 줄어 듭니다. 메모리가 1 바이트 너비라면, 하나의 32 비트 값을 읽으려면 4 사이클이 필요합니다. 시간이 지남에 따라 메모리 아키텍처가 진화하고 프로세서 종류 (임베디드, 저전력, 고성능 등) 및 캐시 설계에 따라 메모리가 상당히 넓어 질 수 있습니다 (예 : 256 비트).

데이터 경로에 배럴 시프터가있는 경우 매우 넓은 내부 버스 (RAM 또는 캐시 간)와 레지스터 (레지스터 폭의 두 배)가 있으면 정렬에 관계없이 한 사이클에 값을 가져올 수 있습니다. 배럴 이동 장치는 값 비싸기 때문에 모든 프로세서에 비싸지 않습니다. 경로에 하나도 없으면 값을 정렬하기 위해 여러 사이클이 필요할 것입니다.

+0

훨씬 더 명확하고 좋은 대답 +1 – flownt

+0

안녕하세요 doug, 답장을 보내주세요. 그러나 왜 나는 4의 배수 주소에서 데이터를 가져올 수 있는지 이해할 수 없습니다.이 작업의 장점은 무엇입니까? – utxeeeee

+0

주소가 4의 배수이면 데이터를 여러 실제 메모리 위치에서 이동하거나 병합 할 필요가 없습니다. 일부 프로세서에서는 시간이 오래 걸린다. 다른 프로세서에는 이동 및 병합을 수행 할 하드웨어가 없으므로 허용되지 않습니다. –