ImageX를 이용하여 Windows PE 환경 만들기 III : diskpart/ImageX적용/bcdboot 



이전 포스팅에서 Windows PE용으로 사용할 OS의 "install.wim" 파일을 "install.esd" 파일로부터 추출하였다.

이번에는 diskpart를 이용하여 USB의 파티션 구조 및 부팅용 장치를 만든 후 ImageX의 적용 및 bcdboot로 

해당 OS를 부팅메뉴에 추가하는 작업을 하고자 한다.


<3. diskpart로 USB의 파티션 구조 및 부팅용 장치 만들기>

명령프롬프트를 관리자 권한으로 열어 다음과 같이 입력한다.


<3-1. 디스크 확인>

☞ diskpart

☞ list disk

select disk="디스크 number"

 ☞ select disk=2


<3-2. USB를 부팅용 장치로 만들기>

☞ clean

☞ create partition primary

format fs=ntfs quick label=WinPE가 설치될 USB의 라벨명

☞ format fs=ntfs quick label=winpe

☞ active

assign letter="WinPE가 설치될 USB의 드라이브명"

☞ assign letter="z"

☞ exit



<4. ImageX 적용>

명령프롬프트를 관리자 권한으로 열어 "ImageX" 파일이 있는 폴더로 이동한다.


ImageX /apply install.wim 1 Windows PE가 설치될 USB의 드라이브명

☞ ImageX /apply install.wim 1 z:\


해당 OS의 "Install.wim" 파일을 USB에 Windows PE로 설치하였다.

설치시간은 USB 및 컴퓨터 사양에 따라 다르므로 필자의 설치시간과 다를 수가 있으니 참고바란다.


<5. bcdboot 적용>

명령프롬프트를 관리자 권한으로 열어 bcdboot를 실행하여 해당 OS를 부팅메뉴에 추가한다.


☞ bcdboot z:\windows /l ko-kr /s z: /f All



Windows PE를 구동할 컴퓨터에 USB (물론 BIOS에서 USB를 Primary로 설정해야 한다.)를 삽입한 후 

전원을 On하면 초기에 Windows PE가 해당 시스템의 드라이버 잡는 시간이후 Windows가 부팅된다.


장치가 '준비 중' 이다.

시스템 사양에 따라 Windows PE 환경이 만들어진 USB를 삽입 후 상기 '준비 중' 화면에서 

멈추는 시간이 각기 다르므로 이 또한 참고바란다.


Windows에 필요한 기본 설정 화면이 나타난다.


USB에 설치된 Windows PE (Windows 10 Enterprise)가 부팅되었다.


Windows PE는 상당히 사용하기 편리하며 컴퓨터에 문제 발생 시 하드웨어 또는 소프트웨어 

원인을 직접적으로 유추할 수 있게 하는 유틸리티로도 사용이 가능하다.

즉, HDD 문제로 컴퓨터가 부팅하지 않을 경우, HDD는 인식하나 소프트웨어 문제로 부팅시간이 

현저히 느릴 경우, CPU 및 메모리 등 주요 부품의 고장 유무 또한 판단할 수 있게 하므로 

만능툴로도 손색이 없다.



ImageX를 이용하여 Windows PE 환경 만들기 II : Install.wim 확보하기


ImageX를 이용하여 USB에 Windows 10 Enterprise를 설치하는 내용중 이전 포스팅은 

Windows 10용 Windows 평가 및 배포 키트(Windows ADK)에서 "ImageX" 파일을 얻는 작업을 설명했다.

이번 내용은 Windows 10 Enterprise 버전의 이미지 파일에서 "Install.wim" 파일을 확보하는 것이다.
"Install.esd" 파일로 압축이 되어 육안으로 확인할 수 없는 것이므로 압축을 푸는 프로그램을 이용하여 
"Install.wim"을 얻기로 한다.

<2."Install.wim" 확보하기>


Windows 10 Enterprise 버전의 경우 Sources 폴더내 Install.esd 파일이 존재한다.

압축된 파일이므로 "dism" tool을 이용하여 해당 파일을 얻는다.


명령프롬프트를 관리자 권한으로 열어 c:\windows\system32 폴더에서


다음과 같이 입력하여 해당 OS의 "install.esd" 파일의 인덱스 번호를 확인한다.

dism /get-wiminfor /wimfile:<"install.esd" 파일이 있는 드라이브 및 폴더 지정>


 dism /get-wiminfor /wimfile:d:\richard\tools\imagex\install.esd


본 Windows 10 Enterprise version의 경우는 단독 OS 이므로 인덱스 번호가 "1" 이다.

만약 여러개의 OS가 엮어져 있다면 그 수만큼 인덱스 번호가 나온다.

다음과 같이 입력하여 "install.esd" 파일내 "install.wim" 파일을 추출한다.
dism /export-image /sourceimagefile:<"install.esd" 파일이 있는 드라이브 및 폴더 지정> 

