Memory and Bus

노정훈·2023년 5월 20일
0

CE

목록 보기
19/24

Memory

  • 컴퓨터에서 bit들을 저장하는 장소

Memory Location and Address

  • memory access는 address를 통해 이루어짐
  • address가 다르면 memory 내 위치가 다름
  • Memory의 1byte 별로 address를 할당하는 Byte oriented addressing이 사용됨.

  • 위 그림에서 집은 1byte의 같은 크기를 가지는 각각의 memory location을 의미함.
  • 각각의 memory location에는 byte address가 할당되어 있음.
  • 64bit computer의 경우 이런 memory location이 264(=n)2^{64}(=n)개 존재할 수 있음.
  • Memory Lane = Memory Bus, City Center = CPU
  • Memory address를 지정할 때는 일반적으로 byte들을 묶어서 지정함.

Memory Address and OS

  • 64bit computer인지 32bit computer인지는 CPU 내의 register의 크기로 결정
  • memory에 저장된 값을 CPU가 접근하기 위해서 CPU내 register에 address가 저장되므로 몇 bit computer이냐에 따라 가용 memory의 한계가 결정됨.
  • 16bit computer는 memory address를 2162^{16}가지로 지정 가능. 이는 2bytes로 address를 지정함을 의미
  • 32bit computer는 memory address를 2322^{32}가지로 지정 가능. 이는 4bytes로 address를 지정함을 의미
  • 64bit computer는 memory address를 2642^{64}가지로 지정 가능. 이는 8bytes로 address를 지정함을 의미
  • 64bit computer의 경우, 2642^{64}bytes에 해당하는 address를 가질 수 있으나 실제 memory addressing에는 전체 64bit 중 하위 48bit만 사용함.
  • 64bit computer가 제대로 동작하기 위해서는 HW 측면 외에도 SW 적으로도 64bit가 지원되어야 함. 64bit OS를 설치해야 함.

Nonaligned Access

  • 32bit computer의 경우 4개의 byte가 address 순서에 따라 묶여서 처리되기 때문에 위 그림의 5,6,7,8 byte address는 하나의 word로 묶어 처리할 수 없어 2번의 access가 필요함.
  • int type으로 수치 데이터를 다루는 것이 가장 빠름
  • 실수형 데이터(real number)를 다룰 때는 double, float 중에서 골라야 함. => 라이브러리에서 기본으로 지정된 것을 사용하는 것이 좋음.

Price/Performance ratio and Access time

Register

  • 속도는 매우 빠르지만 가장 비싸고 많은 데이터 저장이 어려움.
  • CPU 내부에 위치하며 ALU 등이 바로 사용하는 작은 크기의 데이터를 담고 있음. (filp-flop으로 구성됨)

SRAM(Cache)

  • register에 비해서는 느리지만 충분한 속도를 가짐
  • register보단 동일한 가격에 보다 많은 데이터를 저장할 수 있음.
  • CPU 내부에 위치 (register보다는 멀리 있음)

DRAM

  • 주기억장치로 많이 사용됨.
  • SRAM보다는 느리지만 가성비적인 측면에서는 보다 나음.
  • 보통 RAM이라 하면 DRAM을 가리킴.

HDD

  • 보조기억장치의 대표격으로 속도는 많이 느린편
  • 같은 비용에 매우 많은 데이터 저장이 가능함

SSD

  • HDD를 대신하는 보조기억장치로 떠오르는 추세
  • HDD보다 빠른 access를 보이나 비용이 아직은 HDD보다 높음.

  • 아래로 갈수록 capacitance(용량)이 커짐
  • throughout은 단위시간당 처리량으로 위로 갈수록 커짐.

Byte Ordering

Little Endian

  • Intel CPU에서 사용
  • word의 MSB가 가장 높은 주소(뒤쪽 주소)에 저장됨.
  • Little endian에서 MSB는 그림으로 표기 시 가장 오른쪽에 위치

Example
0x01020304을 8bit의 memory word 4개를 붙여 만든 32bit 크기의 word에 little endian으로 저장할 경우,

  • 첫 번째 address에 LSB에 0x04를 저장함.
  • 1byte 내에서는 순서가 바뀌지 않음

