32bit 와 64bit architecture 에 대한 소소한 궁금증.
안녕하세요~ 매번 여러 개발자 분들 답변에 잘 배워갑니다.
ARMv7 에서 ARMv8 으로 제품군들이 넘어가는 현재 시점에서.. 그냥 아키텍쳐에 대한 소소한 궁금증이 생겨 질문드려봅니다. 가볍게 봐주세요~
제 생각에 우선 banked register가 없어지고 동시에 가용가능한 general purpose register가 늘었느니 아키텍쳐 파이프 라이닝을 어떻게 늘렸느니 이런 관점은 둘째치고 단순히 32bit -> 64bit로 bus bandwidth, register bandwidth가 늘었을때의 장점이 통상 우리가 생각하기에 idle하게 성능 증가가 된다에 대한 의문인데요.
일반 사람들이 보통 "와 니 컴퓨터 64비트 컴퓨터네~ 내꺼 32비트 컴퓨터인데 니께 내꺼보다 2배는 빠르겠다" 이런소리도 하곤 하죠.. 단순한 수치상 비교에 따른 생각입니다만, 어쨌든 저런식으로 사고하시는 분들도 많죠.
근데 정말 성능증가의 포인트가 어느부분에 있느냐가 의문이 듭니다.
첫째로, register bandwidth가 2배로 증가되었다. 맞죠.. 32비트 레지스터에서 64비트 레지스터로 늘어났으니까요. 근데 이게 무슨 의미가 있는지는 사실 잘 모르겠습니다.
우선 ARMv8의 instruction은 32bit로 fixed 되어있고, 레지스터가 64비트가 되었다 한들 어짜피 병렬적으로 2개 instruction을 동시에 fetch하고 동시에 decode하고 동시에 execution하지 않는 이상 ARMv7과 인스트럭션 실행과정에서 전혀 차이날께 없지 않나요?
(동시에 execution 한다는 것은 어짜피 core 갯수에 종속적이기 때문에 논외일 꺼구요)
둘째로, data bus / register bandwidth가 2배로 증가되었다.. 처리할 수 있는 데이터 크기가 2배가 되었다. 이것도 맞죠.. 근데 이것도 무슨 의미가 있는지는 사실 잘 모르겠습니다.
32bit에서 64bit로 변경되면서 동시에 처리 가능한 instruction 수가 늘어난 것은 아닙니다.(이건 core 갯수에 종속적이죠) 어짜피 32bit에서 동시에 처리되던 것 만큼 64bit에서도 명령어가 처리되고, 1개의 명령어가 처리되는 과정에서 살펴봤을때 operand register가 가질 수 있는 데이터 크기가 64bit로 변경되었다 한들 우리가 표현할 수 있는 정수형의 크기가 늘어났다던지 하는 것의 문제이지 실행속도에 영향을 줄 수가 있나요?
결국 궁극적으로 궁금한 것은 기타 부가적인 이유를 제외하고 1차원적으로 32bit->64bit로 데이터 버스, 레지스터 크기등 bandwidth가 늘어났을 때 명령어 실행 관점에서 무슨 이득을 기대해 볼 수 있는가에 대한 궁금증이 들었습니다.
제가 어느부분을 잘못 생각하고 있는 걸까요? ㅋㅋ 분명 이득이 없지는 않을텐데... 문득 이해가 안되네요 ~~
단적인 예로 0xFFFF * 0xABCD 연산을 할
단적인 예로
0xFFFF * 0xABCD 연산을 할 경우
16비트 컴퓨터에서는 1개의 곱하기연산이 필요 하지만,
8비트 컴퓨터에서는 4개의 곱하기와 3개의 더하기가 필요 합니다.
댓글 달기