/sourceindex:1 /destinationimagefile:install.wim /compress:max /checkintegrity


☞ dism /export-image /sourceimagefile:d:\richard\tools\imagex\install.esd 

/sourceindex:1 /destinationimagefile:install.wim /compress:max /checkintegrity

이미지 추출중...


"install.wim" 파일이 "install.esd" 파일로부터 추출되었다.

추출된 "install.wim" 파일은 C:\Windows\System32 폴더내 있을 것이다.

ImageX를 이용하여 Windows PE 환경 만들기 I : ImageX 확보하기


이전 포스팅에서 WinToUSB를 이용하여 USB에 Windows PE를 설치하는 내용을 다뤄봤다.

WinToUSB는 GUI 환경이라 초보자도 아무런 어려움없이 해당 작업을 할 수 있을 것이다.

이번에는 마이크로소프트 프로그램인 "ImageX"를 이용하여 명령프롬프트 (CMD명령어) 환경에서 

Windows PE를 설치하고자 한다. 

GUI 환경에서 작업하는 WinToUSB 보다 명령프롬프트를 통해 Windows PE 환경을 만들면 

컴퓨터 사양, USB 종류, Windows version등에 구애받지 않고 작업을 할 수 있다는 장점이 있다.

본 내용에 흥미있는 어느 누구라도 아래 순서대를 따라 가면 충분히 가능하리라 생각된다.


우선 다음과 같은 준비물이 필요하겠다.


1."ImageX" 확보하기 : Windows 10용 Windows 평가 및 배포 키트 (ADK)를 통해 입수한다.

2."Install.wim" 확보하기 : Windows 10 Enterprise 버전의 경우 Sources 폴더내 Install.esd 파일이 존재한다.

                                 압축된 파일이므로 "dism" tool을 이용하여 해당 파일을 얻는다.

3.diskpart로 USB의 파티션 구조 및 부팅용 장치 만들기

4.ImageX 적용하기

5.bcdboot로 해당 OS를 부팅메뉴에 추가하기


<1. ImageX 확보하기>


마이크로소프트 개발자 사이트에서 아래 파일을 다운로드 받아 설치한다.

Windows 10 용 Windows 평가 및 배포 키트(Windows ADK)

https://developer.microsoft.com/ko-kr/windows/hardware/windows-assessment-deployment-kit


Windows 10 설치가 될 경로를 지정한다.


Windows Kits 개인 정보 화면에서 아무런 선택없이 다음으로 진행한다.


Windows 평가 및 배포 키드 사용권 계약이다. - '다음'을 클릭한다.



필요한 파일만 얻을 것이므로 배포도구 및 Windows 사전 설치 환경만 선택한다.



Windows 평가 및 배포 키트가 설치되었다.




상기 작업을 수행 후 아래 폴더로 이동하여 "ImageX" 파일을 확보한다.

C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit
\Deployment Tools\x86\DISM 폴더내 "ImageX" 파일이 다운로드되었다.



WinToUSB를 이용하여 WinToGo 만들기


일반적으로 Windows는 해당 시스템의 HDD나 SSD에 설치하여 구동하는 방법으로 사용한다.

그러나 OS 버전에 따른 작업이 특정되거나 이동이 잦은 작업이 있을 경우 등 

해당 시스템에 설치된 OS가 아닌 시스템 free 형식의

Windows PE를 사용하는 것에 많은 이점이 있다.

이러한 환경을 만들기 위해서는 Windows 8/8.1/10 Enterprise 버전으로 WinToGo를 만들 수 있다.


WinToGo를 만드는 방법은 여러가지가 있다.

cmd 환경(명령프롬프트)에서 partition 설정을 하여 GImageX를 이용하는 것과 

WinToUsb를 이용하는 방법이 있는데 후자쪽을 택해 Windows PE를 만들고자 한다.


우선 다음 링크에서 WinToUSB를 다운로드 받는다.

(Free 버전은 비상업용으로 사용가능하다.)

https://www.easyuefi.com/wintousb/


본 포스팅은 Enterprise 용을 이용하여 WinToGo 환경을 설정한다.


WinToUSB를 열어 Windows 10 ISO 파일을 연결한다.


Windows PE 환경을 구축할 USB를 연결한다.


해당 USB를 포맷하고 있다.


USB를 포맷 후 Windows PE를 만들기 위한 관련 파일을 USB에 설치하고 있다.


USB에 Windows PE의 환경이 구축됐다.

물론, USB를 이용하여 해당 시스템에서 부팅하기 위해서는 BIOS 설정에서 

Boot sequence를 Primary로 지정하는 것은 기본이겠다.


Windows PE가 적용된 USB로 부팅하고 있다.


장치 준비중...


이후 간단한 설정으로 해당 시스템의 드라이브가 설치되며 

부팅후 USB를 통한 Windows PE 환경을 경험할 수 있다.

USB로 부팅하여 Windows 7 설치하기


1.CMOS 설정

