22.10.12 TIL ☀️

조배·2022년 10월 12일
1

TIL

목록 보기
18/30
post-thumbnail

10월 4일(위)과 10월 12일(아래)
두 사진을 보다가 가을임을 깨달았고, 문득 내가 보낸 가을들을 되돌아보았는데 기억이 나지 않았다.
가을은 짧기에 앞으로는 사진이든 글로든 나의 가을을 기억해야겠다.🍁

컴퓨터시스템 (CS:App) 🖥

프로세서는 메모리에 저장된 인스트럭션을 읽고, 해석한다.

인스트럭션은 컴퓨터에게 컴퓨터에게 일을 시키는 단위로서, 컴퓨터가 알아들을 수 있는 기계어로 이루어져 있는 명령이다.
즉, 코드 작성하고 실행 했을때(인스트럭션을 주어줬을때) 무슨 일이 일어나는지 설명하기 위해서는 시스템의 하드웨어 조직을 이해할 필요가 있다.

1. 버스

버스는 시스템 내를 관통하는 전기적 배선군이다.
쉽게 이야기해서 어떤 장치간의 바이트 정보를 전송하는데 연결시켜주는 커넥터라고 생각하면 쉽다.
버스는 일반 적으로 word라고 하는 고정 크기의 바이트 단위로 데이터를 전송하도록 설계된다.

2. 입출력 장치 (I/O)

입출력 장치는 시스템과 외부세계와의 연결이다.
우리가 자주쓰는 마우스, 키보드, 모니터, 디스크 드라이브 등이 있고,
각각의 I/O 디바이스들은 각각의 I/O 버스들과 연결되어 있다.

3. 메인 메모리

메인 메모리는 프로세서가 프로그램을 실행하는 동안 데이터와 프로그램을 모두 저장하는 임시 저장장치이다.
물리적으로 접근한다면 DRAM, 논리적으로 접근한다면 연속적인 바이트의 배열이다.

4. 프로세서(CPU)

프로세서는 메인 메모리에 저장된 인스트럭션들을 해독(실행)하는 엔진이다.
CPU는 명령들을 실행하는 산술 논리 장치(ALU)로 구성 되어있다.

이제 우리가 작성한 프로그램의 실행과정은 이렇게 된다.
디스크 -> 메인메모리(DMA(직접메모리접근)) -> 프로세서 -> 입출력장치

캐시가 중요하다.

지금까지 CS를 공부하면서 얻게된 중요한 교훈은 시스템이 정보를 한곳에서 다른 곳으로 이동시키는 일에 많은 시간을 보낸다는 것이다.
디스크 -> 메인 메모리 -> 입출력 장치 등으로 정보를 복사하는 과정들이 프로그램의 '실제작업'을 느리게 하는 오버헤드다.
그래서 시스템 설계자의 주요 목적은 이러한 복사과정들을 가능한 빠르게 동작하도록 하는 것이다.
반도체 기술이 발전하면서 프로세서와 메모리 간의 격차가 증가하기 시작하였고,
메인 메모리를 더 빠르게 동작하는 것보다는 프로세서를 더 빨리 동작하도록 만드는 것이 더 쉽고, 비용이 적었다.

캐시란?

캐시는 프로세서-메모리 간 격차를 대응하기 위해 시스템 설계자는 보다 작고 빠른 캐시 메모리(캐시) 라고 부르는 저장 장치를 고안하였고, 프로세서가 단기간에 필요로 할 가능성이 높은 정보를 임시로 저장할 목적으로 사용한다.
자주 사용하는 데이터를 캐시가 보관하도록 설정하면 빠른 캐시를 이용해서 대부분의 메모리 작업을 수행 할 수 있게된다.

저장장치들은 계층 구조를 이룬다.


출처: Gyujin's Algorithm & Idea Blog
메모리 계층 구조에 대한 지식을 알아야 성능 개선에 다른 방식으로 적용이 가능하다.

오늘의 추천곡 🎶


아이유 - 가을아침 🎵
가을하면 무슨 노래를 추천할까 했는데 이거다 싶었다 (아직 22.09.18 콘서트에서 헤어나오지 못한 사람.)

내일의 나에게 👍

  • 소울메이트와 한주 회고 정리
  • 나의 임상실험(?)의 결과값 정리
profile
깃허브로 이전했습니다 -> https://chobae.github.io/

0개의 댓글