Big Endian

  • Motorola CPU에서 사용
  • Word의 MSB는 가장 낮은 주소에 저장됨.
  • Network Byte Ordering으로 네트워크에서 전송 시 표준으로 사용됨.

Example
0x01020304을 8bit의 memory word 4개를 붙여 만든 32bit 크기의 word에 big endian으로 저장할 경우,

  • 첫 번째 address에 MSB인 0x01을 저장함.

Input and Output

  • 현재 computer는 memory와 I/O device를 같은 bus로 연결하여 정보를 주고 받음.

Bus

  • CPU가 Primary memory 및 I/O device들과 정보를 전송하는데 사용하는 전기적 공통 선로
  • computer에서 address를 포함한 데이터 전송은 bus를 통해 이루어짐.

구조에 따른 분류

  • System Bus : CPU와 Memory 연결(Data line, Address line, Control line)
  • I/O Bus : Memory와 다른 I/O device 연결
  • 현대 computer는 위 둘이 합쳐진 구조임.

신호의 기능에 따른 분류

  • Data Bus : CPU가 Memory나 I/O device에 데이터 송출 또는 읽어들일 때 데이터를 전송
  • Address Bus : CPU가 Memory나 I/O device 주소 지정
  • Control Bus : CPU가 데이터 전송 시 제어 관련 신호나 자신의 상태 정보를 알리는데 이용

Internal Bus

  • CPU 내에서 register들을 연결하는 bus만을 가르키는 경우도 있으나 최근엔 memory나 video card 등의 기본적으로 내장된 component 간의 통신을 지원하는 bus를 가르키는 경우가 보다 많음.

External Bus

  • CPU와 Peripherals(주변 장치) 간의 데이터 전송을 하는 bus
  • Expansions (다른 기능을 지원하는 장치를 연결할 때 많이 사용)
  • slot(or port) 형태라 확장슬롯이라고도 불림.

External Bus 종류

  1. ISA(Industry Standard Architecture)
  • 초기 확장 버스 방식
  • 매우 높은 호환성. 그러나 매우 느린 속도
  • 당연하게도 현재 거의 사용되지 않음
  1. EISA(Extended ISA)
  • ISA보다 향상된 기능
  • 하지만 이 역시도 현재 거의 사용되지 않음.
  1. VESA(Video Electronics Standard Association)
  • 486 computer에서 사용됨.
  • 데이터 전송 속도가 개선된 버스였으나 현재 거의 사용되지 않음.
  • PCI로 대체됨
  1. PCI(Peripheral Component Interconnect)
  • 현재 널리 쓰이는 PCI-E의 이전 bus
  • PCI-E와 호환성은 없음.
  • plug and play 기능을 지원하고 bridge 회로를 통해 높은 호환성을 보임.
  1. AGP(Advanced Graphics Port)
  • GPU카드 전용버스가 그 자리를 물려받음
  • 그래픽 카드만 장착 가능
  1. PCI-E
  • 현재 그래픽 카드 등의 고속의 데이터 전송이 요구되는 외부장치를 장착하는 port
  • 16x(8GB/sec)까지 양방향 고속 데이터 전송이 가능함.
  • PCI의 한계를 극복하고자 개발되었지만 개발 당시 가장 높은 전송대역폭을 자랑하며 그래픽 카드를 위한 port로 많이 사용되게 됨.
PCI-E ver1 lane(x1)2 lane(x2)4 lane(x4)8 lane(x8)16 lane(x16)
1.0250MB/s500MB/s1GB/s2GB/s4GB/s
2.0500MB/s1GB/s2GB/s4GB/s8GB/s
3.0984.6MB/s1.97GB/s3.94GB/s7.88GB/s15.75GB/s
4.01.969GB/s3.94GB/s7.88GB/s15.75GB/s31.51GB/s
5.03.938GB/s7.88GB/s15.75GB/s31.51GB/s63.2GB/s
  • PCI-E는 full duplex(전이중 전송방식;데이터를 양방향으로 동시에 송수신)이므로 실제 데이터 대역폭은 위의 숫자에 2를 곱하면 됨.

References:
1) https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=techref&logNo=222246966805
2) https://softtone-someday.tistory.com/20
3) https://dsaint31.me/mkdocs_site/CE

profile
노정훈

0개의 댓글