CMOS 설정 방법은 "USB로 Windows 10 설치하기" 내용에서 참고하면 되겠다.

http://rizzardo-blog.tistory.com/admin/entry/post/?id=118&type=post&returnURL=/manage/posts/


2.Windows 7 설치

CMOS 설정 완료 후 재부팅하면 상기 화면 ("Press any key to boot from USB")에서 아무키를 누른다.

약 5초의 시간이 주어지므로 빠른 시간내에 키를 눌러야 한다.

만약 키가 눌러지지 않으면 기존 Primary로 연결되어 있는 HDD로 부팅하게 된다.



파일을 로딩하고 있다.

시스템 성능에 따라 로딩 시간이 다르므로 참고바란다.



상기 화면에서는 거의 기본 설정이 되어 있으므로 "다음"을 클릭한다.


"지금 설치" 클릭을 한다.


설치 프로그램을 시작하는 중... 이라고 Windows 7 설치 마법사가 혼자 알아서 한다.


하드웨어 사양 (32비트 - X86 / 64비트 - X64)에 따라 운영체제를 선택한다.

만약 시스템 사양이 64비트인데 X86을 선택하면 설치가 진행되지만 

(이 경우 64비트 시스템에 X86 OS가 설치되므로 64비트 운영체제의 이점을 누릴 수가 없게 된다.) 

그 반대의 경우 즉, 

시스템 사양은 32비트이나 X64를 선택하면 설치가 진행되지 않으므로 설치 시스템의 사양을 정확히 알 필요가 있겠다.


소프트웨어 사용권 계약서 항목에서 시간되시는 분은 화면을 스크롤하여 모든 내용을 참고하시고 

"동의함"을 체크 후 "다음"을 클릭한다.


설치 유형 화면에서는 "사용자 지정"을 선택한 후 클릭한다.

[상기 항목인 "업그레이드"는 현재 C 드리이브에 Windows 7이 설치되어 있는 경우 선택 필요함]


Windows 7을 설치할 드라이브의 선택이므로 본 경우는 "디스크 0 파티션 1"에 설치하기로 한다.

"드라이브 옵션(고급)" 클릭한다.


디스크 0 파티션 1 선택 후 "포맷"을 클릭한다.


포맷을 하게되면 모든 데이터가 사라지므로 다시한번 중요 자료가 없는지 판단 후 "확인"을 클릭한다.


포맷 완료 - 기존 Windows (XP, 2000...) 보다 상당히 빠르다.


Windows 7 설치 중이다.


Windows 설치 후 1차 재부팅 화면이다.


Windows 7 설치가 막바지 진행중이다.


사용자 이름과 컴퓨터 이름을 입력 후 "다음" 을 클릭한다.


암호 입력 후 "다음" 을 클릭한다.


제품 키 입력 화면으로 현시점에서 키을 가지고 있으면 정확하게 입력하면 되고 그렇지 않다면 "다음" 을 클릭한다.


컴퓨터 자동 보호 및 Windows 향상 화면에서 상단의 "권장 설정 사용" 선택한다.


'날짜 및 시간'을 설정한다.


Windows 7 설정 마무리 중이다.


드디어 Windows 7 설치가 완료되었다.



USB로 부팅하여 Windows 10 설치하기


1.CMOS 설정

부팅 가능한 Windows 10 USB를 꽂은 후 전원을 on하면 재부팅 초기 화면에서 

"F2" Key (제품에 따라 "DEL" key를 누르는 경우가 있음)를 눌러 CMOS BIOS 설정 화면으로 들어간다.


"Boot Sequence" 메뉴로 내려가서 엔터를 치면 부팅 순서 변경 화면에서 Up/Down 방향키로 이동한다.


"USB Storage Device"를 첫번째로 설정한다.


변경 내용을 저장 ("SAVE") 한다.


BIOS 메뉴에서 나온다.


2.Windows 10 설치

CMOS 설정 완료 후 재부팅하면 상기 화면에서 하드웨어 사양에 따라 32bit (x86), 64bit (x64) 선택한다.


파일 로딩 중이다.


wait a moment..


상기 화면에서는 거의 기본 설정이 되어 있으므로 "다음"을 클릭한다.


"지금 설치" 클릭한다.


설치 프로그램을 시작하는 중... 이라고 Windows 10 설치 마법사가 혼자 알아서 한다.


Windows 10 key 입력한다.

만약 현재 제품 키가 없다면 '제품 키가 없음'을 클릭하여 Windows 설치 완료 후 Key를 입력하면 되겠다.


Windows 10 (Pro 또는 Home) 운영체제 선택

아키텍쳐는 컴퓨터 특히 메인보드 및 CPU가 지원하는 시스템 종류를 선택하는 것이다.

x86은 32비트 운영체제이며 x64는 64비트 운영체제를 말한다.

32비트만 지원하는 하드웨어 (메인보드 및 CPU)를 가지는 컴퓨터에 x64 운영체제를 설치하면 설치가 안되지만

