[컴퓨터구조] 2주차 요약

turi·2021년 7월 29일
1

책터디

목록 보기
2/4
post-thumbnail
Jonathan E. Steinhart 의 <한 권으로 읽는 컴퓨터 구조와 프로그래밍>을 읽고 정리하는 온라인 책터디.
매주 2 챕터씩 진행합니다.

요약된 내용은 모두 
Jonathan E. Steinhart. (2021). 한 권으로 읽는 컴퓨터 구조와 프로그래밍(오현석, 역). 경기: 책만. (원서 2019년 발행)

>>>책터디 _2주차

2장에서의 조합논리 장치의 출력은 입력에 따라 변하기 때문에, 출력을 '얼려' 시간이 지나도 기억할 방법이 필요하다. 
3장에서는 컴퓨터가 시간을 인식하는 순차논리, 4장에서는 이 모두가 조합된 컴퓨터에 대해 알아본다. 

3장 메모리와 디스크의 핵심 : 순차논리sequential logic


시간표현과 상태 기억

사람은 직관적으로 시간에 대해 알고 있고, 지구의 자전 같은 주기함수를 이용해 시간을 측정, 정의할 수 있다.
컴퓨터는 주기적인 신호가 필요하다.

-발진자oscillator :

되먹임(feedback)연결. 출력이 다시 입력으로 들어가서 반영되는 형태로, 크리스털 결정을 활용하면 좀 더 안정적으로 진동하는 주파수 만들어 내어 정확한 시간을 측정할 수 있다.

-클록clock :

발진자는 컴퓨터에 시간을 셀 수 있게 해주는 신호인 클록을 제공한다. 밴드의 드러머 같은 존재

*오버클로킹overclocking ?


-래치
-게이트가 있는 래치

-플립플롭flip-flop :

한 논리수준에서 다른 논리수준으로의 전이를 에지(edge)라 하며,
에지에 의해 데이터가 변하는 래치(edge-triggered latch)를 플립플롭 이라한다.
* 양의 에지에 의해 변화가 촉발되는(positive edge-triggered) 플립플롭. D 플립플롭 : 논리수준 0 -> 1
=> 논리수준이 0-> 1 로 바뀌는 순간에 플립플롭의 출력이 바뀜을 의미.
* 음의 에지에 의해 변화가 촉발되는(nagative edge-triggered) 플립플롭 : 논리수준 1 -> 0

-카운터counter :

플립플롭 응용회로로, 순서대로 수를 센다.
* 리플 카운터.
* 비동기 카운터(asynchronous counter) : 각 비트의 상태가 다른 비트 변화에 약간의 시차를 두고 변화
허용 정도보다 입력변화가 빠르면 출력이 틀림.
=> * 동기적 카운터(synchronous counter) 설계로 해결

-레지스터register :

클록을 공유하는 여러 D플립플롭을 한 패키지에 넣은 것

플립플롭 - 비트 하나 기억에 유용
레지스터 - 쉽게 여러비트 저장

메모리 조직과 주소 지정

훨씬더 많은 정보를 저장해야 한다면? -> 레지스터를 쌓고 번호(주소)를 부여하기
*주소(address) - 디코더의 출력을 레지스터의 입력에 활성화하기 위해 사용

메모리 칩 내부는 주소를 행(row)과 열(column), 두 덩어리로 나눠 격자로 관리한다.

-임의 접근 메모리random access memory : RAM

휘발성volatile 메모리 : 전원이 끊어지면 데이터 사라짐. SRAM, DRAM
*SRAM : 정적(static) RAM. 비싸지만 빠름. 트랜지스터가 공간 차지
*DRAM : 동적(dynamic) RAM. 면적당 비트개수의 밀도 높아, 주소가 많은 큰 메모리 칩에 사용
비휘발성non-volatile RAM - 코어core 메모리

-읽기 전용 메모리read-only memory : ROM

읽기만 가능. 쓰기 불가.
초기형태의 ROM 으로는, IBM 카드
초기의 순차적sequential 메모리를 보완한 형태로, PROM(programmable ROM)EPROM(erasable programmable ROM)

블록 장치

디스크 - 대량 저장장치
블록단위로 주소를 지정해 읽음. 블록은 섹터로도 불림.
디스크 드라이브는 하드 드라이브로도 불림.

플래시 메모리flash memorySSD

*플래시 메모리 : 가장 최근의 EEPROM.
*SSD : 고체 상태 드라이브. 디스크 드라이브 모양에 넣은 플래시 메모리

오류 감지와 정정

*패리티parity 사용하여 오류 감지 : 모든 비트의 XOR 취하면 됨.
*순환 중복검사 , *해시코드 는 더 나은 대체재

하드웨어와 소프트웨어 비교

구분이 모호


조합 논리와 순차 논리는 하드웨어의 기본적인 요소이다


4장 컴퓨터 내부 구조

전자 부품을 다양하게 조합해 비트를 조작하는 회로를 만들 수 있는데, 이런 회로를 컴퓨터computer라고 부른다. ...
현대적 컴퓨터는 크게 메모리, 입력과 출력, CPU라는 세 가지 부분으로 나눌 수 있다.

메모리

조작할 비트를 저장할 장소
프로세서에 따라 바이트 순서 다르게 설계
한 시스템에서 다른 시스템으로 데이터 전송시, 엔디안 고려해야 함


