32bit 와 64bit architecture 에 대한 소소한 궁금증.

happyKYS의 이미지

안녕하세요~ 매번 여러 개발자 분들 답변에 잘 배워갑니다.

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가 늘어났을 때 명령어 실행 관점에서 무슨 이득을 기대해 볼 수 있는가에 대한 궁금증이 들었습니다.

제가 어느부분을 잘못 생각하고 있는 걸까요? ㅋㅋ 분명 이득이 없지는 않을텐데... 문득 이해가 안되네요 ~~

tyhan의 이미지

단적인 예로
0xFFFF * 0xABCD 연산을 할 경우
16비트 컴퓨터에서는 1개의 곱하기연산이 필요 하지만,
8비트 컴퓨터에서는 4개의 곱하기와 3개의 더하기가 필요 합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.