그 반대의 경우 즉, 62비트를 지원하는 하드웨어를 가지는 컴퓨터에 x86 운영체제의 설치가 가능하다.


소프트웨어 사용권 계약서 항목에서 시간되시는 분은 화면을 스크롤하여 모든 내용을 참고하시고 

"동의함"을 체크 후 "다음"을 클릭한다.


설치 유형 화면에서는 "사용자 지정"을 선택한 후 클릭한다.

[상기 항목인 "업그레이드"는 현재 C 드리이브에 Windows 7/8.1/10 이 설치되어 있는 경우 선택 필요함]


Windows 10을 설치할 드라이브의 선택이므로 본 경우는 "디스크 0 파티션 1"에 설치하기로 한다.

파티션1 선택 후 "포맷" 클릭한다.


포맷을 하게되면 모든 데이터가 사라지므로 다시한번 중요 자료가 없는지 판단 후 "확인" 클릭한다.


Windows 10 설치 중이다.


"빠른 설정 시작" 을 클릭한다.

(만일 "사용자 지정"을 선택하게 되면 여러가지 사항의 설정 메뉴를 거치게 됨)


또 wait a moment


Windows 10의 설치 시스템에 사용하게 될 계정 및 암호를 입력한다.


Windows 10 설치 마지막인 듯하다.


드디어 Windows 10 설치가 완료되었다. (바탕화면 괜찮은데...)



컴퓨터 또는 장치간 서로 연결하는 방법이 이떻게 되는가?



 

컴퓨터나 장치는 네트워크 인터페이스(network interface)를 통해 로컬 네트워크의 백본(backbone)과 통신하여 네트워크에 접속한다. 백본은 가장 많은 트래픽을 전달하는 네트워크의 일부이다. 오랜 시간 동안 백본과 백본을 잇는 연결 재료로 동축 케이블, 광섬유 케이블, 연선(twisted pair) 케이블, 전파, 노드를 연결하는 전화 및 전원 배선을 사용해왔으며 특히 연선 케이블과 전파를 단연 가장 많이 사용하였다. 커넥터, 회로, 배선, 기타 하드웨어의 조하은 네트워크의 대역폭을 결정한다.

 

동축 케이블 (Coaxial Cable)

데이터는 커넥터에서 나와 케이블 텔레비전에 사용하는 것과 같은 BNC 동축 케이블(BNC coaxial cable)을 따라 전송될 수 있다. (BNC : Bayonet Neill-Concelman)

동축 케이블은 단일 구리선으로 구성되어 있으며 플라스틱과 편조 구리(braided copper)로 감싸 중앙에 있는 전선을 전기 방해로부터 보호한다. 케이블 세그먼트의 각 끝에는 4분의 1만 회전해 케이블을 연결하는 베이너넷 커넥터(bayonet connector)가 있다. 광대역 연결은 대부분 동축 케이블을 사용해 가정(모뎀)으로 연결한다.

 

연선 배선 (Twisted-Pair Wiring)

컴퓨터를 모뎀이나 라우터로 물리적으로 연결하는 데 가장 많이 사용하는 연선 배선은 인치당 회전수를 달리해 꼬아진 4쌍의 절연선을 감싸는 플라스틱 외피가 있다. 이 연선의 형태는 인접한 전선 및 같은 건물 안에 있는 모터와 전자 장치에서 나오는 전지 잡음(noise)을 없애준다.

케이블의 각 끝은 일반적인 RJ-11 전화 플러그처럼 생긴 플라스틱 RJ-45 커넥터로 되어 있다.

(RJ : Registered Jack)

네트워크의 각 (유선) 노드에는 향성형 구성(star configuration)의 중심인 중앙 라우터(router)나 스위치(switch)에 노드를 연결하는 별도의 연선 케이블이 있다. 이 모든 장치들은 네트워크상의 한 컴퓨터에서 다른 노드로 신호를 전달할 수 있게 해준다. 연결은 다른 노드에 영향을 주지 않고 끊어질 수 있다.

 

광섬유 (Fiber-Optic)

인터넷이나 LAN에 직접 연결된 네트워크에서는 속도가 중요하다. 광섬유 케이블은 초당 10억 비트를 전송할 수 있어 수십만 건의 전화 통화도 무리 없이 처리한다. 머리카락만큼 가는 섬유는 거울로 덮인 터널처럼 반사 피복(cladding)으로 덮인 두층의 석영 유리로 구성된다. 레이저나 LED에서 나오는 다양한 광 펄스는 피복에서 반사되어 케이블을 따라 데이터를 전달한다.

케이블 및 전화 회사가 데이터 센터에서 인접 지역으로 연결하기 위해 전선은 일반적으로 광섬유 케이블을 따라 이동한다.

 

무선(Wireless)

최신 네트워크에서는 대다수의 노드가 케이블 연결 대신 와이파이(Wi-Fi) 무선 신호를 사용해 스위치나 라우터와 연결한다.