*엔디안 : 
엔디언(Endianness)은 컴퓨터의 메모리와 같은 1차원의 공간에 
여러 개의 연속된 대상을 배열하는 방법을 뜻하며, 
바이트를 배열하는 방법을 특히 바이트 순서(Byte order)라 한다.

엔디언은 보통 큰 단위가 앞에 나오는 빅 엔디언(Big-endian)과 
작은 단위가 앞에 나오는 리틀 엔디언(Little-endian)으로 나눌 수 있으며, 
두 경우에 속하지 않거나 둘을 모두 지원하는 것을 미들 엔디언(Middle-endian)이라 부르기도 한다.

빅 엔디언은 사람이 숫자를 쓰는 방법과 같이 큰 단위의 바이트가 앞에 오는 방법이고, 
리틀 엔디언은 반대로 작은 단위의 바이트가 앞에 오는 방법이다.

빅 엔디언은 소프트웨어의 디버그를 편하게 해 주는 경향이 있다. 
반대로 리틀 엔디언은 메모리에 저장된 값의 하위 바이트들만 사용할 때 
별도의 계산이 필요 없다는 장점이 있다. 
출처) 위키피디아. Wikimedia Foundation, Inc. 2020.07.08
https://ko.wikipedia.org/wiki/%EC%97%94%EB%94%94%EC%96%B8

입력과 출력input/output

컴퓨터에서 정보 전달하거나 정보를 가져오는 방법. 입력/출력. 줄여서, I/O.
*I/O 장치(I/O deice) : 주변장치(peripheral device), 퍼리퍼럴(peripheral). I/O에 연결되는 장치 의미

중앙 처리 장치CPU

실제 계산을 처리하는 컴퓨터 부품

-산술 논리 장치ALU, arithmetic logic unit :

CPU의 핵심 부품으로, 산술계산, 불리언 대수 및 기타 연산 수행방법을 알고 있는 장치.
실렉터와 논리게이트를 연결한 것.

피연산자(operand) : 수를 표현하는 비트
연산코드(operation code) : 명령코드(opcode). ALU가 피연산자에 어떤 연산자(operator)를 적용할지 지정
결과(result) : 피연산자 에 + 연산자 를 적용한 결과 

*** ALU carry borrow/ *carry flag ??
https://www.google.com/search?q=ALU+carry+borrow&source=lmns&bih=942&biw=1920&hl=ko&sa=X&ved=2ahUKEwjw6p7W05HyAhVM1ZQKHWUQCkAQ_AUoAHoECAEQAA

-**시프트

-실행장치execution unit :

제어장치(control unit). 컴퓨터의 대장 역할
ex ) ALU에게 할일을 알려준다 : 정해진 메모리에서 명령코드, 피연산자 가져오기 -> ALU에게 어떤 연산할지 알려주기 -> 결과를 메모리에 돌려주기

*명령어(instruction) : 컴퓨터에게 어떤 일을 할지 알려주는 비트 패턴
*프로그램 카운터(program counter) : 명령어 가져오는 위치 알려줌

명령어 집합

-명령어

*누산기(accumulator) : ALU가 계산한 결과를 저장

한 메모리에 있는 값 + 누산기에 있는 값 연산 -> 다시 누산기에 넣는다.
C = A + B
누산기 = A
누산기 = 누산기 + B
C = 누산기

-주소 지정 모드

*직접 주소 지정(direct addressing)
*간접 주소 지정(indirect addressing)
*즉시 주소 지정 모드(immediate addressing mode)

-조건 코드 명령어

(덧셈,뺄셈, 비교 연산에서 조건 코드가 설정된다)
명령어 *cca : 조건 코드 레지스터의 값을 누산기로 복사
명령어 *acc : 누산기의 값을 조건 코드 레지스터에 복사

-분기branch 명령어

프로그램 카운터 값 변경하는 명령어
항상 분기 하는 것이 아님. 조건에 만족하면 분기하는 명령오 있음.
*분기(branch) : 프로그램 카운터의 값을 바꿔서 다른 곳의 프로그램을 실행함)

-최종 명령어 집합 구성

*주소 지정 모드와 명령코드

마지막 설계

이 모두를 모을 접착제가 필요하다

-명령어 레지스터instruction register

*페치(fetch) : 메모리에서 명령어를 가져옴
CPU에 명령어 레지스터 추가해서 현재 실행 중인 명령어를 저장

-데이터 경로와 제어 신호

***

-데이터 흐름 제어

랜덤 논리 박스
마이크로 코드(microcode)
나노코드
큰 컴퓨터를 구현하기 위해 작은 컴퓨터 존재

RISC와 CISC 명령어 집합

*RISC(reduced instruction set computer) : 리스크. 복잡한 명령어를 단순한 명령어 조합으로 처리
적재-저장 구조(load-store architecture) 사용. 그러나 최근의 RISC는 CISC 보다 훨씬 복잡

*CISC(complicated instruction set computer) : 시스크. 기존 설계 방식(복잡한 명령어)의 컴퓨터
CISC의 대표적 기계가 PDP-11이고, 여기에서 C언어가 처음 만들어짐.
C는 C++, 자바, 자바 스크립트 등의 언어에 영향을 끼쳤다

GPUgraphic processing unit

그래픽 처리 장치.
-GPU에는 간단한 처리 정치가 많이 들어있다.
-GPU는 CPU보다 메모리 버스의 폭이 넓어, 메모리에 더 빨리 접근 가능.

profile
Junior Data Analyst

0개의 댓글