48비트를 건너뛰고 32비트에서 64비트로?

48비트를 건너뛰고 32비트에서 64비트로?

컴퓨터 아키텍처가 16비트에서 32비트, 64비트로 업그레이드되었습니다. 48비트를 건너뛰는 논리는 무엇입니까? 다른 지수가 아닌 64비트로 업그레이드하는 데 어떤 추론이 사용되었습니까?

다음 표는 2^32가 2^16보다 65536배 더 크다는 것을 보여줍니다. 따라서 2^32보다 65536배 더 큰 2^48을 사용하는 것이 논리적입니다. 2^64를 사용하는 것은 비교해 보면 엄청난 점프처럼 보입니다. (amd64가 출시된 지 10년 후, 데스크톱 컴퓨터는 두 자리 GB RAM을 사용하는 반면 서버는 세 자리 GB RAM을 사용합니다.)

    2^16                        65.536
    2^32                 4.294.967.296  2^16 X 65536
    2^48           281.474.976.710.656  2^32 X 65536
    2^64    18.446.744.073.709.600.000  2^32 X 4294967296

아래 편집

나는온라인 십진수-이진수 변환기그리고 나는 이러한 결과를 얻습니다. 분명히 2^48은 48개의 이진수 1로 최대화됩니다.

    1111111111111111                      65535  2^16 - 1 (16 ones)
    10000000000000000                     65536  2^16

    11111111111111111111111111111111                    4294967295  2^32 - 1 (32 ones)
    100000000000000000000000000000000                   4294967296  2^32

    111111111111111111111111111111111111111111111111            281474976710655 2^48 - 1 (48 ones)
    1000000000000000000000000000000000000000000000000           281474976710656 2^48

    1111111111111111111111111111111111111111111111111111111111111111    18446744073709551615    2^64 - 1 (64 ones)
    10000000000000000000000000000000000000000000000000000000000000000   18446744073709551616    2^64

답변1

64비트는 다음 논리적 단계입니다.

그 이유는 주로 비트 수를 두 배(또는 절반)로 늘리는 단계가 기본적으로 다른 크기로 작동하는 시스템의 소프트웨어 및 하드웨어에서 처리하기 쉽기 때문입니다. 64비트 CPU가 사용 가능해지기 전에 이미 내부적으로 64비트 값을 일상적으로 처리하는 32비트 시스템입니다.

예: 32비트 시스템은 2개의 32비트 변수/레지스터에 저장하여 64비트 숫자를 쉽게 처리할 수 있습니다.
48비트 숫자를 다루는 것은 어색합니다. 32비트 변수와 16비트 변수를 함께 사용하거나 32비트 변수의 일부만 사용하거나 3개의 16비트 변수를 사용해야 합니다. 48비트에 대한 이러한 솔루션 중 어느 것도 최적이 아닙니다.

일반적으로 X 비트에서 작동하는 모든 시스템은 (N * X) 및 (X / N) 크기를 쉽게 처리할 수 있습니다. 여기서 N은 2의 거듭제곱입니다. 따라서 논리는 1, 2, 4, 8, 16, 32입니다. , 64, 128, 256, 512 등.
다른 모든 크기는 하드웨어 및/또는 소프트웨어에서 더 복잡한 처리가 필요하므로 차선책입니다.

따라서 하드웨어 아키텍처에서 더 큰 비트 크기를 원하는 경우 새로운 비트 크기를 지원하기 위해 운영 체제, 소프트웨어 및 컴파일러에 대한 사소한 업데이트만 필요하므로 동일한 진행을 사용하는 것이 합리적입니다.

(이 모든 것은 CPU 레지스터의 기본 비트 크기에 적용됩니다. RAM 칩을 주소 지정하는 "주소 라인 수"를 취하면 아키텍처에 자연스러운 숫자보다 실제로 더 작은 숫자가 표시될 수 있습니다.
내부적으로 이러한 CPU는 더 많은 것을 사용합니다. 그러나 모든 비트가 실제 주소 라인에 연결되는 것은 아닙니다.
예: 8088 및 8086 CPU의 경우 20개 라인, 80286의 경우 20개 라인, Pentium II의 경우 36개 라인)

답변2

기본적으로 일어난 일은 바이트 주소 지정입니다. 그 전에는 프로세서가 2단어 길이의 전력을 갖도록 해야 할 강력한 이유가 없었습니다(일반적으로 회로가 이러한 배수로 제공되었기 때문에 2 또는 4의 배수에 대한 물리적 이유가 있었지만).

바이트 주소 지정 이전에는 메모리 단어가 프로세서 단어와 동일한 너비였으며 메모리는 (주로) 단어로 주소가 지정되었습니다. 그러나 바이트 주소 지정을 사용하면 "워드" 길이를 바이트 크기의 2제곱으로 설정하여 "워드" 경계가 좋은 이진 수열에 속하게 되는 이점이 있습니다(사람과 컴퓨터 하드웨어 모두 처리하기에 좋음).

(바이트 주소 지정이 "기본"이 된 이유에 대해 지금 당장은 설득력 있는 주장을 제시할 수 없습니다.)

아마도 표준 문자가 8비트가 아닌 10비트라면 우리는 16, 32, 64비트가 아닌 20, 40, 80비트 프로세서를 갖게 될 것입니다.

관련 정보