이 방식으로 주로 노트북, 태블릿, 스마트폰, DVR 등을 연결한다.

 

이더넷 패킷 (Ethernet Packet)

이더넷 네트워크는 한 노드에서 다른 노드로 데이터를 패킷(packet) 형태로 전송한다. 스위치(switch)와 라우터(router)는 이 정보를 사용해 패킷을 전달할 위치를 정한다. 허브(hub)로 연결된 네트워크에서 노드는 주소 데이터를 확인해 주의해야 할 패킷과 무시해도 되는 패킷을 판단한다.

 

허브(Hub), 라우터(Router), 스위치(Switches)

향성형 구성(star configuration) 네트워크에서는 허브, 스위치 그리고/또는 라우터를 트래픽 제어기로 사용해 데이터를 적합한 대상으로 전송하고 인터넷 침입자로부터 보호한다.

각각의 장치는 RJ-45나 광섬유 케이블이 지나갈 수 있도록 여러 개의 플러그를 설치한 간단한 상자이다.

 

허브(Hub)

허브는 여러 노드의 데이터 패킷을 수신하되 다른 패킷을 작업하느라 바쁠 경우에는 이를 임시로 메모리 버퍼에 저장한다.

허브에서 수신한 각 패킷은 패킷의 주소와 상관없이 모든 노드를 하나씩 번갈아가며 전송한다. 노드는 자신에게 주소를 지정하지 않은 패킷은 모두 무시한다. 최신 네트워크에서 허브는 점차 사라지고 있으며 대부분 스위치로 대체하고 있다.

 

스위치(Switch)

스위치 기능은 허보와 비슷하지만 스위치는 특정 노드로 이어지는 연결이 어떤 것인지 알고 있다. 스위치는 패킷의 주소 정보를 판독하고 지정된 주소의 노드로 연결된 회선만을 사용해 패킷을 전송한다.

일부 패킷은 다른 컴퓨터가 온라인 상태가 되었음을 알려주는 것처럼 알림용으로 주소를 할당 받기도 한다. , 송신 노드는 다른 모든 노드가 패킷을 인지하기를 바란다.

스위치는 패킷의 사본을 전송한다.

 

라우터(Router)

라우터가 인터넷 연결을 제공하되 네트워크에서 보내는 알림 패킷은 수락하거나 전송하지 않는다는 점을 제외하고는 스위치와 비슷하다.

라우터는 LAN에 있는 노드의 구체적 전송 주소가 필요하다. 대부분의 라우터와 스위치 기능은 같은 장치에 내장되어 있다.

또한 라우터는 데이터 패킷에 대한 규칙을 적용한다. 예를 들어, 라우터는 LAN 외부와 인터넷상의 임의의 주소를 갖는 LAN 패킷은 전부 차단한다.

인터넷에서 유입된 패킷이 LAN상에 있는 노드로 향할 경우 라우터는 신호를 로그인 루틴(log-in routine)으로 보내거나 완전히 무시한다.

태블릿이 LAN에 로그인한 경우처럼 대상 주소가 유효하면 라우터는 패킷이 네트워크로 들어오게 허용한다. 일부 라우터는 데이터를 대상 주소로 전송하기 전에 패킷의 CRC 세그먼트를 검사해 경로에서 발생한 오류가 있는지 확인한다. 오류가 발생한 경우 라우터는 이를 폐기하고 원래 주소에 메시지를 보내 새로운 패킷을 보낼 것을 요청한다.

 


RAM에 데이터를 어떻게 기록하는가

 

소프트웨어는 운영체제와 함께 동작해 램(RAM) 칩에 에칭된 전도성 물질의 미세한 가닥인 주소 라인 (address line)을 따라 전기를 보낸다. 각 주소 라인은 칩 안에 데이터를 저장할 수 있는 곳의 위치를 알아낸다. 전기가 가득차면 RAM 칩의 수많은 주소 라인 중에 어디에 데이터를 기록할지 판별한다.

 

전기 펄스는 데이터를 저장할 수 있는 RAM 칩에서 각 메모리 위치에 있는 데이터 라인(data line)과 연결된 트랜지스터를 켠다(닫음). 트랜지스터는 본래 아주 작은 전기 스위치이다.

 

트랜지스터가 켜져 있으면 소프트웨어는 선택된 데이터 라인을 따라 전기 신호를 보낸다. 각 신호는 1 비트를 나타낸다. 1 비트와 0비트는 컴퓨터가 처리하는 정보의 가장 기본적인 단위인 프로세서의 언어를 구성한다.

 

트랜지스터가 켜져 있는 주소 라인으로 전기 펄스가 도달하면 펄스는 닫혀 있는 트랜지스터를 통해 흐르고 전기를 저장하는 전자 장치인 커패시터를 충전한다. 이 과정은 커패시터의 충전이 다시 시작 될 때까지 계속 반복되는데 그렇지 않을 경우 전기가 누출된다. 컴퓨터의 전원을 끄면 커패시터는 모두 방전된다. 주소 라인에 있는 각각의 커패시터는 1비트를 나타낸다. 충전되지 않은 커패시터는 0비트를 나타낸다. 컴퓨터는 1비트와 0비트를 이진수로 사용하여 글자와 이미지 등 모든 정보를 저장하고 처리한다.

