Post

CPU 아키텍처 & bound

쉽게배우는 운영체제

CPU 아키텍처

##

아키텍처 종류

x86

  • intel의 32bit cpu
  • 가장 많이 쓰이는 아키텍처
  • Windows, Linux, Mac os(BigSur 버전 까지)

x86_64(amd64)

  • amd가 만든 intel 기반의 64bit cpu
  • x86과 호환됨
  • Windows, Linux, Mac os(BigSur 버전 까지)

arm

  • arm 기반의 32bit CPU
  • x86과는 아예 다른 새로운 아키텍처
  • Linux, Mac OS (Monterey 부터), Android, iOS, 기타 모든 쪼그만 기기에서 성능 내야하는 경우 (공유기도 해당)

arm64(arm64/v8)

  • arm 기반의 64bit CPU
  • 32bit arm과 호환 가능

모바일 앱은 저전력을 필요로 하기 때문에 대부분 arm 기반의 아키텍처로 만들어지고

PC는 맥의 m1 칩을 제외하고는 대부분 x86_64 아키텍처로 만들어진다.

프로그램은 결국 컴파일 된 바이너리이기 때문에, 컴파일을 어던 CPU로 했는지에 따라 결과물이 정해진다.

그래서 x86 아키텍처에서 빌드한 라이브러리를 그냥 arm에 가져오면 실행이 되지 않는 것이다.

CPU bound / I.O Bound

CPU Bound

CPU Bound는 일반적으로 CPU 사용 연산이 I/O 연산보다 많은 경우를 말한다.

복잡한 수학 연산이나 논리적 문제 해결을 할 때 많이 사용되고, CPU의 성능에 따라 또는 CPU 성능을 최대로 활용하는 설계 및 개발에 따라 성능이 결정된다.

  • 이미지, 비디오 처리 : 픽셀 단위의 연산이 필요하기 때문에 CPU 연산이 많음
  • 머신러닝 학습 : 대량의 데이터에 대한 복잡한 계산이 필요하기 때문에 많음
  • 암호화/복호화 : 복잡한 수학적 연산이 필요

  • 성능 향상법
    • 여러 CPU 코어를 활용할 수 잇도록 병렬처리
    • 캐싱
    • 알고리즘 연산, 복잡도를 낮출수 잇는 코드 최적화
    • CPU 업그레이드
    • Multi Processing

I/O bound

  • 파일 읽고 쓰기
  • DB 쿼리 : 대용랑 데이터베이스에서 검색하는 작업은 디스크 I/O 가 많이 발생
  • 네트워크 통신

  • 성능 향상법
    • Non-blocing, Async
    • I/O 빈도를 낮추는 코드 최적화
    • Multi Threading
This post is licensed under CC BY 4.0 by the author.

© . Some rights reserved.

Using the Chirpy theme for Jekyll.