컴잘알님들이 말해준 내용이랑 내가 알고 있는 지식이랑 버무려서 결론을 내려봤음
내 의식의 흐름이 맞는지 확인부탁함니다
-------------------------------------
사람들이 보통 32비트 컴퓨터의 특징을 말하라고 하면 메모리를 4GB까지만 인식한다고 그러잖아.
그래서 나는 당연히 주소버스의 크기가 32비트라서 그런줄로만 알고 있었어.
그런데 오직 데이터 버스크기가 32비트이기 때문만이지 않을까? 그 이유는...
한 워드에 메모리주소를 저장하려고 할때 (C언어 포인터처럼 주소를 저장하려고 할때)
워드 크기가 32비트면 총 2^32(4G)개의 메모리 주소를 가리킬 수 있잖음
데이터버스의 크기는 워드의 크기와 동일하게 반드시 32비트여야만 할것이고,
워드에서 가리킬 수 있는 4GB를 온전히 다 사용하는 경우에만 주소버스 크기가 32비트여야하는 것이지.
피치못할 사정으로 메모리 공간을 2GB만 써야하면 주소버스 크기를 31비트로만 설계해도 되는 것이다~
결국
워드에다가 메모리 주소를 "데이터로 취급해서(데이터버스를 이용)" CPU에게 넘겨준 뒤
CPU가 그 데이터를 이번에는 "주소버스를 이용해서" 주소 범위로 찾아가게 만드는 최대 범위가 4GB 라는것이다.
결론:
1. 32비트 컴퓨터냐 64비트 컴퓨터냐는 데이터버스에 의해 결정되고 엄밀하게는 레지스터/메모리 워드 크기에 따라 결정됨,
2. C언어의 포인터처럼, 워드에 주소를 보관하려다 보니 최대로 보관할 수 있는 사이즈가 한정되어있다는 사실에서 시작된 것.
3. 주소버스크기랑은 사실 별 상관없었음.
4. 워드에 저장가능한 비트수가 32비트니깐, 그것을 이용해 메모리 위치 전부 가리키려면 당연히 주소버스도 32비트여야하니깐 그냥 그렇게 된 것뿐...
----------
위와 같이 결론내려도 ㄱㅊ???
https://www.microchip.com/en-us/product/atmega128#
8비트 mcu인 atmega128인데 스펙 확인해봐. 몇 bit 프로세서라는건 단지 레지스터 크기만 따라가
ISA는 명령어 구조이고, 세부 스펙은 그 ISA로 구성된 실제 칩 따라가. 64비트 프로세서(amd64)를 써도 os를 32bit로 깔던가 32bit 바이너리 돌리면 램을 4GB 밖에 못 쓴다는건 기존 32bit(x86) 기준으로 32비트로는 4GB 밖에 주소 표시가 안 되서 그런거일뿐, 32비트에선 4GB 밖에 표현 못 해서 그런거 아니야. 주소 처리
방법 꼬아서 복잡하게 사용하면 제한된 비트 범위에서 더 넓은 범위 쓸 수 있어.(mcu에서 볼 수 있듯) 자세한건 컴퓨터구조론이랑 마이크로프로세서 과목 들으면 됨
그리고 물론 x86 isa를 이용해서 뭔 칩을 만드는데 주소 영역 2GB 까지만 필요하면 그 칩에선 메모리를 31비트로만 표현해도 되는건 맞아
설명해주신거 대강 흐름은 이해가 가는데, 컴퓨터시스템구조도 아직 안들은 2학년 학부생 따리 수준에서는 일단 제가 설명한것처럼 이해해도 오류가 없을까요??
32비트로 이케이케 잘 하면 4GB 이상의 주소를 표현할 수 있다는 숨겨진 사실 빼고는 대강 맞게 이해하고 있는거같은데
엉. 근데 그냥 32비트 64비트 이렇게 생각하면 안 되고, x86 x64 이렇게 생각하기만 하면 돼. 그냥 32비트라고 하는건 특정한 isa를 가르키는건 아니거든..
https://en.wikipedia.org/wiki/Physical_Address_Extension
- dc App