RAM칩에 있는 8개의 스위치가 있을 때 각각의 스위치는 트랜지스터와 커패시터로 되어 있다. 트랜지스터의 닫힘과 열림을 조합하면 ASCII 표기법에서 대문자 A를 표시하는 이진수 01000001을 나타낸다. 주소 라인에 있는 8개의 커패시터 중 첫 번째 커패시터는 충전되지 않고(0), 두 번째 커패시터는 충전되고(1), 그 다음 5개의 커패시터는 충전되지 않고(0000), 8번째 커패시터는 충전된다(1).

 

RAM으로부터 어떻게 데이터를 읽어오는가?

RAM에 저장되어 있는 데이터를 읽으려면 또다른 전기 펄스를 주소 라인으로 전송하고 다시 한 번 여기에 연결된 트랜지스터를 닫는다.

 

전하를 보유한 커패시터가 있는 모든 주소 라인에서 닫힌 트랜지스터가 만드는 회로를 통해 커패시터는 방전되고, 데이터 라인으로 전기 펄스를 보낸다.

 

소프트웨어는 펄스가 어느 데이터 라인에서 오는지 인식하고 각 펄스를 1로 해석한다. 펄스를 전송하지 않는 라인은 모두 0으로 해석한다. 8개의 데이터 라인에서 만들어지는 10의 조합이 1바이트(byte)의 데이터를 만든다.

 

칩이 더 많은 데이터를 이동시키는 방법

메모리가 얼마나 빨리 데이터를 공급하는지에 따라 가장 빠른 프로세서로 제약을 받는다. 원래 데이터를 더 많이 공급하는 방법은 클럭 속도 (clock speed)를 높이는 것이다. 여기에 설명된 SDRAM(Synchronous Dynamic Random Access Memory) 메모리는 프로세서의 클럭 조절 동작과 메모리 데이터 이동의 매 주기(cycle) 또는 매 틱(tick)마다 값을 저장하거나 프로세서로 향하는 데이터 버스로 값을 이동시킬 수 있었다. 그러나 프로세서의 속도가 빨라져 RAM의 속도를 능가하자 메모리는 다음과 같은 두 가지 방법으로 그 격차를 좁혔다.

 

한 가지 방법은 DDR(Double Data Rate)이다. 예전에는 클럭의 각 주기(cycle)마다 비트를 기록하거나 읽었다. 이것은 마치 시카고에서 뉴욕으로 가는 기차에 누군가가 짐을 싣고(데이터 기록), 그 짐을 내린(데이터 읽기) 다음, 돌아가는 길에 실을 수 있는 새로운 짐이 뉴욕에 있음에도 불구하고 빈 기차를 시카고 되돌려 보내는 것과 같다. DDR을 사용하면 기차가 뉴욕에 도착할 때 짐을 내릴 수 있고 시카고로 돌아가기 전에 새로운 짐을 실을 수 있다. 이렇게 하면 기차는 같은 시간에 두 배의 트래픽(데이터)을 처리한다. 짐을 싣고 내리는 사람을 메모리 컨트롤러(memory controller), 기차의 왕복 주기를 클럭 사이클 (clock cycle)로 대신하는 것이 DDR이다.

 

또 다른 방법인 DDR2는 다른 방식을 사용해 데이터 전송 속도를 두 배로 늘렸다. DDR2는 메모리의 내부 클럭 속도를 데이터 버스(data bus) 속도의 절반으로 줄였다. DDR2DDR3, DDR4로 빠르게 발전햐였고,. 각각 이전 버전에 비해 프로세서의 클럭 속도를 절반으로 줄였다. 메모리 소도를 줄임으로써 RAM의 전기 사용량을 줄인 부가적인 효과도 얻었다. 월별 전기 요금을 현저히 줄인다기보다는 작동이 잘 되고 안정적인 메모리칩을 얻은 것이다.

 


프로세서가 데이터를 이동시키는 방법




 

최근의 마이크로프로세서는 트랜지스터가 천억 개 이상 있다. 만약 이 수많은 트랜지스터 중 하나를 따라 걸어간다고 하면 완전히 길을 잃을 수도 있을 것이다. 그러나 예전이나 지금이나 프로세서가 기본적인 기능을 수행하는 방법에는 변함이 없다. 마이크로프로세서에는 많게는 8개의 실행 코어(core)와 다수의 캐시(cache)가 있을 수 있지만, 단일 코어를 갖는 펜티엄 III 프로세서와 마찬가지로 모두 어떻게 데이터를 장애 없이 빠르게 전송하느냐 하는 문제를 갖고 있다.

 

