본문 바로가기

IT 공부/컴퓨터 하드웨어 및 구조10

폰 노이만 구조의 혁신 폰 노이만 이전에도 컴퓨터는 있었다. 컴퓨터란 정보를 저장하고 처리하는 장치다. 물론 이 정의를 일반화하여 고대 중국의 주판을 컴퓨터라 할 수도 있다. 하지만 이 글의 논의에서 말하는 컴퓨터는 전자 컴퓨터를 말한다. 이런 관점에서 봤을 때, 최초의 컴퓨터는 존 모클리와 존 애커트가 1940년대에 개발한 애니악(ENIAC)이다. 문제는 에니악이 우리가 일반적으로 생각하는 범용 컴퓨터가 아니라는 점에 있었다. 이 때문에 에니악을 최초의 컴퓨터로 볼 수 없다는 시각이 현재는 주류의 의견이다. 우리가 컴퓨터에게 시키는 일은 알고리즘(계산 절차)을 통해 다양한 데이터 입력값에 대한 출력값을 얻는 것이다. 애니악은 철저하게 수소폭탄 궤적을 위한 알고리즘만을 수행할 수 있었다. 다양한 입력값에 해당하는 수소폭탄의 궤.. 2024. 3. 5.
논리 주소, 물리 주소 차이와 하드웨어적 메모리 보호 기법 1. 컴파일 단계에서부터 결정되어야 한다 논리 주소(가상 주소라고보 부른다)를 활용하기 위해서는 컴파일러가 미리 소스코드를 "실행 시간 바인딩(run time binding)"이 가능한 코드로 컴파일해야 한다. 궁극적으로 모든 프로그램은 메모리에 적재되어 CPU에 의해 실행되어야 한다. 따라서 어떻게 CPU가 프로그램의 메모리 상의 주소를 참조해 데이터를 긁어올 수 있는지 표준을 정해야 할 것이다. 컴파일러는 메모리 참조 방식(주소 바인딩, address binding)을 근거로 소스코드를 컴파일해야 한다. 다음은 그 종류다. 1-1. 컴파일 타임 바인딩 컴파일 단계에서 구체적인 물리 주소를 결정하는 식이다. 따라서 기계어 명령어에 이미 구체적인 참조 물리 주소가 적히는 식이다. 따라서 프로그램이 적재될.. 2024. 1. 3.
리눅스 환경에서 CPU 조사해보기 cpu MHz : 클럭 속도를 말한다. 메가헤르츠 단위로 표현되었는데 3.1GHz 정도다. 1초에 대략 3,000,000,000 번 '똑딱' 하고 반복한다. 클럭이 반드시 명령어 하나를 실행하는 주기는 아니다. 명령어 하나를 실행하는 데에도 다양한 단계를 거쳐야 한다. 명령어를 메모리에서 가져오고(fetch), 프로그램 카운터(pc) 값을 올리고, 명령어를 수행하고, .... 이런 식으로 말이다. 클럭은 소프트웨어가 아니라 하드웨적 관점에서 CPU가 하나의 처리를 할 수 있는 전산적 속도다. sibilings : 하이퍼쓰레딩(hyperthreading)을 말하며 하드웨어적 스레드 개수를 말한다. 내 가상머신의 리눅스는 1개 밖에 없는데, 이것은 내가 리눅스를 설치할 때 멀티쓰레딩 환경을 설정하지 않았기 .. 2023. 12. 28.
하드웨어 쓰레드와 소프트웨어 쓰레드 1. 코어와 하드웨어 스레드 (논리 프로세서) 스레드라는 단어가 하드웨어 단위에서 사용되는 경우도 있고, 위와 같이 소프트웨어적으로 사용되는 경우도 있다. 따라서 헷갈릴 수 있다. 그러나 서로 완전히 다른 개념이다. 멀티코어는 제어장치와 ALU와 같이 실제로 작업을 병렬적으로 처리할 수 있도록 CPU의 핵심 장치 자체를 여러 개 두는 것을 말한다. 시분할 방식이 아니라 정말로 여러 개의 코어에 작업을 적재시키면 동시에 실행시킬 수 있다. 하드웨어에서 말하는 멀티쓰레드는 제어장치나 ALU까지 병렬적으로 두는 것은 아니다. 다만 온전하게 하나의 실행 단위가 수행되기 위한 레지스터 세트 여러 개를 물리적으로 배치했다. 작업관리자로 내 컴퓨터의 코어 개수와 하드웨어 스레드 개수를 확인할 수 있다. 코어는 4개 .. 2023. 12. 27.