2012-02-11 2 views
1

메모리에서 하나의 비트 (RAM, 하드 디스크)를 읽으려고합니다. 내 이해, 하나 미만 바이트를 읽을 수 없습니다했다. 그러나 나는 그것이 조립으로 끝날 수 있다고 말하는 누군가를 읽었다. 대역폭 사용량을 최대한 낮추지 않아 검색된 데이터가 순차적이지 않으므로 바이트를 읽고 8 비트로 변환 할 수 없습니다.메모리에서 조금 읽는 중

+0

"데이터가 순차적이지 않습니까?" –

+0

나는 메모리 곳곳의 다른 곳에서 비트를 고르고 비트 열을 읽을 수 없다. – RobotRock

+0

따라서 * 액세스 *는 순차적이지 않습니다. –

답변

4

CPU가 RAM에서 캐시 라인의 크기 (최신 Intel 칩의 64 바이트)보다 작은 용량을 읽지는 않을 것이라고 생각합니다. 디스크의 최소값은 일반적으로 4kB입니다.

데이터 버스가 그보다 훨씬 넓기 때문에 한 번에 한 비트 씩 읽는 것이 불가능하거나 필요하지 않습니다.

+0

좋은 답변 길 :-) – cnicutar

1

내가 아는 모든 PC 또는 하드 디스크에서 1 바이트 미만을 읽을 수 없습니다. 가능한 경우에도 매우 비효율적입니다.

일부 컴퓨터는 포트에 1 바이트 미만의 읽기/쓰기가 가능한 메모리 매핑 된 포트를 수행하지만 적어도 1 바이트로 가져올 때 여전히 나타나게됩니다. 메모리는 비트 폭 어디에 1 비트에 의해,

예전
char someByte = 0x3D; // In binary, 111101 
bool flag = someByte & 1; // Get the first bit, 1 
    flag = someByte & 2; // Get the second bit, 0 
// And so on. The number after the & operator is a power of 2 if you want to isolate one bit. 
// You can also pick off several bits like so: 
int value = someByte & 3; // Assume the lower 2 bits are interesting for some reason 
0

는 386/486 일 말 1 메가를하지만, 다음 비트 연산자

사용은 같이 특정 비트를 선택합니다 버스에있는 각 비트 레인마다 하나씩 8 개 또는 여러 개의 칩을 가지며 버스의 너비 만 읽을 수 있습니다. 오늘의 추억은 1 바이트이며, 32 또는 64 또는 그 배수 단위로만 읽을 수 있습니다. 바이트를 읽을 때도 대부분의 디자인이 전체 바이트를 채 웁니다. 불필요한 복잡성/비용을 추가하여 버스를 메모리로 완전히 분리합니다. 바이트 읽기는 시스템의 대부분을 32 또는 64 비트 읽기로 간주합니다. 프로세서의 가장자리에 접근하기 때문에 (때로는 물리적 핀이 칩 내부 코어의 가장자리)는 개별 바이트 레인이 분리되고 다른 비트가 삭제되는 경우입니다. 캐시를 켜면 메모리에서 최소로 나눌 수있는 읽기 크기가 변경되고 버스트 또는 블록 읽기가 표시됩니다.

8 비트 너비의 메모리 시스템을 설계하고 한 번에 8 비트 씩 읽을 수는 있지만 왜 그렇습니까? 당신이 아마 couldnt하는 8 비트 프로세서가 아니라면 2 기가 메모리에 의해 8 비트를 이용하십시오. 드램은 어쨌든 133mhz와 같이 느립니다. (심지어 1600mhz 메모리는 느린 부품에서 읽을 때만 짧은 버스트이며 메모리는 10 년 이상 빨리되지 않습니다.)

하드 디스크는 비슷하지만 종류는 다르지만 섹터가 가장 작은 단위로 생각합니다.이 단위를 읽거나 쓸 필요가 있습니다. 그래서 당신이 읽을 때 당신은 프로세서에서 메모리 사이클을 가지며 메모리에가는 것은 다르지 않습니다. 그리고 컨트롤러를 읽거나 결과를 얻기 전에 섹터를 디스크에서 버퍼로 읽습니다. 캐시 라인을 읽은 다음 디스크 컨트롤러의 버퍼에 메모리 사이클을 보내면 버스 너비가 읽히고 프로세서가이를 나눕니다. 그렇지 않으면 버스가 바이트 레인을 격리하기 위해 복잡성을 추가하면 바이트를 분리하지만 아무도 비트 레인을 분리하지 않습니다. (아무도 없다는 말을하고 누군가 예외로 돌아올 것입니다 ...)

이 중 대부분은 잘 설명되어 있으며 찾기가 어렵지 않습니다. 팔 플랫폼은 자유롭게 다운로드 할 수있는 amba 및/또는 axi 사양을 찾습니다. 브리지의 수, pcie 컨트롤러, 디스크 컨트롤러 문서는 모두 PC 및 다른 플랫폼에서 사용할 수 있습니다. 주소 및 데이터 버스 또는 하나의 이도 및 하나의 데이터 버스 및 액세스 유형을 나타내는 일부 제어 신호로 여전히 귀결됩니다. 일부 버스는 일반적으로 읽기가 아닌 쓰기를위한 바이트 레인이 가능합니다. 현대의 64 비트 시스템에서 드럼에 한 바이트 만 쓰고 싶으면 모든 사람들에게 내가 쓰고 싶은 것을 거의 모든 방법을 통해 말해야합니다.한 번에 64 비트에 액세스해야하는 메모리 모듈에 바이트를 쓰려면 최소한 64 비트 읽기가 캐시 또는 메모리 컨트롤러 중 하나의 임시 위치에 발생하면 기록 할 바이트가 64 비트 워드이면 64 비트 양이 결국 메모리 모듈 자체에 다시 기록됩니다. 주소 비트와 몇 가지 제어 신호의 조합을 사용하거나 8 바이트 레인 인 에이블을 넣을 수 있으며 하위 주소 비트는 무시할 수 있습니다. 하드 디스크, 동일한 거래, 섹터를 읽고, 1 바이트를 수정 한 다음, 결국 전체 섹터를 작성해야합니다. 플래시와 eeprom을 사용하면 프로그래머 관점에서 0 만 쓸 수 있고, 프로그래머 관점에서 볼 때 실제로는 0 인 논리가 있고 반전이 있습니다. 쓰기는 한 섹터 여야합니다. 시간은 64 바이트, 128 바이트, 256 바이트 일 수 있습니다.