프로세서와 프로세서에 연결된 캐시는 동일한 인터페이서를 사용해 컴퓨터의 정보에 접근한다. 해당 코드로 처리된 프로그램 코드나 데이터는 컴퓨터의 최대 버스 속도로 칩 안팎을 이동한다. 컴퓨터 아키텍처는 대부분 프로세서가 동작을 완료하지 않고도 클럭 사이클(컴퓨터가 어떤 일을 할 수 있는 최소한의 시간)을 최소화함으로써 병목현상을 줄인다.

 

BIU(Bus Interface Unit)를 통해 프로세서로 정보를 입력하면 BIU는 정보를 복제하고 복사본 하나를 프로세서 코언 안에 있는 CPU의 가장 가까운 데이터 캐시로 전송한다. BIU는 프로그램 코드를 레벨 1 명령어 캐시 또는 1-캐시로 전송하고, 코드에서 사용할 데이터를 또 다른 L1 캐시인 데이터 캐시(D-cache)로 전송한다.

 

페치(fetch)/디코드(decode) 장치가 1-캐시에서 명령을 불러올 동안 BTB(Branch Target Buffer)는 각 명령을 별도의 버퍼에 저장된 것과 비교해 이전에 사용한 명령이 있는지 알아본다. BTB는 특히 프로그램 실행이 두 경로 중 하나를 따를 수 있는 상황인 분기(branching)를 포함하고 있는 명령이 잇는지 찾는다. BTB가 분기 명령을 찾으면 과거 경험을 기준으로 어느 경로를 택할지 예측한다. 예측치는 92%이상 정확하다.

 

BTB가 예측한 순서대로 페치/디코드 장치가 명령을 불러오면 병렬로 작동하는 3개의 디코더는 좀 더 복잡한 명령을 작은 마이크로 연산(micro-operations)μops로 쪼갠다. 배치(dispatch)/실행(execution) 장치는 상위 레벨의 단일 명령을 처리하는 것보다 여러 개의 μops를 더 빠르게 처리한다.

 

디코드(decode) 장치는 모든 μops를 리오더 버퍼(Reorder buffer)라고도 하는 명령 풀(pool)로 보낸다. 여기에는 정수와 관련된 연산을 모두 처리하는 ALU(Arithmetic Logic Units)가 두 개 들어 있다. ALUBTB가 예측한 순서대로 μops를 포함하고 헤드와 꼬리가 있는 원형 버퍼(circular buffer)를 사용한다.

 

배치/실행 장치는 버퍼의 각 μop을 검사하여 처리에 필요한 정보가 모두 있는지 확인하고, 처리 준비가 완료된 μop를 발견하면 이를 실행해 그 결과를 마이코로옵(micro-op) 자체에 저장하며, 완료도 표기한다.

 

μop이 메모리에서 데이터가 필요하면 실행 장치는 이를 건너뛰고 프로세서는 L1 캐시 가까이에 있는 정보를 찾는다. 그곳에 데이터가 없으면 프로세서는 다음 캐시 레벨인 L2를 확인한다. 캐시의 크기와 구조는 프로세서 설계에 따라 다르지만 캐시에서 데이터를 불러오는 데 필요한 용량과 시간에서 각 캐시의 레벨이 증가한다.

 

정보를 불러올 동안 실행 장치는 가만히 있는 것이 아니라 버퍼의 각 μop을 검사해 실행할 수 있는지 본다. 이를 예측 실행(speculative execution)이라고 하는데, 원형 버퍼에서 μops의 순서가 BTB의 분기 예측을 따르기 때문이다. 실행 장치는 최대 5개의 μop을 동시에 처리한다. 실행장치가 버퍼의 끝에 도달하면 헤드 부분에서 다시 시작하여 실행해야 할 데이터를 수신한 μop이 있는지 모두 재확인한다.

 

연산에 3.14.333333과 같은 부동 소수점 숫자가 있으면 ALU는 이러한 숫자를 빠르게 처리할 수 있는 부동 소수점 연산 장치로 작업을 넘긴다.

 

지연되었던 μop이 최종 처리되면 실행 장치는 이 결과를 BTB가 예측한 결과와 비교한다. 예측이 실패한 경우 JEU(Jump Execution Unit)라는 구성요소는 마지막 μop의 끝 표시(end marker)를 잘못 예측한 μop으로 옮긴다. 이는 끝 표시 뒤에 있는 μop를 모두 무시하라는 뜻이며 새로운 μop으로 대체할 수 있다는 의미이다. BTB는 예측이 잘못되었음을 알게 되고, 이 정보를 미래 예측에 사용한다.

 

한편 리타이어먼트(retirement) 장치도 원형 버퍼를 검사한다. 이 장치는 먼저 버퍼의 헤드에 있는 μop이 실행되었는지 확인하고, 그렇지 않을 경우 처리가 완료될 때까지 계속 확인한다. 그런 다음 두 번째, 세 번째 μop을 검사한다. 이미 처리가 되었다면 최대 3개의 결과값을 저장 버퍼로 전송한다. 여기서 예측 장치는 결과가 시스템 RAM으로 전송되기 전에 마지막으로 한 번 더 확인한다.

 


