[study] CPU 연산의 최소 단위는? [JVM이 32비트 연산을 기본으로 처리하는 이유]

2023. 5. 10. 00:15·◈ Study/기초튼튼 개발지식🥔
728x90

- CPU 연산의 최소 단위는?

현재 대부분의 일반적인 컴퓨터 아키텍처에서는 32비트 단위 이하의 연산은 지원하지 않는다.
(일부 임베디드 시스템이나 구형 컴퓨터에서는 8비트, 16비트 아키텍처를 사용하는 경우도 있다.)

16비트 아키텍처는 1980년대 중반까지 사용되었으며, 이 시기에는 IBM PC 등의 개인용 컴퓨터에서 인텔의 8086과 80286 프로세서가 널리 사용되었다. 하지만 이러한 아키텍처에서는 32비트 이상의 데이터를 처리하려면 두 개의 16비트 데이터를 조합해야 하는데 이는 처리 속도가 느려지는 문제가 있었다.

현재에 이르러서는 대부분의 컴퓨터가 32비트를 넘어 64비트 아키텍처를 사용하고 있다.

64비트 아키텍처에서는 32비트 데이터 처리도 가능하다. 64비트 아키텍처에서는 64비트와 32비트 모두를 지원하며 64비트와 32비트 데이터 간 변환도 가능하다. 32비트 데이터가 있는 경우에는 해당 데이터가 32비트 레지스터에 저장되고, 64비트 아키텍처에서 32비트 데이터를 처리할 때에는 해당 데이터가 32비트로 처리되며 이를 위해 하위 32비트만을 이용해 연산을 수행한다. 64비트 아키텍처에서는 이와 같이 32비트 데이터도 처리할 수 있으므로 32비트 데이터를 사용하는 애플리케이션도 정상적으로 동작한다.

- Java가 32비트 아키텍처를 대상으로 개발된 이유

Java는 1995년에 발표되었다. 이 당시에는 대부분의 개인용 컴퓨터가 32비트 아키텍처를 사용하고 있었고, 이러한 배경에서 Java는 초기부터 32비트 아키텍처를 대상으로 개발되었다.
 
Java가 처음에 32비트 아키텍처를 대상으로 개발된 이유는 여러 가지가 있었다. 먼저, 32비트 아키텍처는 16비트 아키텍처에 비해 메모리 주소 공간이 더 크기 때문에 더 많은 메모리를 사용할 수 있다. 또한 32비트 아키텍처는 연산 처리 속도가 더 빠르기 때문에 Java의 성능을 향상시키는 데에도 유리하다.
 
또한, Java는 처음부터 이식성을 중요시하였다. 이식성이란, 특정 플랫폼에 종속되지 않고 여러 플랫폼에서 동일한 코드를 실행할 수 있는 능력을 의미하는데, 32비트 아키텍처는 다양한 플랫폼에서 지원되는 표준 아키텍처 중 하나였기 때문에 Java 개발자들은 이식성을 고려해서 32비트 아키텍처를 대상으로 개발하였다.

728x90
'◈ Study/기초튼튼 개발지식🥔' 카테고리의 다른 글
  • [study] 아스키 코드 표(ASCII Table) [American Standard Code for Information Interchange, 미국 정보 교환 표준 부호]
  • [study] Java에서 8진수랑 16진수는 언제 쓸까? [자바 내 8진수와 16진수 사용처]
  • [study] Java에서 상수(Constant) 선언 방법은? [final 키워드로 선언되는 변수]
  • [study] Java 메모리 영역 구조 [메서드 영역(Method Area), 힙 영역(Heap), 호출 스택 영역(Call Stack)]
