악성코드를 침투시키는 방법중 하나가, 실행코드로 위장한 데이터를 전송해 이를 실행시키는 기법인데, 전송된 데이터는 '데이터 영역'에 쌓이기 때문에 필수적으로 데이터 영역의 데이터를 '실행'시켜야 한다. 이를 CPU 자체에서 방지하는 기능이다.
반대로 기존의 프로그래밍 기법중, '바이너리 코드'를 동적으로 생성해 실행하는 프로그래밍 기법이 있었는데, NX bit를 사용하는 운영체제에서는 이런 기법을 사용할 수 없다. 윈도 XP부터 추가된 기능이며, 윈도 비스타부터 일반화되어있다. (XP부터 사용할 수 있지만 비스타부터 기본값이 켜짐으로 되어있다)
DDR3-1333 을 지원하는 마더보드인데, 자동으로 놓으니 설정이 안되서 강제로 잡다가, SPD가 조금 이상하다고 느껴서 확인해봄. SPD(Serial Presence Detect)는 메모리 모듈의 정보를 얻기 위해 제조사에 넣어놓는 데이터다. 메모리 모듈을 보면 작은 칩이 하나 있는데 그게 SPD 칩이다. 주로 메모리의 속도와 타이밍 정보를 알려준다.
한가운데 아래에 있는 작은 칩이 SPD 칩이다. 사진은 삼성 20nm 급 DDR3 4GB 메모리 모듈이다
역시나. PC3-10600 이라면, 667MHz로 동작하고 따라서 그 하위 스펙인 533MHz, 400MHz 를 지원해주기 때문에, 이 수치가 SPD에 들어있을줄 알았는데 그게 아니다. 457, 533, 609, 685 가 들어있다.
삼성 DDR3-1333의 SPD
이상한건 맞는데 '정상'이다. (다른 메모리도 다 그러니깐) 개인적인 생각으론, 데이터에 소수점을 사용하지 않기 위해 그런게 아닌가 추측. 아울러 PC3-10700 으로 나오는건 CPU-Z의 특징이기도 하다.
1. 메모리 컨트롤러가 최소 8GB 이상의 주소공간을 지원해야 함 2. BIOS에서 메모리 재매핑(Memory Remapping)을 지원해야 함 3. 운영체제에서 4GB이상의 메모리를 지원해야 함
※ 위 세가지를 모두 만족해야 한다.
※ 8GB 이상의 주소공간을 지원하는 메모리 컨트롤러는 -- 인텔의 경우 Intel 955 이상의 칩셋(LGA 775소켓) 및 네할렘 이후의 모든 CPU -- AMD의 경우 소켓 F 와 그 이후의 모든 칩셋(소켓 939, 940, AM2, AM3, ...)
※ 메모리 재매핑: PCI(Peripheral Component Interconnect)장치 구성시 시스템에 덮어쓴 메모리영역을 4GB 이후의 메모리 영역으로 다시 매핑 되도록 하는 기능. 이 기능이 없으면 3072MB 이하의 메모리만 사용 가능하다. BIOS에서도 지원해야 하며, PCI, PCIe 장치도 지원해야 사용할 수 있다. BIOS에서 리매핑 옵션을 켰는데도 메모리가 3584MB 로 나오면 PCI장치에서 지원 안되는 경우일 수 있다.
※ 일반적으로 마더보드에서 사용하는 메모리 구성은 칩셋이 같은 경우 거의 비슷하다. 구체적인 용량은 마더보드의 기술 문서를 보면 된다. 인텔의 DG31PR 마더보드의 경우 아래와 같이 나와있다.