파워서플라이란 무엇인가 II

 

파워서플라이의 전원 케이블은 색깔별로 역할이 구분되어 있다.

하지만 실질적으로 ATX 사양으로 규정된 케이블 색과 실제 판매되고 있는 전원 유닛의 케이블 색이 반드시 같은 것은 아니며제조업체마다 다른 색을 사용하고 있다.

커넥터의 9번선 (일반적으로 보라색 전선)은 파워서플라이가 절전 모드가 작동이 멈춘 순간에도 계속 +5VSB의 전력을 제공한다.

그래서 컴퓨터가 키보드를 통한 입력을 받으면 작동할 수 있도록 설계되어 있다.

이 전압의 규격은 1.0A 필수이며 2.0A를 지원하는 제품을 추천한다.

14번선 (일반적으로 녹색 전선)은 파워서플라이가 스스로 전원을 켤 수 있도록 한다.

 

▶ 파워서플라이의 소비 전력 계산 ◀ 

 

파워서플라이에서 공급되는 전원이 부족하면 컴퓨터는 불안정해진다.

파워서플라이를 통해 공급되는 소비 전력을 어떻게 계산해야 할까?

인텔과 AMD CPU를 만들면서 CPU가 소비하는 전력을 명시한다. TDP(Thermal Design Power)가 바로 전력 값이다.

그렇다면 컴퓨터가 사용하는 전체 전력은 어떻게 계산할까?

컴퓨터 외부에서 공급된 전압이 파워서플라이와 메인보드 전원부의 변압과 전류 회로를 거치면서 빠져나가는 전력을 더해야 전기계량기에 찍히는 총 전력이 된다.

 

컴퓨터의 전원을 켜면 제일 먼저 파워서플라이에 장착되어 있는 냉각팬이 동작한다.

파워서플라이가 정상인지 고장인지는 전원이 공급되었을 때 냉각팬의 작동 유무로 쉽게 판단할 수 있다.

메인보드에 안정적인 전원을 공급하기 위해서 파워서플라이가 갖춰야 할 용량과 역할에 대해 알아본다.

컴퓨터는 냉장고, TV와 같은 전자 제품이다.

이들 전자 제품과 같이 콘센트에 플러그를 연결하여 사용하지만 내부적으로는 완전히 다른 전류를 사용한다.

전자 제품은 110V/220V의 교류 전원을 사용한다.

하지만 컴퓨터는 낮은 전력(12V 이하)의 직류 전원을 사용한다

파워서플라이에 110V/220V의 교류 전원이 인가되면 컴퓨터 내부 부품에 전원을 공급하기 위해 직류 전압으로 바꿔준다.

파워서플라이에서 만들어진 출력은 3.3V, +5V, -5V, +5VSB, +12V, -12V의 직류 전원이다.

 

파워서플라이에서 공급되는 전원 중 실제로 많이 사용되는 전원은 +5V, +12V의 두 가지이다.

5V의 전원을 필요로 하는 컴퓨터 주변기기는 마우스, 키보드, 내장 스피커, 하드디스크 LED등이 있다.

CPU 냉각팬이 동작하기 위해서는 +12V가 필요하다.

+5V, +12V의 전원을 받은 메인보드는 CPU, , 하드디스크, 그래픽카드 등에서 요구하는 정해진 전압으로 바꾸어 각 장치에 전달한다.


▶ 파워서플라이 각 전원별 구동 부품 ◀

 

+5V, +3.3V : 메인보드에 있는 IC 칩 등의 회로를 작동시키기 위한 전압이다. 메모리나 PCI 슬롯, 플로피디스크 드라이브, 하드디스크 등의 제어에도 사용된다

CPU 코어에도 사용하지만 파워서플라이에서 직접 공급하는 것이 아니라 메인보드의 레귤레이터를 통해 공급된다.

CMOS 셋업에서 CPU가 사용하는 코어 전압을 설정할 수 있다.

 

+12V : 하드디스크나 플로피디스크 드라이브 등 드라이브의 모터를 구동시키는 데 사용된다.

PCI 슬롯에도 공급되고 각 카드 등에 장착된 냉각팬을 구동시키는 데도 사용된다.

-5V, -12V : 거의 사용되지 않는 전압이지만 일부 회로의 신호 전달이나 케이스에 붙어 있는 스피커의 소리를 내는 앰프 등에 사용된다. -5V는 마이크로 ATX에 사용되는 규격이다.

 

★ 윈도우나 애플리케이션으로 컴퓨터 전원을 켜거나 끄기 위한 전압이다. CMOS 셋업의 'Power Management Setup'에서 이 전압의 사용 유무를 설정한다시스템이 정지된 상태에서도 +5VSB는 컴퓨터에 공급된다.




+ Recent posts