예르미(yermi)
예르미(yermi)
끊임없이 제 자신을 계발하는 개발자입니다👨🏻‍💻
  • 예르미(yermi)
    예르미의 코딩노트
    예르미(yermi)
  • 전체
    오늘
    어제
    • 분류 전체보기 (937)
      • ◎ Java (133)
        • Java☕ (93)
        • JSP📋 (26)
        • Applet🧳 (6)
        • Interview👨🏻‍🏫 (8)
      • ◎ JavaScript (48)
        • JavaScript🦎 (25)
        • jQuery🌊 (8)
        • React🌐 (2)
        • Vue.js🔰 (6)
        • Node.js🫒 (3)
        • Google App Script🐑 (4)
      • ◎ HTML5+CSS3 (17)
        • HTML5📝 (8)
        • CSS3🎨 (9)
      • ──────────── (0)
      • ▣ Framework (67)
        • Spring🍃 (36)
        • Spring Boot🍀 (12)
        • Bootstrap💜 (3)
        • Selenium🌕 (6)
        • MyBatis🐣 (10)
      • ▣ Tools (47)
        • API🎯 (18)
        • Library🎲 (15)
        • JitPack🚀 (3)
        • Jenkins👨🏻 (7)
        • Thymeleaf🌿 (4)
      • ▣ Server (32)
        • Apache Tomcat🐱 (14)
        • Apache HTTP Server🛡️ (1)
        • Nginx🧶 (7)
        • OracleXE💿 (4)
        • VisualSVN📡 (4)
      • ▣ OS : 운영체제 (18)
        • cmd : 명령프롬프트💻 (10)
        • Linux🐧 (8)
      • ▣ SQL : Database (56)
        • Oracle SQL🏮 (26)
        • PL SQL💾 (9)
        • MySQL🐬 (6)
        • MariaDB🦦 (6)
        • H2 Database🔠 (3)
        • SQL 실전문제🐌 (6)
      • ────────── (0)
      • ◈ Human Project (86)
        • Mini : Library Service📚 (15)
        • 화면 설계 [HTML]🐯 (10)
        • 서버 프로그램 구현🦁 (15)
        • Team : 여수어때🛫 (19)
        • Custom : Student🏫 (9)
        • Custom : Board📖 (18)
      • ◈ Yermi Project (40)
        • 조사모아(Josa-moa)📬 (5)
        • Riddle-Game🧩 (6)
        • 맛있을 지도🍚 (2)
        • 어디 가! 박대리!🙋🏻‍♂️ (5)
        • 조크베어🐻‍❄️ (4)
        • Looks Like Thirty🦉 (2)
        • Toy Project💎 (12)
        • 오픈소스 파헤치기🪐 (4)
      • ◈ Refactoring (15)
        • Mini : Library Service📚 (8)
        • 서버 프로그램 구현🦁 (1)
        • Team : 여수어때🛫 (0)
        • 쿼리 튜닝일지🔧 (6)
      • ◈ Coding Test (89)
        • 백준(BOJ)👨🏻‍💻 (70)
        • 프로그래머스😎 (2)
        • 코드트리🌳 (7)
        • 알고리즘(Algorithm)🎡 (10)
      • ◈ Study (102)
        • 기초튼튼 개발지식🥔 (25)
        • HTTP 웹 지식💡 (4)
        • 클린코드(Clean Code)🩺 (1)
        • 디자인패턴(GoF)🥞 (12)
        • 다이어그램(Diagram)📈 (4)
        • 파이썬(Python)🐍 (16)
        • 에러노트(Error Note)🧱 (34)
        • 웹 보안(Web Security)🔐 (6)
      • ◈ 공부모임 (39)
        • 혼공학습단⏰ (18)
        • 코드트리 챌린지👊🏻 (2)
        • 개발도서 100독👟 (8)
        • 나는 리뷰어다🌾 (11)
      • ◈ 자격증 공부 (37)
        • 정보처리기사🔱 (16)
        • 정보처리산업기사🔅 (9)
        • 컴퓨터활용능력 1급📼 (12)
      • ─────────── (0)
      • ◐ 기타 (113)
        • 알아두면 좋은 팁(tip)✨ (46)
        • 개발자의 일상🎈 (44)
        • 개발도서 서평🔍 (10)
        • 개발관련 세미나🎤 (2)
        • 블로그 꾸미기🎀 (9)
        • 사도신경 프로젝트🎚️ (2)
  • 인기 글

  • 최근 댓글

  • 태그

    프로그래밍
    Database
    백준
    html
    Error Note
    일상
    javascript
    spring
    Oracle
    꿀팁
    BOJ
    자바스크립트
    CSS
    백준 티어
    코딩
    Java
    코딩 테스트
    jsp
    SQL
    Project
  • 250x250
  • hELLO· Designed By정상우.v4.10.3
예르미(yermi)
[study] CPU 연산의 최소 단위는? [JVM이 32비트 연산을 기본으로 처리하는 이유]
상단으로

티스토리툴바