Tập bài giảng Kiến trúc máy tính (Phần 2)

pdf 106 trang Gia Huy 17/05/2022 2830
Bạn đang xem 20 trang mẫu của tài liệu "Tập bài giảng Kiến trúc máy tính (Phần 2)", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdftap_bai_giang_kien_truc_may_tinh_phan_2.pdf

Nội dung text: Tập bài giảng Kiến trúc máy tính (Phần 2)

  1. CHƢƠNG 4 : BỘ NHỚ VÀ CÁC HỆ THỐNG LƢU TRỮ 4.1. Khái niệm và phân cấp bộ nhớ 4.1.1 Khái niệm Bộ nhớ là một trong các thành phần quan trọng nhất của máy tính điện tử, được dùng để lưu trữ các lệnh sẽ được thực hiện cũng như dữ liệu. Bộ nhớ được xây dựng từ các phần tử nhớ cơ bản như flip-flop hay các tụ điện. 4.1.2. Phân cấp bộ nhớ Các đặc tính như lượng thông tin lưu trữ, thời gian thâm nhập bộ nhớ, chu kỳ bộ nhớ, giá tiền mỗi bit nhớ khiến ta phải phân biệt các cấp bộ nhớ: các bộ nhớ nhanh với dung lượng ít đến các bộ nhớ chậm với dung lượng lớn (hình 4.1) Hình 4. 1. Các cấp bộ nhớ - Tập thanh ghi: Các thanh ghi bên trong CPU có thể coi là một trường hợp đặc biệt của bộ nhớ. Mức nhớ này truy nhập nhanh nhất và dễ dàng nhất, do vậy đây có thể xem là mức 0 của toàn bộ sự phân cấp bộ nhớ. - Bộ nhớ Cache: Cache được dùng để tăng tốc độ trao đổi thông tin giữa CPU và bộ nhớ chính, nên được gọi là bộ nhớ đệm truy nhập nhanh. - Bộ nhớ chính (Main memory): là hệ thống nhớ được địa chỉ hoá trực tiếp bởi CPU, bao gồm bộ nhớ ROM, RAM. - Bộ nhớ ngoài (External Memory) Là hệ thống nhớ chứa thư viện chương trình và dữ liệu. Có dung lượng lớn nhưng tốc độ chậm. Dung lượng: Từ vài chục MB đến vài GB. Nhận xét Ta thấy trên hình 4.1, từ trái sang phải các cấp bộ nhớ có đặc điểm sau: - Dung lượng giảm dần. - Tộc độ giảm dần. - Tần suất CPU truy nhập giảm dần. 112
  2. - Giá thành /1 bit giảm dần. Các đặc tính chính của các cấp bộ nhớ dẫn đến hai mức chính là: mức cache - bộ nhớ trong và mức bộ nhớ ảo (bao gồm bộ nhớ trong và không gian cấp phát trên đĩa cứng) (hình 4.2). Cách tổ chức này trong suốt đối với người sử dụng. Người sử dụng chỉ thấy duy nhất một không gian định vị ô nhớ, độc lập với vị trí thực tế của các lệnh và dữ liệu cần thâm nhập. Hình 4. 2. Hai mức bộ nhớ Các cấp bộ nhớ giúp ích cho người lập trình muốn có một bộ nhớ thật nhanh với chi phí đầu tư giới hạn. Vì các bộ nhớ nhanh đắt tiền nên các bộ nhớ được tổ chức thành nhiều cấp, cấp có dung lượng ít thì nhanh nhưng đắt tiền hơn cấp có dung lượng cao hơn. Mục tiêu của việc thiết lập các cấp bộ nhớ là người dùng có một hệ thống bộ nhớ rẻ tiền như cấp bộ nhớ thấp nhất và gần nhanh như cấp bộ nhớ cao nhất. Các cấp bộ nhớ thường được lồng vào nhau. Mọi dữ liệu trong một cấp thì được gặp lại trong cấp thấp hơn và có thể tiếp tục gặp lại trong cấp thấp nhất. Chúng ta có nhận xét rằng, mỗi cấp bộ nhớ có dung lượng lớn hơn cấp trên mình, ánh xạ một phần địa chỉ các ô nhớ của mình vào địa chỉ ô nhớ của cấp trên trực tiếp có tốc độ nhanh hơn, và các cấp bộ nhớ phải có cơ chế quản lý và kiểm tra các địa chỉ ánh xạ. 4.2. Các đặc điểm của bộ nhớ Các đặc trưng chính của hệ thống nhớ máy tính bao gồm: Vị trí, dung lượng, đơn vị truyền, phương pháp truy nhập, hiệu suất, kiểu vật lý, đặc tính vật lý, cách tổ chức. Vị trí (Location) 113
  3. Bộ nhớ máy tính bao gồm cả hai loại bộ nhớ trong và ngoài. Bộ nhớ trong của máy tính thường được đề cập đến như bộ nhớ chính. Bộ nhớ ngoài của máy tính gồm các thiết bị lưu trữ ngoại vi, như đĩa và băng từ. Dung lƣợng (Capacity) Với bộ nhớ trong, dung lượng thường được biểu diễn dưới dạng byte hay word. Các độ dài word phổ biến là 8, 16 và 32 bit. Bộ nhớ ngoài có dung lượng được biểu thị theo byte. Đơn vị truyền (Unit of Transfer) Với bộ nhớ trong, đơn vị truyền bằng với số đường dữ liệu vào/ ra khỏi mô-đun bộ nhớ. Giá trị ngày thường bằng với độ dài của một word, nhưng cũng có thể khác. - Truyền theo từ nhớ (bộ nhớ trong). - Truyền theo khối nhớ (bộ nhớ ngoài). Phƣơng pháp truy nhập (Access Method) Đây là một trong những yếu tố rõ nhất giúp phân biệt các kiểu bộ nhớ. Có bốn loại phương pháp truy nhập. - Truy nhập tuần tự (băng từ): Bộ nhớ được tổ chức thành các đơn vị dữ liệu gọi là bản ghi. Việc truy nhập phải được thực hiện theo một dãy tuyến tính cụ thể. Thông tin địa chỉ được lưu trữ được dùng để phân tách các bản ghi và hỗ trợ quá trình tìm kiếm lấy thông tin. Một bộ phận đọc/ ghi dùng chung được sử dụng. Bộ phận này phải được di chuyển từ vị trí hiện thời của nó đến vị trí được yêu cầu, quét qua và từ chối các bản ghi trung gian. Do đó, thời gian để truy nhập một bản ghi tùy ý biến đổi khá cao. Các đơn vị băng từ là các đơn vị có dạng truy nhập tuần tự - Truy nhập trực tiếp (đĩa từ, đĩa quang): Cũng như với truy nhập tuần tự, truy nhập trực tiếp bao gồm việc dùng chung một bộ phận đọc/ ghi. Tuy nhiên, các khối hay bản ghi riêng lẻ có một địa chỉ duy nhất dựa trên vị trí vật lý. Việc truy nhập được thực hiện thông qua truy nhập trực tiếp cộng với tìm kiếm tuần tự, đếm hay chờ để đến được vị trí cuối cùng. Một lần nữa, thời gian truy nhập là biến đổi. - Truy nhập ngẫu nhiên (bộ nhớ chính): Mỗi trị trí khả định địa chỉ trong bộ nhớ có một cơ chế định địa chỉ vật lý duy nhất. Thời gian truy nhập một vị trí cho trước độc lập với dãy các truy nhập trước đó và không thay đổi. Do đó, bất kỳ một vị trí nào cũng có thể được chọn ngẫu nhiên và được định địa chỉ cũng như truy nhập trực tiếp. - Truy nhập liên kết (bộ nhớ Cache): Đây là kiểu truy nhập ngẫu nhiên bộ nhớ cho phép thực hiện việc so sánh các ví trí bit có yêu cầu trong một word phục vụ cho việc đối chiếu đặc biệt nào đó, và có thể thực hiện thao tác này cùng một lúc cho tất cả các word. Do đó, một word được trích ra dựa trên một phần nội dung của nó chứ không phải dựa trên địa chỉ. Tương tự với phương thức truy nhập ngẫu nhiên thông 114
  4. thường, mỗi vị trí nhớ có cơ chế định địa chỉ riêng, và thời gian lấy thông tin không đổi, độc lập với vị trí hoặc khuôn dạng truy nhập trước đó. Hiệu suất (Performance) Đứng trên quan điểm người sử dụng, hai đặc trưng quan trọng nhất của bộ nhớ là dung lượng và hiệu suất vận hành. Có 3 tham số hiệu suất được sử dụng: - Thời gian truy nhập: +) Đối với bộ nhớ truy nhập ngẫu nhiên thì thời gian truy nhập chính là thời gian thực hiện thao tác đọc hoặc ghi. +) Đối với bộ nhớ truy nhập không ngẫu nhiên thì thời gian truy nhập chính là thời gian để đặt cơ chế ghi hoặc đọc ở một vị trí mong muốn. - Chu kỳ truy nhập: Khái niệm này được sử dụng cho bộ nhớ truy nhập ngẫu nhiên. Chu kỳ truy nhập bằng thời gian giữa hai lần truy nhập. Chu kỳ truy nhập bằng thời gian truy nhập cộng với thời gian trước khi truy nhập lần tiếp theo có thể bắt đầu. - Tốc độ truyền: Là tộc độ truyền dữ liệu đến hoặc ra khỏi bộ nhớ. Đối với bộ nhớ truy nhập ngẫu nhiên thì tốc độ truyền bằng1 chia cho chu kỳ truy nhập (1/chu kỳ truy nhập). Đối với bộ nhớ truy nhập không ngẫu nhiên thì tốc độ truyền bằng số bit truyền được trong 1 giây (s). Kiểu vật lý của bộ nhớ (Physical Type) - Bộ nhớ bán dẫn. - Bộ nhớ từ: Băng từ và đĩa từ. - Bộ nhớ quang: Đĩa quang. Các đặc trưng vật lý (Physical Characteristics) - Bộ nhớ khả biến hoặc không khả biến. + Bộ nhớ khả biến: Mất dữ liệu khi ngắt nguồn: RAM. + Bộ nhớ không khả biến: Không mất dữ liệu khi ngắt nguồn: ROM, băng từ, đĩa từ. - Bộ nhớ xoá được hoặc không xoá được. Cách tổ chức (Organization) Là cách sắp xếp vật lý các hệ thống nhớ để tạo nên các từ nhớ và sắp xếp các từ nhớ để tạo nên Mô-đun nhớ. Với từng kiểu vật lý khác nhau sẽ có cách tổ chức khác nhau. 4.3. Bộ nhớ chính ROM và RAM là bộ nhớ chính (bộ nhớ trong) của máy tính thuộc khối bộ nhớ và được sản xuất theo công nghệ bán dẫn. ROM là bộ nhớ chỉ đọc, không mất thông tin khi mất điện. ROM chứa chương trình BIOS, có trên mainboard và các thiết bị ngoại vi. RAM là bộ nhớ truy xuất ngẫu nhiên, lưu trữ dữ liệu tạm thời. Khi mất điện, dữ liệu trên RAM sẽ mất. Sau đây chúng ta sẽ xem xét kỹ hai bộ nhớ chính này. 115
  5. 4.3.1. Bộ nhớ RAM (Random Access Memory) 4.3.1.1. Công nghệ RAM Công nghệ RAM có hai loại chính: RAM tĩnh (Static RAM) và RAM động (Dynamic RAM). RAM động (DRAM) được chế tạo với các ô nhớ để chứa dữ liệu là điện áp trên các tụ điện. Điện áp có hay không có ở trên tụ điện biểu hiện hai trạng thái 1 và 0. Vì tụ điện có tính chất phóng điện nên RAM động cần phải được làm tươi (refresh) để bảo dưỡng dữ liệu trên đó. Đối với RAM tĩnh (SRAM) các giá trị nhị phân được nhớ trên các mạch lật truyền thống. Vì vậy dữ liệu trên đó là ổn định. Do công nghệ như vậy nên DRAM có mật độ ô nhớ dày đặc hơn và rẻ tiền hơn SRAM, còn về tốc độ thì SRAM nhanh hơn DRAM rất nhiều. DRAM thích hợp cho bộ nhớ có dung lượng lớn. Vì vậy, công nghệ SRAM được dùng để chế tạo các bộ nhớ Cache, trong khi công nghệ DRAM được dùng để chế tạo các bộ nhớ chính RAM. Cấu tạo phần tử nhớ 1 bit của SRAM Phần tử nhớ 1 bit Thanh ghi chốt (Latch) là dạng đon giản của flip-flop, được xây dựng từ 2 cổng NAND hoặc 2 cổng NOR. Sự thay đổi trạng thái của thanh ghi chốt có thể xảy ra trong thời gian kéo dài của xung đồng hồ chứ không phải trong thời gian sườn xung đồng hồ, người ta gọi đó là sự chuyển mạch theomức. Các thanh ghi chốt 1 bit có thể được sử dụng làm các phần tử nhớ cơ bản xây dựng nên bộ nhớ của máy tính. Nó có 2 trạng thái cân bằng ổn định được sử dụng để biểu diễn 2 giá trị nhị phân 0 và 1. Khi phần tử nhớ đã được thiết lập giá trị thì nó nhớ mãi giá trị đó cho đến khi chúng ta thiết lập cho nó 1 giá trị mới. Vì thế người ta gọi nó là phần tử nhớ RAM tĩnh (Static Random Access Memory). Bộ nhớ được xây dựng từ các phần tử 1 bit như vậy được gọi là bộ nhớ RAM tĩnh. Hình 4.3 là sơ đồ mạch điện của 1 phần tử nhớ SRAM 1 bit và các mạch điện cũng nhu các tín hiệu để điều khiển sự hoạt động của nó. Các đường dây truyền tín hiệu trên sơ đồ ý nghĩa như sau: - Din: Đầu vào thông tin. - Dout: Đầu ra thông tin. - Yi,Xj : là các dây địa chỉ. Nếu ta tổ chức 1 mạng nhớ hình chữ nhật, trong đó phần tử nằm ở hàng i cột j thì Yi sẽ được nối với hàng i của ma trận, còn Xj sẽ được nối với cột j của ma trận. - WE (Write Enable) : Tín hiệu cho phép ghi, khi WE=1, cho phép ghi thông tin Din vào phần tử nhớ, lúc này đầu ra Dout có trở kháng cao vì nó được nối với đầu ra của bộ đệm ba trạng thái đang ở trạng thái có trở kháng cao), có thể coi Dout bị cách li khỏi phần tử nhớ. Khi WE=0, cho phép đọc thông tin từ phần tử nhớ, bộ đệm 116
  6. ba trạng thái đóng (trở kháng thấp), Dout được nối với điểm H và có giá trị bằng Q là nội dung phần tử nhớ, đồng thời E=B=0 làm cho F=G=1 dẫn đến Q không đổi trạng thái, tức là Q không bị phụ thuộc vào Din. - CS (chip Select) : Tín hiệu chọn chip, đôi khi còn được kí hiệu là CE (chip enable). Khi có nhiều chip nhớ RAM cùng nối với đường tín hiệu chung (Din, Dout) thì đầu vào CS có nhiệm vụ chọn xem chip RAM nào được truyền thông tin trên bus số liệu. Điều kiện ghi : CS=1, Xi=1, Yj=1, WE=1, khi đó Q sẽ được thiết lập bằng Din. Điều kiện đọc : CS=1, Xi=1, Yj=1, WE=0, khi đó Dout sẽ nhận giá trị bằng Q. Khi có các phần tử nhớ 1 bit có cấu tạo như trên, rất dễ kết hợp chúng lại với nhau để tạo nên các bộ nhớ có dung lượng từ (word) và kích thước từ như mong muốn. Hình 4. 3. Mạch điện của phần tử SRAM 1 bit Cấu tạo phần tử nhớ 1 bit của DRAM Như chúng ta đã biết các phần tử nhớ RAM tĩnh (SRAM) được cấu tạo từ các flip-flop, 1 phần tử SRAM 1 bit như hình 4.3 được cấu tạo bởi 6 cổng NAND và 1 bộ đệm 3 trạng thái. Ngày nay người ta sử dụng các phần tử DRAM đơn giản hơn. Hình 4. 4. Mạch điện của phần tử nhớ DRAM 1 bit Để bố trí được số phần tử nhớ lớn nhất trong 1 vi mạch, mỗi phần tử nhớ phải được chế tạo sao cho đơn giản nhất. Phần tử nhớ RAM động (DRAM) mà chúng ta tìm 117
  7. hiểu dưới đây chỉ cần 1 transistor cho 1 bit thông tin, chính vì vậy có thể bố trí với mật độ rất cao và có giá thành rẻ. Trong phần tử nhớ này người ta thay flip-flop bằng một tụ điện C, giá trị nhớ trong phần tử nhớ này chính là điện tích nạp trên tụ điện. Ta có thể sử dụng trạng thái tụ được nạp, tức là trên tụ điện C có một điện áp lớn hơn giá trị nhất định nào đó, biểu diễn giá trị 1 của bit, còn trạng thái không được nạp biểu diễn giá trị 0. Nguyên lý cấu tạo của một phần tử DRAM được minh họa trên hình 4.4. Bộ nhớ DRAM được tổ chức thành một ma trận nhớ (thường là ma trận vuông), trong đó dây từ (Word Line) là một trong các dây hàng của ma trận, còn dây bit (Bit Line) là một trong các dây cột. Phần tử nhớ được đặt ở giao điểm của các dây hàng và cột. Transistor T là một transistor trường (Field Efect Transistor) đóng vai trò một chuyển mạch điện tử. T có 3 cực là cực cổng G (gate), cực máng D (Drain) và cực nguồn S (Source), trong đó G là cực điều khiển, D sẽ được nối với S khi G có mức điện áp cao (1) so với S, ngược lại thì điện trở giữa D và S sẽ rất lớn. - Ghi dữ liệu (Write) Khi dây từ có mức tích cực (1), T ở trạng thái mở, nối tụ điện C với dây bit. Nếu thao tác là ghi thì giá trị cần ghi phải đặt trên dây bit. Nếu giá trị đó là 1 thì tụ C sẽ được nạp tới điện áp ứng với giá trị 1 trên dây bit, còn nếu giá trị đó là 0 thì tụ C sẽ bị phóng hết điện tích, tức là có giá trị 0. - Đọc dữ liệu (Read) Việc đọc phức tạp hơn ghi một chút do điện tích trên tụ C ứng với giá trị cần đọc rất nhỏ. Trước khi đặt dây từ lên mức tích cực, cần phải đặt lên dây bit điện áp bằng 1/2 mức chênh lệch giữa điện áp ứng với mức 0 và điện áp ứng với mức 1. Điện áp trên tụ sẽ làm cho điện áp dây bit thay đổi một chút theo chiều hướng tăng hoặc giảm, tùy thuộc vào việc nó đang nhớ giá trị 1 (high) hay 0 (low). Sự thay đổi nhỏ của điện áp trên dây bit sẽ được truyền tới đầu vào của một bộ khuếch đại nhạy, tại đầu ra của nó ta nhận được điện áp ứng với giá trị của bit chứa trên tụ C. - Làm tƣơi (Refresh) Vì mọi tụ điện đều có quá trình rò rỉ điện tích và transistor T mắc nối tiếp với nó dù ở trạng thái cấm cũng có một điện trở rò nhất định, cho nên sau khi được nạp, điện tích trên tụ C, sau một khoảng thời gian nhất định sẽ làm mất thông tin mà C chứa. Chính vì vậy cần phải nạp điện lại cho tụ C trước khi điện áp trên tụ giảm thấp hơn một ngưỡng nào đó. Việc này được gọi là làm tươi. Để làm tươi bộ nhớ DRAM, cần phải đọc nội dung của nó rồi viết trở lại. Việc làm tươi cần phải được tiến hành đều đặn theo một chu kỳ nhất định, gọi là chu kỳ làm tươi. Tên gọi RAM động (Dynamic RAM) xuất phát từ hoạt động này. 118
  8. Trong các chip DRAM trước đây mạch điện bổ sung để thực hiện làm tươi thường ở ngoài chip nhớ. Ngày nay các mạch thực hiện làm tươi thường được chế tạo nằm ngay bên trong chip nhớ, nhờ đó chip nhớ loại này vừa có dung lượng cao vừa có giao diện đơn giản, chúng được gọi là quasi-static RAM. 4.3.1.2. Bộ nhớ chính RAM Bộ nhớ chính RAM của máy tính được chế tạo theo công nghệ DRAM, vì vậy đặc trưng của bộ nhớ RAM là nó có thể đọc dữ liệu từ bộ nhớ và ghi một cách dễ dàng và nhanh chóng dữ liệu mới vào bộ nhớ. Quá trình đọc và ghi đều được thực hiện bằng tín hiệu điện. RAM cần phải được cung cấp bằng một nguồn không đổi. Nếu nguồn bị ngắt thì dữ liệu bị mất. Do vậy RAM là bộ nhớ tạm thời. Hiện nay bộ nhớ RAM có 3 loại phổ biến là DDR, DDR2 và DDR3 dựa trên thiết kế SDRAM (bộ nhớ truy cập ngẫu nhiên động đồng bộ - Synchronous Dynamic Random Access Memory), tức là sử dụng tín hiệu xung nhịp để đồng bộ hóa mọi thứ. DDR là viết tắt của Double Data Rate (tốc độ dữ liệu gấp đôi), tức truyền được hai khối dữ liệu trong một xung nhịp. Như vậy bộ nhớ DDR có tốc độ truyền dữ liệu cao gấp đôi so với những bộ nhớ có cùng tốc độ xung nhịp nhưng không có tính năng này (được gọi là bộ nhớ SDRAM, hiện không còn sử dụng cho PC nữa). Nhờ tính năng này mà trên nhãn của những thanh nhớ thường ghi tốc độ tốc gấp đôi so với tốc độ đồng hồ xung nhịp thực. Ví dụ bộ nhớ DDR2 - 800 làm việc ở tốc độ 400 MHz, DDR2 - 1066 và DDR3 - 1066 làm việc ở tốc độ 533 MHz, DDR3 - 1333 ở 666.6 MHz Trên mỗi thanh RAM (mô-đun nhớ) đều có các chip nhớ (có thể là 4, 8, 16 chip nhớ), các chip nhớ được nối với nhau thông qua vi mạch. Dung lượng của bộ nhớ RAM chính là tổng dung lượng của các chip nhớ này. Trong ví dụ ở hình 4.5 là một bộ nhớ RAM của hãng Kingston, thuộc thế hệ DDRAM2, có dung lượng 2GB và có 16 chip nhớ (mỗi mặt của RAM có 8 chip nhớ, mỗi chip nhớ có dung lượng 128MB). Hình 4. 5. Bộ nhớ DDRAM2 Những thanh nhớ (mô-đun) sử dụng một cái tên khác: PCx-zzzz, trong đó x là thế hệ công nghệ, còn zzzz là tốc độ truyền tải tối đa trên lý thuyết (còn gọi là băng thông tối đa). Con số này cho biết bao nhiêu byte dữ liệu có thể được truyền từ mạch điều khiển bộ nhớ sang mô-đun bộ nhớ trong mỗi xung nhịp đồng hồ . 119
  9. Bài toán này rất dễ giải bằng cách nhân xung nhịp DDR tính bằng MHz với 8, ta sẽ có tốc độ truyền tải tối đa trên lý thuyết tính bằng MB/giây. Ví dụ, bộ nhớ DDR2- 800 có tốc độ truyền tải tối đa trên lý thuyết là 6,400 MB/giây (800 x 8) và mô-đun bộ nhớ mang tên PC2-6400. Trong một số trường hợp, con số này được làm tròn. Ví dụ như bô nhớ DDR3-1333 có tốc độ truyền tải tối đa trên lý thuyết là 10,666 MB/giây nhưng mô-đun bộ nhớ của nó lại có tên PC3-10666 hoặc PC3-10600 tùy nhà sản xuất. Những con số này chỉ là số tối đa trên lý thuyết, và trên thực tế chúng không bao giờ đạt đến, bởi bài toán chúng ta đang tính có giả thiết rằng bộ nhớ sẽ gửi dữ liệu đến mạch điều khiển bộ nhớ theo từng xung nhịp một, mà điều này thì không xảy ra. Mạch điều khiển bộ nhớ và bộ nhớ cần trao đổi lệnh (ví dụ như lệnh hướng dẫn bộ nhớ gửi dữ liệu được chứa tại một vị trí nhất định) và trong suốt thời gian này bộ nhớ sẽ không gửi dữ liệu. Trên đây là lý thuyết cơ bản về bộ nhớ DDR. Sau đây chúng ta sẽ so sánh 3 loại bộ nhớ RAM này. Hình 4. 6. Hình dáng các loại DDRAM Tốc độ (Speed) Đây là thông số được người dùng quan tâm nhất. Đối với DDR thì có hai cách gọi theo tốc độ MHz hoặc theo băng thông. Ví dụ, khi nói DDR333 tức là thanh RAM đó mặc định hoạt động ở tốc độ 333MHz nhưng cách gọi PC2700 thì lại nói về băng thông RAM, tức là khi chạy ở tốc độ 333Mz thì nó sẽ đạt băng thông là 2700MB/s (trên lý thuyết). Thường ở Việt Nam thông dụng các loại RAM có bus 333 và 400, những loại có bus cao hơn thường xuất hiện ở những loại cao cấp như Kingston HyperX, Corsair, Mushkin LV. Một trong những khác biệt chính giữa DDR, DDR2 và DDR3 là tốc độ truyền dữ liệu lớn nhất của từng thế hệ. Dưới đây là danh sách tốc độ chung nhất cho từng thế hệ. Một số nhà sản xuất đã tạo ra được những loại chip lớn hơn cả tốc độ trong bảng. 120
  10. Ví dụ như các bộ nhớ đặc biệt hướng tới giới overclock. Những xung nhịp có đuôi 33 hoặc 66MHz thực ra đã được làm tròn (từ 33.3333 và 66.6666). Hình 4. 7. Tốc độ của DDR2, DDR3 Điện áp Bộ nhớ DDR3 hoạt động ở điện áp thấp hơn so với DDR2. DDR2 lại dùng điện áp thấp hơn DDR. Như vậy bộ nhớ DDR3 sẽ tiêu thụ ít điện hơn DDR2, và DDR2 tiêu thụ ít hơn DDR. Thường thì bộ nhớ DDR sử dụng điện 2.5 V, DDR2 dùng điện 1.8 V và DDR3 là 1.5 V (mặc dù các mô-đun cần đến 1.6 V hoặc 1.65 V rất phổ biến và những chip chỉ yêu cầu 1.35 V trong tương lai cũng không phải là hiếm). Một số mô- đun bộ nhớ có thể yêu cầu điện áp cao hơn trong bảng, nhất là khi bộ nhớ hỗ trợ hoạt động ở tốc độ xung nhịp cao hơn tốc độ chính thức (ví dụ như bộ nhớ để overclock). 121
  11. Hình 4. 8. Điện áp của DDR2, DDR3 Thời gian trễ CAS Latency là khái niệm mà người dùng thắc mắc nhiều nhất. Trước đây, khi chọn RAM, người mua thường chỉ quan tâm tới tốc độ hoạt động như 100MHz hay 133MHz. Thời gian gần đây, khái niệm CAS đang dần được người dùng để ý bởi nó đóng vai trò khá quan trọng vào tốc độ xử lý tổng thể của hệ thống; đặc biệt trong ép xung. CAS là viết tắt của “Column Address Strobe” (địa chỉ cột). Một thanh DRAM được coi như một ma trận của các ô nhớ và mỗi ô nhớ sẽ có địa chỉ cột CAS và địa chỉ hàng RAS (Row Adress Strobe). Nhưng do nguyên lý hoạt động của DRAM là truyền dữ liệu xuống chân nên RAS thường không quan trọng bằng CAS. Thời gian trễ là khoảng thời gian mà mạch điều khiển bộ nhớ phải đợi từ lúc yêu cầu lấy dữ liệu cho đến lúc dữ liệu thực sự được gửi tới đầu ra. Nó còn được gọi là CAS Latency hoặc đơn giản là CL. Con số này được viết theo đơn vị chu kỳ xung nhịp. Ví dụ một bộ nhớ có CL3 tức là mạch điều khiển bộ nhớ phải đợi 3 chu kỳ xung nhịp từ lúc truy vấn cho đến khi dữ liệu được gửi. Với một bộ nhớ CL5, mạch điều khiển bộ nhớ phải đợi 5 chu kỳ xung nhịp Vì thế cần sử dụng những mô-đun có CL thấp nhất có thể. Để hiểu khái niệm này, chúng ta sẽ cùng điểm nhanh qua cách thức bộ nhớ làm việc, đầu tiên chipset sẽ truy cập vào hàng ngang (ROW) của ma trận bộ nhớ thông qua việc đưa địa chỉ vào chân nhớ (chân RAM) rồi kích hoạt tín hiệu RAS. Chúng ta sẽ phải chờ khoảng vài xung nhịp hệ thống (RAS to CAS Delay) trước khi địa chỉ cột được đặt vào chân nhớ và tín hiệu CAS phát ra. Sau khi tín hiệu CAS phát đi, chúng ta tiếp tục phải chờ một khoảng thời gian nữa (đây chính là CAS Latency) thì dữ liệu sẽ được tìm thấy. Điều đó cũng có nghĩa là với CAS 2, chipset phải chờ 2 xung nhịp trước khi lấy được dữ liệu và với CAS3, thời gian chờ sẽ là 3 xung nhịp hệ thống. Tuy nhiên, CAS2 không có nghĩa nhanh hơn CAS3 tới 33 vì có nhiều yếu tố ảnh hưởng đến hiệu năng tổng thể của bộ nhớ. 122
  12. Hình 4. 9. Thời gian trễ của DDR2, DDR3 Cuối cùng ta sẽ đến với sự khác biệt về thiết kế bên ngoài. Mô-đun bộ nhớ cho từng thế hệ DDR có sự khác nhau về thông số và không thể cài mô-đun DDR2 lên khe cắm DDR3 được. Ta cũng không thể nâng cấp từ DDR2 lên DDR3 mà không thay thế bo mạch chủ và sau đó là CPU, hay tương tự với DDR và DDR2. Mô-đun DDR2 và DDR3 có cùng số chân, tuy nhiên khe cắm nằm ở vị trí khác nhau. Hình 4. 10. Số chân nối của DDR, DDR2, DDR3 4.3.2. Bộ nhớ ROM ROM (Read Only Memory) là bộ nhớ giữ thông tin cố định, không thay đổi nội dung ngay cả khi ngắt nguồn điện nuôi. ROM chứa chương trình BIOS, có trên mainboard và các thiết bị ngoại vi. Có thể chia ROM thành 3 loại chính sau: - ROM mặt nạ (MROM - Maskable ROM), nội dung của nó được cố định trong quá trình chế tạo vi mạch và không thể thay đổi được sau đó. - ROM có thể nạp chương trình (PROM – Programmable ROM), là loại ROM mà người sử dụng có thể sử dụng một thiết bị chuyên dụng để nạp nội dung cho nó, việc này thường được gọi là “đốt ROM”. Sau khi đã nạp chương trình, nội dung của PROM cũng không thể thay đổi được nữa. - ROM có thể xóa (Erasable ROM), là loại ROM mà người sử dụng có thể nạp nội dung cho nó bằng thiết bị chuyên dụng, tuy nhiên người sử dụng sau này có thể xóa nội dung cũ để ghi nội dung mới. Loại ROM này thường là EPROM, EAROM. 4.3.2.1. ROM mặt nạ Với ROM được lập trình bằng mặt nạ, nhà sản xuất đã ghi (lập trình) các vị trí nhớ của nó theo yêu cầu của khách hàng. Một phím âm bản, gọi là mặt nạ được sử dụng để kiểm soát các mối nối điện trên chip. 123
  13. Vì mặt nạ rắt đắt nên loại ROM này không được mang lại hiệu quả kinh tế. Nhược điểm của loại ROM này là nó không cho phép lập trình lại, vì vậy nó là dạng ROM đúng nghĩa. Tuy nhiên ROM được lập trình bằng mặt nạ vẫn chỉ là phương pháp tiết kiệm nhất khi cần trang bị số lượng lớn ROM cùng loại. ROM mặt nạ thường tổ chức dưới dạng ma trận. Trạng thái có hay không có đi- ốttại vị trí (i,j) của ma trận được sử dụng để biểu diễn 1 bit dữ liệu là 1 hay 0. Mỗi hàng i của ma trận đi-ốt giống như 1 thanh ghi lưu trữ 1 từ (word), các dây địa chỉ Ai được sử dụng để chọn lấy 1 từ, đưa nội dung của nó ra ngoài qua các dây dữ liệu ra. Hình 4.11b là 1 “ô nhớ” của ma trận đi-ốt. Hình 4. 11. Cấu tạo MROM Việc ghi chương trình cho ROM được thực hiện bằng cách loại bỏ hoặc để lại đi-ốt ở giao điểm của dây hàng và dây cột của ma trận. • Nếu đi-ốt tại hàng i, cột j được giữ lại, khi mức điện áp trên dây địa chỉ là 1 (cao), đi-ốt được phân cực thuận sẽ có điện trở rất nhỏ, vì vậy Dj=Ai=1. • Nếu đi-ốt tại hàng i, cột j đã bị loại bỏ, dù mức điện áp trên dây địa chỉ là cao, nó cũng không ảnh hưởng tới dây dữ liệu ra Dj lúc này được “nối đất” (low,0) qua một điện trở. 124
  14. Bảng 4. 1. Bảng chân lý của MROM A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 D3 D2 D1 D0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 Các công nghệ MOS và công nghệ lưỡng cực đều được sử dụng để chế tạo ROM. Thay cho mỗi đi-ốt người ta có thể dùng 1 transistor lưỡng cực (Bo-polar transistor) hay 1 transistor đơn cực (MOSFET), tuy vậy nguyên tắc vẫn không có gì thay đổi. Thời gian truy cập giữa 2 loại ROM lưỡng cực và MOS là khác nhau, Rom lưỡng cực (Bo-polar ROM) là: 50-90ns, nó có tác động nhanh hơn, khả năng kích thích tốt hơn. Đối với ROM theo công nghệ MOS (MOS ROM) thời gian tác động lớn gấp 10 lần (chậm hơn), nhưng kích thước nhỏ hơn, tiêu thụ ít năng lượng hơn. Hình 4. 12. Bộ nhớ MROM có dung lượng 16x1 sử dụng Transistor MOS 4.3.2.2. PROM – ROM có thể nạp chƣơng trình 125
  15. Có cấu tạo giống MROM nhưng ở mỗi vị trí nhớ đều có linh kiện nối với cầu chì. Như vậy khi xuất xưởng các ROM này đều chứa cùng một loại bit (gọi là ROM trắng), lúc sử dụng người lập trình thay đổi các bit mong muốn bằng cách phá vỡ cầu chì ở các vị trí tương ứng với bit đó. Một khi cầu chì đã bị phá vỡ thì không thể nối lại được do đó loại ROM này cho phép lập trình một lần duy nhất để sử dụng, nếu bị lỗi không thể sửa chữa được (hình 4.13). Người ta có thể dùng 2 đi-ốt mắc ngược chiều nhau, mạch không dẫn điện, để tạo bit 0 khi lập trình thì một đi-ốt bị phá hỏng tạo mạch nối tắt, đi-ốt còn lại dẫn điện cho bit 1. Hình 4. 13. Bộ nhớ PROM Thiết bị ghi PROM (PROM Programmer hay PROM Write) Việc ghi PROM đòi hỏi những mạch cung cấp dòng điện đủ lớn để đốt cháy cầu chì ở những bit mong muốn. Các bộ ghi PROM thường là hệ vi xử lí chuyên dụng. Đó là thiết bị tạo ra địa chỉ, số liệu và xung dòng điện ghi cần thết đẻ làm chảy các cầu chì. Mỗi bộ ghi PROM có thể ghi 1 hay 1 họ PROM, có những bộ ghi PROM vạn năng có thể ghi bất kì loại PROM nào bằng cách sử dụng 1 mô-đun riêng. Mô-đun này giúp cho bộ ghi PROM thích hợp ở mức xung ghi, dòng điện và bố trí chân với 1 mạch PROM cụ thể. Giá thành ghi PROM đắt hơn ghi ROM nên PROM chỉ thuận lợi cho những ứng dụng với số lượng nhỏ. 4.3.2.3. ROM lập trình đƣợc, xóa đƣợc bằng tia U.V. (Ultra Violet Erasable Programmable ROM, U.V. EPROM) Đây là loại ROM rất tiện cho người sử dụng vì có thể dùng được nhiều lần bằng cách xóa và nạp lại. Cấu tạo của tế bào nhớ của U.V. EPROM dựa vào một transistor MOS có cấu tạo đặc biệt gọi là FAMOS (Floating Gate Avalanche Injection MOS), EPROM – ROM có thể xóa và ghi lại 126
  16. Hình 4. 14. Cấu tạo EPROM Trên nền chất bán dẫn N pha loãng, tạo 2 vùng P pha đậm (P+) nối ra ngoài cho 2 cực S (Source) và D (Drain). Trong lớp cách điện SiO2 giữa 2 cực người ta cho vào một thỏi Silicon không nối với bên ngoài và được gọi là cổng nổi. Khi nguồn VDD, phân cực ngược giữa cực nền và Drain còn nhỏ, transistor không dẫn, nhưng nếu tăng VDD đủ lớn, hiện tượng thác đổ (avalanche) xảy ra, electron đủ năng lượng chui qua lớp cách điện tới bám vào cổng nổi. Do hiện tượng cảm ứng, một điện lộ P hình thành nối hai vùng bán dẫn P+, transistor trở nên dẫn điện. Khi cắt nguồn, transistor tiếp tục dẫn điện vì electron không thể trở về để tái hợp với lỗ trống. Mỗi tế bào nhớ EPROM gồm một transistor FAMOS nối tiếp với một transistor MOS khác mà ta gọi là transistor chọn, như vậy vai trò của FAMOS giống như là một cầu chì nhưng có thể phục hồi được. Để loại bỏ transistor chọn người ta dùng transistor SAMOS (Stacked Gate Avalanche Injection MOS) có cấu tạo tương tự transistor MOS nhưng có đến 2 cổng nằm chồng lên nhau, một được nối ra cực Gate và một để nổi. Khi cổng nổi tích điện sẽ làm gia tăng điện thế thềm khiến transistor trở nên khó dẫn điện hơn. Như vậy nếu ta chọn điện thế Vc ở khoảng giữa VT1 và VT2 là 2 giá trị điện thế thềm tương ứng với 2 trạng thái của transistor (VT1<Vc<VT2) thì các transistor không được lập trình (không có lớp electron ở cổng nổi) sẽ dẫn còn các transistor được lập trình sẽ không dẫn. Để xóa EPROM, người ta chiếu tia U.V. vào các tế bào trong một khoảng thời gian xác định để electron trên cổng nổi nhận đủ năng lượng vượt qua lớp cách điện trở về vùng nền tái hợp với lỗ trống xóa điện lộ P và transistor trở về trạng thái không dẫn ban đầu. Hình 4. 15. Xóa EPROM 127
  17. Điểm bất tiện của U.V EPROM là cần thiết bị xóa đặc biệt phát tia U.V. và mỗi lần xóa tất cả tế bào nhớ trong một IC nhớ đều bị xóa. Như vậy người sử dụng phải nạp lại toàn bộ chương trình Hình 4. 16. Hình dạng bên ngoài củaEPROM 4.3.2.3. EAROM EAROM (Electrically Alterable Rom) hay còn gọi là EEROM (Electrically Erasablr ROM) có cấu tạo tương tự EPROM nhưng có thể xóa được bằng xung điện. Đây là loại ROM lập trình được và xóa được nhờ xung điện và đặc biệt là có thể xóa để sửa trên từng byte. Các tế bào nhớ EEPROM sử dụng transistor MNOS (Metal Nitride Oxide Semiconductor) có cấu tạo như hình sau: Hình 4. 17. Cấu tạo EAPROM Giữa lớp kim loại nối ra các cực và lớp SiO2 là một lớp mỏng chất Nitrua Silic (Si3N4) - từ 40nm đến 650nm - Dữ liệu được nạp bằng cách áp một điện thế dương giữa cực G và S (khoảng 20 đến 25V trong 100ms). Do sự khác biệt về độ dẫn điện, electron tích trên bề mặt giữa 2 lớp SiO2 và Si3N4, các electron này tồn tại khi đã ngắt nguồn và làm thay đổi trạng thái dẫn điện của transistor. Bây giờ nếu áp một điện thế âm giữa cực G và S ta sẽ được một lớp điện tích trái dấu với trường hợp trước. Như vậy hai trạng thái khác nhau của Transistor có thể thiêt lập được bởi hai điện thế ngược chiều nhau và như vậy các tế bào nhớ được ghi và xóa với 2 xung điện trái dấu nhau. Loại EAROM ER 3400 của hãng General Instruments có dung lượng 1024*4 có thể giữ nội dung nhớ đến 10 năm, không cần nguồn nuôi. Thời gian ghi là 1ms, thời gian xóa là 10ms và thời gian đọc là 900ns. Một nhược điểm của mạch EAROM là cần các mức điện áp nguồn nuôi khác nhau trong khi xóa, ghi và đọc. Ví dụ mạch ER3400 cần 3 mức điện áp nuôi là: +12V, -5V và -30V. 128
  18. Hình 4. 18. Hình dạng và vị trí EEPROM trên bo mạch 4.3.3. Tổ chức bộ nhớ - Trước hết, chúng ta xem xét tổ chức của một ô nhớ. §iÒu khiÓn §iÒu khiÓn Chän D÷ liÖu vµo Chän D÷ liÖu ra ¤ nhí ¤ nhí a) Ghi b) §äc Hình 4. 19. Tổ chức ô nhớ Để đơn giản, ở đây chúng ta coi ô nhớ là phần tử nhớ được 1 bit thông tin. Khi muốn truy xuất dữ liệu từ ô nhớ thì bộ nhớ cần gửi các tín hiệu sau đến bộ nhớ: + Tín hiệu chọn (Chip select) được gửi đến để chọn ô nhớ + Tín hiệu điều khiển chỉ thị việc ghi hay đọc (Write enable/ Read enable) Sau đó, dữ liệu sẽ được đưa lên đường dữ liệu (Data lines) - Tổ chức mạch nhớ Hình 4. 20. Tổ chức mạch nhớ 129
  19. + Address lines: Các đường địa chỉ nối tới bus A, Truyền tín hiệu địa chỉ từ CPU tới mạch nhớ Address decoder: Bộ giải mã địa chỉ Sử dụng địa chỉ để chọn ra và kích hoạt ô nhớ/dòng nhớ cần truy nhập + Data lines: Các đường dữ liệu kết nối với bus D Truyền dữ liệu từ bộ nhớ về CPU và ngược lại Chip select CS: Chân tín hiệu chọn chip Chip nhớ được kích hoạt khi CS=0. Thông thường CPU chỉ làm việc với một chip nhớ tại một thời điểm. + Write enable WE: Chân tín hiệu cho phép ghi Cho phép ghi vào đường nhớ khi WE =0 + Read enable RE: Chân tín hiệu cho phép đọc Cho phép đọc dữ liệu từ đường nhớ khi RE =0 Chúng ta sẽ xem xét một mạch nhớ (chip nhớ) có sơ đồ như hình 4.21 sau đây: Bộ nhớ có 8 đường dây tín hiệu vào và 3 đường dây tín hiệu ra. Ba đường vào cho dữ liệu là , , ; hai đường vào địa chỉ là , và 3 đường tín hiệu điều khiển là CS (Chip select) để chọn chip, RD để phân biệt giữa đọc (read) và ghi (write) và OE (Output enable) để đưa dữ liệu ra. Ba đường ra cho dữ liệu là , và . • Tín hiệu chọn chip CS: Bộ nhớ của máy tính có thể bao gồm nhiều chip như trên, để chọn chip nhớ nào, mạch logic bên ngoài phải đặt cho đầu tín hiệu CS của chip đó có mức=1 và RD=1 để đọc hoặc RD=0 để ghi. • Tín hiệu địa chỉ: Hai đường dây địa chỉ phải được thiết lập giá trị để chỉ ra 1 trong 4 từ 3 bit sẽ được đọc hoặc ghi. Đối với thao tác đọc, các đường dây dữ liệu vào không được dùng đến, từ được chọn được đặt lên các đường dây dữ liệu ra. Đối với thao tác ghi, các bit có mặt trên đường dây dữ liệu vào được nạp vào từu bộ nhớ đã chọn, còn các đường dây dưc liệu ra không được sử dụng. 130
  20. Hình 4. 21. Sơ đồ logic chip nhớ 4x3, mỗi hàng là 1 từ nhớ 3 bit Bốn cổng AND cùng với 4 cổng NOT (mà các đầu váo nối với các dây địa chỉ , ) tạo thành 1 bộ giải mã dùng để chọn từ, mỗi đầu ra của 1 cổng AND điều khiển 1 dây chọn từ (word select line), được đánh số 0 3. - Ghi dữ liệu Khi chip nhớ được chọn để ghi, đường dây được ghi nhãn CS. sẽ có mức cao, làm cho đầu ra của 1 trong 4 cổng AND có nhãn Write gate ở mức tích cực, đó là cổng AND có 1 đầu vào nối với dây word select có mức cao. Tín hiệu này nối với tất cả các đầu vào CK của từ đã được chọn, làm cho dữ liệu trên các dây dữ liệu vào , , nạp vào các flip-flop của từ đó. - Đọc dữ liệu Việc đọc cũng tương tự như việc ghi. Việc giải mã địa chỉ để ghi và đọc hoàn toàn giống nhau. Điểm khác nhau là tín hiệu CS. phải có mức thấp, vì vậy các cổng AND có nhãn Write gate đều có lối ra ở mức thấp, làm cho tín hiệu ở các chân CK của các flip-flop có mức thấp, do đó các flip-flop không thể thay đổi trạng thái. Một trong bốn đường dây chọn từ (word select line) có mức cao, làm cho tại 3 đầu ra 131
  21. của 3 cổng AND mà mỗi cổng có một đầu vào nối với nó có giá trị bằng các giá trị tại đầu ra Q của 3 flip-flop. Như vậy một từ đã đưa được nội dung ra. Mỗi bit dữ liệu của từ này được truyền tới một đầu vào trong số 4 đầu vào của một cổng OR ở phía dưới của hình vẽ. Ba đầu vào còn lại của mỗi cổng OR đều có giá trị 0, vì vậy giá trị của các cổng OR chính là từ mà chúng ta cần đọc. Phƣơng pháp giải mã - Giải mã một bƣớc Để lựa chọn một từ nằm trong hàng i nào đó của bộ nhớ trên (để ghi hoặc đề đọc) ta cần đặt các dây địa chỉ một giá trị địa chỉ n bit chính bằng i. Bộ giải mã địa chỉ chỉ cần một bước là thực hiện được việc chọn lấy 1 từ. Phương pháp tổ chức bộ nhớ trong đó tất cả các phần tử nhớ trên một hàng được gắn với một địa chỉ và được thao tác đọc/ghi đồng thời được gọi là tổ chức bộ nhớ theo kiểu giải mã một bước hoặc tổ chức bộ nhớ theo từ sự chọn tuyến tính. Ưu điểm: có thời gian truy cập ngắn , áp dụng thuận lợi cho các bộ nhớ có dung lượng nhỏ. Nhược điểm: khi dung lượng bộ nhớ lớn thì kích thước bộ giải mã (số chân ra) cũng tăng theo. Thí dụ nếu cần tổ chức bộ nhớ có 1024 từ thì bộ giải mã cần có 10 đường địa chỉ vào và sẽ có 1024 đầu ra để chọn hàng. Các bộ nhớ SRAM thường tổ chức theo phương pháp này. Hình 4. 22. Giải mã 1 bước - Giải mã hai bƣớc Kích thước của bộ giải mã địa chỉ có thể được giảm đi bằng cách tổ chức ma trận nhớ hoặc logic chọn từ cho phép chọn trùng hợp (coincident selection) hay còn gọi là giải mã hai bước. Trong bộ nhớ tổ chức theo kiểu này, các ô nhớ được sắp xếp thành ma trận vuông, các bit trên một hàng được gọi là một từ vật lý, mỗi từ vật lý bao gồm một số từ logic, mỗi từ logic bao gồm một nhóm bit của mỗi từ vật lý được nhận biết và gửi ra cùng một lúc. Trong bộ nhớ sử dụng giải mã 2 bước, bước một để chọn lấy một từ vật lý, bước hai để chọn lấy một từ logic. Bộ giải mã hàng để chọn lấy một 132
  22. từ vật lý và bộ giải mã cột gồm một vài bộ dồn kênh, chọn lấy một từ logic trong từ vật lý đã chọn. Hình 4.23 là một bộ nhớ ROM 2048x8 (2048 từ x 8bit/1 từ). Bộ nhớ này là một ma trận vuông 128x128. Như vậy, nó chứa 128 từ vật lý, mỗi từ vật lý được chọn bởi 7 đường địa chỉ hàng A0 – A6 (27 = 128), bộ giải mã hàng chọn 1 hàng từ 128 hàng. Từ vật lý được chia làm 8 nhóm 16 bit. Nhóm thứ nhất chứa bít cao nhất của 16 từ logic (bit 7), nhóm thứ hai chứa những bit cao tiếp theo (bit 6) của 16 từ logic, Nhóm cuối cùng chứa những bit thấp nhất (bit 0) của 16 từ logic. Như vậy các bộ giải mã cột gồm 8 bộ dồn kênh (multiplexer) 16 đường vào 1 đường ra để cung cấp 1 từ logic 8 bit đưa ra lối ra. Các bit địa chỉ A7, A8, A0, A10 điều khiển những bộ giải mã cột. Hình 4. 23. Bộ nhớ ROM 2048x8 - Giải mã địa chỉ 2 bước - Phƣơng pháp địa chỉ multiplex Trong các ma trận nhớ có số hàng và số cột lớn người ta thường truyền lần lượt địa chỉ hàng và địa chỉ cột trên cùng một số dây, nhờ đó giảm được một nửa số đường địa chỉ. Tuy nhiên cần phải bổ sung thêm một số tín hiệu điều khiển, ngoài ra tốc độ truy cập bộ nhớ cũng giảm theo. Đó là phương pháp địa chỉ multiplex, các chip nhớ DRAM thường dùng phương pháp này. Dùng n đường địa chỉ dồn kênh cho phép truyền 2n bit địa chỉ Tín hiệu chọn địa chỉ hàng RAS (Row Address Select) Tín hiệu chọn địa chỉ cột CAS (Column Address Select) Dung lượng của DRAM: 22n x m bit 133
  23. Hình 4. 24. Chip nhớ 16MB DRAM (4Mx4bit) Hình 4. 25. Hình ảnh các chip nhớ trên bo mạch 134
  24. 4.3.3.2. Thiết kế mô-đun nhớ bán dẫn Dung lượng chip nhớ là 2n x m bit Cần thiết kế để tăng dung lượng: Tăng độ dài ô nhớ (tăng m) Tăng số lượng ô nhớ (tăng n) Kết hợp cả hai loại (tăng m và n) - Tổ chức bộ nhớ tăng độ dài ô nhớ Bài toán tăng độ dài tổng quát: Cho chip nhớ 2n x m bit Cần thiết kế mô-đun nhớ 2n x (k.m) bit Cần ghép nối k chip nhớ (k>=1) Ví dụ 4.1: Cho chip nhớ SRAM: 8K x 4 bit Hãy thiết kế mô-đun nhớ 8K x 8 bit Giải: Dung lượng chip nhớ: 213 x 4 bit Chip nhớ có: 13 đường địa chỉ (A0  A12), 4 đường dữ liệu (D0  D3) Mô-đun nhớ cần có: 13 đường địa chỉ (A0  A12), 8 đường dữ liệu (D0  D7) Hình 4. 26. Mô-đun nhớ 8Kx8 - Tổ chức bộ nhớ tăng số lƣợng ô nhớ Bài toán tăng số lượng tổng quát: Cho chip nhớ 2n x m bit Cần ghép nối mô-đun nhớ: 2k+n x m bit 135
  25. Cần ghép nối 2k chip và phải dùng bộ giải mã k: 2k (bộ giải mã có k đầu vào và 2k đầu ra). Ví dụ 4.2: Cho chip nhớ SRAM: 4K x 4 bit Hãy thiết kế mô-đun nhớ 8K x 4 bit Giải: Dung lượng chip nhớ: 212 x 4 bit Chip nhớ có: 12 đường địa chỉ (A0  A11), 4 đường dữ liệu (D0  D3) Mô-đun nhớ cần có: 13 đường địa chỉ (A0  A12), 4 đường dữ liệu (D0  D3) Hình 4. 27. Mô-đun nhớ 8Kx4 - Tổ chức bộ nhớ tăng độ dài và số lƣợng ô nhớ Bài toán tăng số lượng và độ dài tổng quát: Cho chip nhớ 2n x m bit Cần ghép nối mô-đun nhớ: 2p+n x (q.m) bit Cần ghép nối q.2p chip thành 2p bộ, mỗi bộ q chip và phải dùng bộ giải mã p: 2p (p 2p) Ví dụ 4.3: Cho chip nhớ SRAM: 8K x 4 bit Hãy thiết kế mô-đun nhớ 16K x 8 bit Giải: Dung lượng chip nhớ: 213 x 4 bit Chip nhớ có: 136
  26. 13 đường địa chỉ (A0  A12), 4 đường dữ liệu (D0  D3) Mô-đun nhớ cần có: 14 đường địa chỉ (A0  A13), 8 đường dữ liệu (D0  D7) Hình 4. 28. Mô-đun nhớ 16Kx8 4.4. Bộ nhớ cache 4.4.1. Nguyên lý vận hành của cache Mức cache có cơ cấu vận hành trong suốt đối với bộ xử lý trung tâm CPU. Với thao tác đọc bộ nhớ, CPU gửi một địa chỉ và nhận một dữ liệu từ bộ nhớ trong. Với thao tác ghi bộ nhớ, CPU viết một dữ liệu vào một ô nhớ với một địa chỉ được chỉ ra trong bộ nhớ. Để cho chương trình vận hành bình thường thì cache phải chứa một phần con của bộ nhớ trong để CPU có thể thâm nhập vào các lệnh hoặc dữ liệu thường dùng từ bộ nhớ cache. Do dung lượng của bộ nhớ cache nhỏ nên nó chỉ chứa một phần chương trình nằm trong bộ nhớ trong. Để đảm bảo sự đồng nhất giữa nội dung của cache và bộ nhớ trong thì cache và bộ nhớ trong phải có cùng cấu trúc. Việc chuyển dữ liệu giữa cache và bộ nhớ trong là việc tải lên hay ghi xuống các khối dữ liệu. Mỗi khối chứa nhiều từ bộ nhớ tuỳ thuộc vào cấu trúc bộ nhớ cache. Sự lựa chọn kích thước của khối rất quan trọng cho vận hành của cache có hiệu quả. Hình 4. 29. Trao đổi dữ liệu giữa các thành phần CPU-Cache-Bộ nhớ trong 137
  27. Trước khi khảo sát vận hành của cache, ta xét đến các khái niệm liên quan: Cache hit, cache miss: Cache hit (trúng cache): khi CPU truy nhập một từ nhớ mà từ nhớ đó đang có trong cache. Cache miss (trượt cache): khi CPU truy nhập một từ nhớ mà từ nhớ đó không có trong cache. Xác suất truy cập dữ liệu trong bộ nhớ trong Cache là bộ nhớ nhanh, nó chứa lệnh và dữ liệu thường xuyên dùng đến. Việc lựa chọn lệnh và dữ liệu cần đặt vào cache dựa vào các nguyên tắc sau đây: Một chương trình mất 90% thời gian thi hành lệnh của nó để thi hành 10% số lệnh của chương trình. Nguyên lý trên cũng được áp dụng cho việc thâm nhập dữ liệu, nhưng ít hiệu nghiệm hơn việc thâm nhập lệnh. Như vậy có hai nguyên lý định vị tham số bộ nhớ: nguyên lý định vị không gian và nguyên lý định vị thời gian - Nguyên lý định vị về thời gian: Một mục thông tin vừa được truy nhập thì có xác suất lớn là ngay sau đó nó được truy nhập lại. - Nguyên lý định vị về không gian: Một mục thông tin vừa được truy nhập thì có xác suất lớn là ngay sau đó các mục lân cận sẽ được truy nhập. Tổ chức các cấp bộ nhớ sao cho các lệnh và dữ liệu thường dùng được nằm trong bộ nhớ cache, điều này làm tăng hiệu quả của máy tính một cách đáng kể. Trao đổi thông tin giữa cache và bộ nhớ chính: Bộ nhớ chính được chia thành các Block nhớ Cache được chia thành các Line nhớ Kích thước Line bằng kích thước Block Số lượng Line << Số lượng Block Mỗi Line trong cache được gắn thêm một Tag để xác định Block nào (của bộ nhớ chính) đang ở trong Line Để hiểu được cách vận hành của cache, ta lần lượt xem xét và trả lời các câu hỏi liên quan đến các tình huống khác nhau xảy ra trong bộ nhớ trong. 138
  28. B0 B1 Tag D÷ liÖu B2 L . 0 . L 1 . . . BXL . . . . . . Lm-2 . . Lm-1 . Bé nhí cache Bp-2 Bp-1 Bé nhí chÝnh Hình 4. 30. Trao đổi thông tin giữa bộ nhớ chính và cache Một khối bộ nhớ được đặt vào trong cache theo một trong ba cách sau:  Kiểu tương ứng trực tiếp: Nếu mỗi khối bộ nhớ chỉ có một vị trí đặt khối duy nhất trong cache được xác định theo công thức: K= i mod n Trong đó: K: vị trí khối đặt trong cache i: số thứ tự của khối trong bộ nhớ trong n: số khối của cache Như vậy, trong kiểu xếp đặt khối này, mỗi vị trí đặt khối trong cache có thể chứa một trong các khối trong bộ nhớ cách nhau xn khối (x: 0,1, ,m; n: số khối của cache).  Kiểu hoàn toàn phối hợp: trong kiểu đặt khối này, một khối trong bộ nhớ trong có thể được đặt vào vị trí bất kỳ trong cache. Như vậy, trong kiểu xếp đặt khối này, mỗi vị trí đặt khối trong cache có thể chứa một trong tất cả các khối trong bộ nhớ.  Kiểu phối hợp theo tập hợp: với cách tổ chức này, cache bao gồm các tập hợp của các khối cache. Mỗi tập hợp của các khối cache chứa số khối như nhau. Một khối của bộ nhớ trong có thể được đặt vào một số vị trí khối giới hạn trong tập hợp được xác định bởi công thức: K= i mod s Trong đó: K: vị trí khối đặt trong cache 139
  29. i: số thứ tự của khối trong bộ nhớ trong s: số lượng tập hợp trong cache. Trong cách đặt khối theo kiểu phối hợp theo tập hợp, nếu tập hợp có m khối, sự tương ứng giữa các khối trong bộ nhớ trong và các khối của cache được gọi là phối hợp theo tập hợp m khối. Nếu m = 1 (mỗi tập hợp có 1 khối), ta có kiểu tương ứng trực tiếp. Nếu m = n (n: số khối của cache), ta có kiểu tương hoàn toàn phối hợp. Hiện nay, phần lớn các cache của các bộ xử lý đều là kiểu tương ứng trực tiếp hay kiểu phối hợp theo tập hợp (mỗi tập hợp gồm 2 hoặc 4 khối). Mỗi khối của cache đều có một nhãn địa chỉ cho biết số thứ tự của các khối bộ nhớ trong đang hiện diện trong cache. Nhãn của một khối của cache có thể chứ thông tin cần thiết được xem xét để biết được các khối nằm trong cache có chứa thông tin mà bộ xử lý cần đọc hay không. Tất cả các nhãn đều được xem xét song song (trong kiểu tương ứng trực tiếp và phối hợp theo tập hợp) vì tốc độ là yếu tố then chốt. Để biết xem một khối của của cache có chứa thông tin mà bộ xử lý cần tìm hay không, người ta thêm một bit đánh dấu (valid bit) vào nhãn để nói lên khối đó có chứa thông tin mà bộ xử lý cần tìm hay không. Như đã mô tả ở phần đầu, với thao tác đọc (ghi) bộ nhớ, bộ xử lý đưa ra một địa chỉ và nhận (viết vào) một dữ liệu từ (vào) bộ nhớ trong. Địa chỉ mà bộ xử lý đưa ra có thể phân tích thành hai thành phần: phần nhận dạng số thứ tự khối và phần xác định vị trí từ cần đọc trong khối. Tương ứng với ba kiểu lắp đặt khối đã xét, ta có: a. Căn cứ vào tổ chức số từ trong khối bộ nhớ mà số bit trong địa chỉ xác định vị trí từ cần đọc trong khối. Cách này đúng với cả ba cách xếp đặt khối đã xét. b. Phần nhận dạng số thứ tự khối sẽ khác nhau tuỳ thuộc vào cách xếp đặt khối, trường chỉ số khối được so sánh với nhãn của cache để xác định khối trong cache. Dữ liệu được bộ xử lý đọc cùng lúc với việc đọc nhãn. Phần chỉ số khối của khối trong bộ nhớ trong được so sánh với bảng tương quan để xác định khối có nằm trong cache hay không. Để chắc rằng nhãn chứa thông tin đúng đắn (tức là khối có chứa từ mà bộ xử lý cần đọc-ghi), nếu việc so sánh nhãn của khối cache giống với số thứ tự khối, bit đánh dấu (Valid bit) phải được bật lên. Ngược lại, kết quả so sánh được bỏ qua. Bộ xử lý căn cứ vào phần xác định từ trong khối để đọc (ghi) dữ liệu từ (vào) cache. - Đối với kiểu tương ứng trực tiếp, phần nhận dạng chỉ số khối được chia thành hai phần: + Phần chỉ số khối cache: chỉ ra số thứ tự khối cache tương ứng cần xem xét. + Phần nhãn: so sánh tương ứng với nhãn của khối cache được chỉ ra bởi phần chỉ số khối. 140
  30. - Đối với kiểu hoàn toàn phối hợp, phần nhận dạng chỉ số khối trong địa chỉ sẽ được so sánh với nhãn của tất cả các khối cache. - Đối với kiểu phối hợp theo tập hợp, phần nhận dạng chỉ số khối được chia thành hai phần: + Phần chỉ số tập hợp: chỉ ra số thứ tự tập hợp trong cache cần xem xét. + Phần nhãn: so sánh tương ứng với nhãn của các khối cache thuộc tập hợp được chỉ ra bởi phần chỉ số tập hợp. Ví dụ 4.4: Phân tích địa chỉ một từ trong được cho ở trên, Địa chỉ xác định một từ trong bộ nhớ có 10 bit, tuỳ theo cách xếp đặt khối mà ta có thể phân tích địa chỉ này thành các thành phần như sau: - Đối với kiểu tương ứng trực tiếp: - Đối với kiểu hoàn toàn phối hợp: - Đối với kiểu phối hợp theo tập hợp, giả sử cache gồm 4 tập hợp, mỗi tập hợp gồm hai khối: 141
  31. Khối nào phải được thay thế trong trường hợp thất bại cache (thay thế khối)? Khi có thất bại cache, bộ điều khiển cache thâm nhập bộ nhớ trong và chuyển khối mà bộ xử lý cần đọc (ghi) vào cache. Như vậy, khối nào trong cache sẽ bị thay thế bởi khối mới được chuyển lên. Đối với kiểu tương ứng trực tiếp, vị trí đặt khối không có sự lựa chọn, nó được xác định bởi trường chỉ số khối cache trong địa chỉ của từ cần đọc (ghi). Nếu cache là kiểu hoàn toàn phối hợp hay phối hợp theo tập hợp thì khi thất bại phải chọn lựa thay thế trong nhiều khối. Có bốn chiến thuật chủ yếu dùng để chọn khối thay thế trong cache: - Thay thế ngẫu nhiên: để phân bố đồng đều việc thay thế, các khối cần thay thế trong cache được chọn ngẫu nhiên. - Khối xưa nhất (LRU: Least Recently Used): các khối đã được thâm nhập sẽ được đánh dấu và khối bị thay thế là khối không được dùng từ lâu nhất. - Vào trước ra trước (FIFO: First In First Out): Khối được đưa vào cache đầu tiên, nếu bị thay thế, khối đó sẽ được thay thế trước nhất. - Tần số sử dụng ít nhất (LFU: Least Frequently Used): Khối trong cache được tham chiếu ít nhất Điều này sử dụng hệ quả của nguyên tắc sử dụng ô nhớ theo thời gian: nếu các khối mới được dùng có khả năng sẽ được dùng trong tương lai gần, khối bị thay thế là khối không dùng trong thời gian lâu nhất. Việc gì xảy ra khi ghi vào bộ nhớ (chiến thuật ghi)? Thông thường bộ xử lý thâm nhập cache để đọc thông tin. Chỉ có khoảng 15% các thâm nhập vào cache là để thực hiện thao tác ghi (con số này là 33% với các tính toán vectơ-vectơ và 55% đối với các phép dịch chuyển ma trận). Như vậy, để tối ưu hoá các hoạt động của cache, các nhà thiết kế tìm cách tối ưu hoá việc đọc bởi vì các bộ xử lý CPU phải đợi đến khi việc đọc hoàn thành nhưng sẽ không đợi đến khi việc ghi hoàn tất. Hơn nữa, một khối có thể được đọc, so sánh và như thế việc đọc một khối có thể được bắt đầu khi chỉ số khối được biết. Nếu thao tác đọc thành công, dữ liệu ô nhớ cần đọc sẽ được giao ngay cho bộ xử lý. Chú ý rằng, khi một khối được ánh xạ từ bộ nhớ trong vào cache, việc đọc nội dung của khối cache không làm thay đổi nội dung của khối so với khối còn nằm trong bộ nhớ trong. Đối với việc ghi vào bộ nhớ thì không giống như trên, việc thay đổi nội dung của một khối không thể bắt đầu trước khi nhãn được xem xét để biết có thành công hay thất bại. Thao tác ghi vào bộ nhớ sẽ tốn nhiều thời gian hơn thao tác đọc bộ nhớ. Trong việc ghi bộ nhớ còn có một khó khăn khác là bộ xử lý cho biết số byte cần phải ghi, thường là từ 1 đến 8 byte. Để đảm bảo đồng nhất dữ liệu khi lưu trữ, có hai cách chính để ghi vào cache: - Ghi đồng thời: Thông tin được ghi đồng thời vào khối của cache và khối của 142
  32. bộ nhớ trong. Cách ghi này làm chậm tốc độ chung của hệ thống. Các ngoại vi có thể truy cập bộ nhớ trực tiếp - Ghi lại: Để đảm bảo tốc độ xử lý của hệ thống, thông tin cần ghi chỉ được ghi vào khối trong cache. Để quản lý sự khác biệt nội dung giữa khối của cache và khối của bộ nhớ trong, một bit trạng thái (Dirty bit hay Update bit) được dùng để chỉ thị. Khi một thao tác ghi vào trong cache, bit trạng thái (Dirty bit hay Update bit) của khối cache sẽ được thiết lập. Khi một khối bị thay thế, khối này sẽ được ghi lại vào bộ nhớ trong chỉ khi bit trạng thái đã được thiết lập. Với cách ghi này, các ngoại vi liên hệ đến bộ nhớ trong thông qua cache. Khi có một thất bại ghi vào cache thì phải lựa chọn một trong hai giải pháp sau: - Ghi có nạp: khối cần ghi từ bộ nhớ trong được nạp vào trong cache như mô tả ở trên. Cách này thường được dùng trong cách ghi lại. - Ghi không nạp: khối được thay đổi ở bộ nhớ trong không được đưa vào cache. Cách này được dùng trong cách ghi đồng thời. Trong các tổ chức có nhiều hơn một bộ xử lý với các tổ chức cache và bộ nhớ chia sẻ, các vấn đề liên quan đến tính đồng nhất của dữ liệu cần được đảm bảo. Sự thay đổi dữ liệu trên một cache riêng lẻ sẽ làm cho dữ liệu trên các hệ thống cache và bộ nhớ liên quan không đồng nhất. Vấn đề trên có thể được giải quyết bằng một trong các hệ thống cache tổ chức như sau: - Mỗi bộ điều khiển cache sẽ theo dõi các thao tác ghi vào bộ nhớ từ các bộ phận khác. Nếu thao tác ghi vào phần bộ nhớ chia sẻ được ánh xạ vào cache của nó quản lý, bộ điều khiển cache sẽ vô hiệu hoá sự thâm nhập này. Chiến lược này phụ thuộc vào cách ghi đồng thời trên tất cả các bộ điều khiển cache. - Một vi mạch được dùng để điều khiển việc cập nhật, một thao tác ghi vào bộ nhớ từ một cache nào đó sẽ được cập nhật trên các cache khác. - Một vùng nhớ chia sẻ cho một hay nhiều bộ xử lý thì không được ánh xạ lên cache. Như vậy, tất cả các thâm nhập vào vùng nhớ chia sẻ này đều bị thất bại cache. Các mức Cache Việc dùng cache trong có thể làm cho sự cách biệt giữa kích thước và thời gian thâm nhập giữa cache trong và bộ nhớ trong càng lớn. Người ta đưa vào nhiều mức cache: - Cache mức một (L1 cache): thường là cache trong (on-chip cache; nằm bên trong CPU) - Cache mức hai (L2 cache) thường là cache ngoài (off-chip cache; cache này nằm bên ngoài CPU). - Ngoài ra, trong một số hệ thống (PowerPC G4, IBM S/390 G4, Itanium của Intel) còn có tổ chức cache mức ba (L3 cache), đây là mức cache trung gian giữa cache 143
  33. L2 và một thẻ bộ nhớ. Bảng 4. 2. Kích thước cache của một số hệ thống 4.4.2. Các phƣơng pháp ánh xạ giữa cache và bộ nhớ chính a) Ánh xạ trực tiếp (Direct mapping) - Nguyên lý: Trong kỹ thuật này, mỗi một Block của bộ nhớ chính chỉ được ánh xạ vào một line duy nhất. Ánh xạ như sau: i = j mod m Trong đó: i: Số hiệu line trong cache. j: Số hiệu Block trong bộ nhớ chính. m: Số lượng line trong cache. Cụ thể như sau: 144
  34. Như vậy: L0 : B0, Bm, B2m, , Bnm L1 : B1, Bm+1, B2m+1, , Bnm+1 . . . . . . . Lm-1: Bm-1, B2m-1, B3m-1, , B(n+1)m-1 Lúc này địa chỉ do CPU phát ra có 3 trường: Trong đó: +) Word: Xác định từ nhớ trong Block, như vậy kích thước của một Block là 2w ngăn nhớ. +) Line: Xác định line trong cache, như vậy có 2r line trong cache. +) Tag: Xác định Block nào đang ở trong line Chúng ta có: Dung lượng cache là 2r. 2w = 2r+w. Số lượng Block của bộ nhớ chính là: 2s do đó dung lượng bộ nhớ chính là: 2s * 2w = 2s+w. - Bảng ánh xạ: 145
  35. Ví dụ 4.5: Máy tính có 16MB bộ nhớ chính, cache có dung lượng 64KB, kích thước line là 4 byte. Xác định số bit cho mỗi trường của địa chỉ do CPU phát ra (ánh xạ trực tiếp). Giải: Chúng ta có: Bộ nhớ chính = 16MB = 24.210.210 = 224. Dung lượng cache = 64KB = 26.210 = 216. Kích thước line = 4 Byte = 22. Do đó số lượng line trong cache là: 216/ 22 = 214. Và số bit cho phần Tag là: 24 - 2 - 14 = 8 (bit) Như vậy địa chỉ do CPU phát ra là: - Bảng ánh xạ: Số hiệu line Số hiệu Block được ánh xạ 0 000000, 010000, . . ., FF0000 1 000001, 010001, . . ., FF0001 . . . . . . 3FFF 00FFFC, 01FFFC, . . ., FFFFFC - Sơ đồ thực hiện: Hình 4. 31. Ánh xạ trực tiếp 146
  36. *) Nhận xét: - Ưu điểm: Kỹ thuật ánh xạ trực tiếp thực hiện đơn giản và chi phí không cao. - Nhược điểm: Một Block chỉ được ánh xạ vào một line nhất định. Như vây, nếu một chương trình lặp đi lặp lại việc tham chiến đến các ngăn nhớ thuộc các block được ánh xạ vào cùng một line (cùng Tag, theo công thức: block j line j mod m), thì hai block sẽ liên tục thay thế nhau trong Cache và tỷ lệ trúng Cache (Cache hit) sẽ thấp. b) Ánh xạ liên kết hoàn toàn (Fully Associative Mapping) Kỹ thuật ánh xạ liên kết hoàn toàn khắc phục nhược điểm trên của Kỹ thuật ánh xạ trực tiếp: Mỗi block của bộ nhớ chính có thể được nạp vào bất kỳ line nào trong Cache. Khi đó địa chỉ do CPU phát ra gồm hai trường: Trong đó: + Word: Xác dịnh từ nhớ trong block, kích thước của block (cũng là của line) là 2w. + Tag: Xác định block nào đang ở trong line. Như vậy, chúng ta có: Số lượng block của Bộ chớ chính là 2s, vì vậy dung lượng bộ nhớ chính là: 2s+w. Ví dụ 4.6: Hãy xác định số bit cho mỗi trường của địa chỉ do bộ vi xử lý phát ra trong kỹ thuật ánh xạ liên kết hoàn toàn, biết rằng: Dung lượng bộ nhớ chính là 4GB, dung lượng Cache là 256KB, kích thước Line là 32 KB. Giải: Chúng ta có: Dung lượng Bộ nhớ chính là 4GB, bằng 232. Cache có dung lượng là 256 KB, bằng 218. Kích thước line là 32B, bằng 25. Xác định số bit: 27 5 Tag Word - Sơ đồ thực hiện: 147
  37. Hình 4. 32. Ánh xạ liên kết hoàn toàn *) Nhận xét: - Ưu điểm: Tỷ lệ cache hit cao hơn kỹ thuật ánh xạ trực tiếp. - Nhược điểm: +) Mạch điều khiển phức tạp, do phải so sánh đồng thời một số hiệu block với các tag của tất cả các line trong Cache. +) Làm tăng thời gian truy nhập Cache. c) Ánh xạ liên kết tập hợp (Set Associative Mapping) Ta thấy đối với Kỹ thuật ánh xạ liên kết đầy đủ, thời gian tìm kiếm không nhỏ do phải so sánh với tất cả các Tag của tất cả các Line trong Cache. Vì vậy, người ta khắc phục như sau: - Nhóm một số Line liên tiếp thành một tập hợp (Set). - Một block của bộ nhớ chính chỉ được nạp vào một Set nhất định, nhưng có thể nạp vào một Line bất kỳ của Set đó. - Bộ nhớ Cache được chia thành v Set mỗi Set có k Line, do đó số lượng Line trong Cache là: m = v * k. Chúng ta có ánh xạ: i = j mod v Trong đó: +) i: Số hiệu Set trong Cache. +) j: Số hiệu Block trong bộ nhớ chính. 148
  38. +) v: Số lượng Set. Cụ thể như sau: Block 0 được ánh xạ vào Set 0 Block 1 được ánh xạ vào Set 1 . . . Block v được ánh xạ vào Set v Địa chỉ do CPU phát ra gồm có 3 trường: Ví dụ 4.7: Bộ nhớ chính của một máy tính có dung lượng là 4GB, Bộ nhớ Cache có dung lượng là 256 KB, kích thước Line là 32 Byte và mỗi Set có 8 Line. Hãy tìm dạng địa chỉ truy nhập Cache do CPU phát ra trong trường hợp dùng kỹ thuật ánh xạ liên kết tập hợp. Giải: Ta có: BNC = 4GB = 232 Cache = 256KB = 218 Line = 32B = 25 1Set = 23 Line Vì vậy: Số lượng line = 218/ 25 = 213, Vì vậy, số lượng Set = 213/ 23 = 210 Tag = 32 - 5 - 10 = 17 Do đó địa chỉ do CPU phát ra là: 17 10 5 Tag Set Word - Sơ đồ thực hiện: 149
  39. Hình 4. 33. Ánh xạ liên kết tập hợp *) Nhận xét: Có v set, mỗi set có k line, Cache có m line Nếu: +) v=m, k=1: là kỹ thuật ánh xa là ánh xạ trực tiếp. +) v=1, k=m: là kỹ thuật ánh xa là ánh xạ liên kết đầy đủ. +) v=m/2, k=2: ánh xạ liên kết tập hợp 2 đường. +) v=m/4, k=4: ánh xạ liên kết tập hơp 4 đường. 4.4.3. Giải thuật thay thế Khi truy nhập thông tin, nếu Cache miss thì cần phải thay Block tương ứng đưa vào Cache, nghĩa là thay Block cũ trong Cache. Vấn đề đặt ra là thay Block cũ nào ? a. Ánh xạ trực tiếp: Không được phép lựa chọn, vì: Block j Chỉ và chỉ được ánh xạ vào Line (j mod m). b. Ánh xạ liên kết (tập hợp hoặc đầy đủ): Có các thuật toán thay thế Block cũ như sau: - Thuật toán ngẫu nhiên (Random): Thay một cách ngẫu nhiên một Block cũ nào đó trong Cache. Đặc điểm: +) Dễ thực hiện bằng phần cứng. 150
  40. +) Là thuật toán nhanh nhất trong tất cả các thuật toán. +) Có thể thay đi block mà ngay sau đó cần dùng đến, nghĩa là trở thành Cache miss ngay sau đó. Tuy nhiên, nhược điểm này khắc phục được phần nào nếu tăng dung lượng Cache lên. - Thuật toán FIFO (First In First Out): Thay thế block tồn tại trong Cache lâu nhất (thay đi block vào đầu tiên trong số những block đang có trong đó). - Thuật toán LRU (Least Recently Used): Thay thế block được dùng gần đây ít nhất. Trong thực tế thường dùng thuật toán này, vì có tỉ lệ Cache hit cao nhất. - Thuật toán LFU (Least Frequently Used): Thay thế block được dùng với tần suất ít nhất. 4.5. Bộ nhớ ngoài 4.5.1. Phân loại 4.5.1.1. Ổ đĩa cứng Ổ đĩa cứng là thành phần không thể thiếu của một hệ thống máy tính. Nó là nơi lưu trữ hệ điều hành, cài đặt các phần mềm, tiện ích cũng như lưu trữ dữ liệu để sử dụng. Ổ cứng có liên quan đến những vấn đề quan trọng khi sử dụng máy như: tốc độ khởi động máy, tốc độ chép xuất dữ liệu của máy, độ an toàn của dữ liệu cá nhân để trên máy. Vì vậy mà khi mua máy tính, chúng ta cũng cần quan tâm đến những thông số kỹ thuật của ổ cứng. Ổ đĩa cứng là loại bộ nhớ “không thay đổi” (non-volatile), có nghĩa là chúng không bị mất dữ liệu khi ngừng cung cấp nguồn điện cho chúng. Ổ cứng hiện nay có 2 loại chính là: HDD (Hard Disk Drive) và SSD (Solid State Drive), ngoài ra còn ổ cứng lai giữa HDD và SSD. a. Ổ đĩa cứng HDD Ổ đĩa cứng HDD là ổ cứng truyền thống, dùng để lưu trữ dữ liệu trên bề mặt các phiến đĩa tròn (platters) làm bằng nhôm, thủy tinh hoặc gốm được phủ vật liệu từ tính (các đĩa từ). - Các thành phần của ổ đĩa cứng: Trung tâm của ổ đĩa là một động cơ quay (Spindle), để đọc/ghi dữ liệu các nhà sản xuất đã sử dụng các bộ điều khiển truyền động (Actuator) kết hợp với các tay truyền động (Actuator Arm) điều khiển đầu đọc nhỏ (Slider and Read/Write Head) và các cơ này được điều khiển bởi một bộ vi mạch nhỏ ở ngoài, chúng điều khiển đầu đọc ghi đúng vào vị trí trên các đĩa từ (platters) khi đĩa đang quay ở tốc độ cao, đồng thời giải mã các tính hiệu từ tính thành dữ liệu mà máy tính có thể hiểu được 151
  41. Hình 4. 34. Các thành phần của ổ đĩa cứng Các đĩa từ (platters): Tập hợp các đĩa từ trong ổ đĩa được gọi chung là đĩa cứng, có chức năng: lưu trữ dài hạn các tập tin và thiết lập một cấp bộ nhớ bên trong máy tính. Các lớp đĩa từ này được làm bằng kim loại với hai mặt được phủ một chất từ tính. Đường kính của đĩa thay đổi từ 1,3 inch đến 8 inch. Cấu trúc dữ liệu của đĩa cứng được phân chia thành Track (rãnh từ), Sector (cung từ), Cluster (liên cung). - Track (rãnh từ): Các vòng tròn đồng tâm trên một mặt đĩa dùng để xác định các vùng lưu trữ dữ liệu riêng biệt trên mặt đĩa, mặc định các track này cũng không cố định khi được sản xuất, chúng sẽ được thay đổi lại vị trí khi được định dạng ở cấp thấp (low format) nhằm tái cấu trúc lại cho phù hợp khi đĩa bị hư hỏng (bad block) do sự xuống cấp của phần cơ. Tập hợp các track cùng bán kính của các mặt đĩa khác nhau sẽ tạo thành các trụ (cylinder), chúng ta có 1024 cylinders trên một đĩa cứng (đánh số từ 0 đến 1023). Vì vậy, một ổ cứng sẽ có nhiều cylinder vì có nhiều đĩa từ khác nhau. - Sector (cung từ): Mỗi track lại được chia thành những các đường hướng tâm tạo thành các sector (cung từ). Sector là đơn vị chứa dữ liệu nhỏ nhất. Theo chuẩn thông thường thì một sector có dung lượng 512 byte. Số sector trên các track từ phần rìa đĩa vào đến tâm đĩa là khác nhau, các ổ đĩa cứng đều chia ra hơn 10 vùng và trong mỗi vùng có tỷ số sector/track bằng nhau. 152
  42. - Cluster (liên cung): Cluster là một đơn vị lưu trữ gồm một hoặc nhiều sectors. Khi lưu dữ liệu vào ổ cứng, các dữ liệu được ghi vào hàng chục, hoặc hàng trăm clusters liền kề hoặc không liền kề nhau. Nếu không có sẵn các cluster liền nhau, hệ điều hành sẽ tìm kiếm cluster còn trống ở gần và ghi tiếp dữ liệu lên đĩa. Quá trình cứ tiếp tục như vậy cho đến khi toàn bộ dữ liệu được lưu trữ hết. Hình 4. 35. Cấu trúc dữ liệu của đĩa cứng Các thông số của ổ đĩa cứng - Dung lƣợng: Dung lượng của ổ đĩa cứng được tính theo các đơn vị dung lượng cơ bản thông thường là Byte, KB, MB, GB, TB. Trước đây, khi dung lượng ổ cứng còn thấp người ta thường dùng đơn vị là MB. Bây giờ, người ta lại dùng đơn vị là GB và trong tương lai, chắc người ta sẽ tính theo TB. Đa số các hãng sản xuất đều tính dung lượng theo cách tính 1GB = 1000MB trong khi hệ điều hành (hoặc các phần mềm kiểm tra) lại tính 1GB = 1024MB nên dung lượng do hệ điều hành báo cáo thường thấp hơn so với dung lượng ghi trên nhãn đĩa. 320.0 GB Hình 4. 36. Thông số dung lượng ổ đĩa 153
  43. - Tốc độ quay: Tốc độ quay của đĩa cứng được ký hiệu là rpm (revolutions per minute - số vòng quay trong một phút). Tốc độ quay càng cao thì ổ đĩa làm việc càng nhanh do chúng thực hiện việc đọc/ghi nhanh hơn, thời gian tìm kiếm thấp hơn. Các tốc độ quay thông dụng hiện nay là 5.400 rpm (thông dụng với các ổ đĩa cứng 3,5”) và 7.200 rpm (thông dụng với các ổ đĩa cứng sản xuất từ 2008). Ngoài ra, tốc độ của các ổ đĩa cứng trong các máy tính cá nhân cao cấp, máy trạm và các máy chủ có sử dụng giao tiếp SCSI có thể lên tới 10.000 rpm hay 15.000 rpm. - Bộ nhớ đệm (cache hoặc buffer) trong ổ đĩa cứng cũng giống như RAM của máy tính. Chúng có nhiệm vụ lưu tạm dữ liệu trong quá trình làm việc của ổ đĩa cứng nên độ lớn của bộ nhớ đệm có ảnh hưởng đáng kể tới hiệu suất hoạt động của ổ đĩa cứng bởi việc đọc/ghi không xảy ra tức thời (do phụ thuộc vào sự di chuyển của đầu đọc/ghi, dữ liệu được truyền tới hoặc đi) sẽ được đặt tạm trong bộ nhớ đệm. Trong thời điểm năm 2007, dung lượng bộ nhớ đệm thường là 2 hoặc 8 MB cho các loại ổ đĩa cứng dung lượng đến 160 GB và 16 MB hoặc cao hơn cho các ổ đĩa cứng dụng lượng lớn hơn. Bộ nhớ đệm càng lớn càng tốt, nhưng hiệu năng chung của ổ đĩa cứng sẽ chững lại ở một giá trị bộ nhớ đệm nhất định mà từ đó bộ nhớ đệm có thể tăng lên nhưng hiệu năng tăng không đáng kể. Hệ điều hành cũng có thể lấy một phần bộ nhớ của hệ thống (RAM) để tạo ra một bộ nhớ đệm lưu trữ dữ liệu được lấy từ ổ đĩa cứng nhằm tối ưu hóa việc xử lý đối với các dữ liệu thường xuyên phải truy cập. Đây chỉ là một cách dùng riêng của hệ điều hành mà chúng không ảnh hướng đến cách hoạt động hoặc hiệu suất vốn có của mỗi loại ổ đĩa cứng. Có rất nhiều phần mềm cho phép tinh chỉnh các thông số này của hệ điều hành tùy thuộc vào sự dư thừa RAM trên hệ thống. Hình 4. 37. Kích thước ổ đĩa cứng 1,8”, 2,5” và 3,5” (từ trái qua phải) - Tốc độ truyền dữ liệu: Đa phần tốc độ truyền dữ liệu trên các chuẩn giao tiếp thấp hơn so với thiết kế của nó bởi có nhiều thông số ảnh hưởng đến tốc độ truyền dữ 154
  44. liệu của ổ đĩa cứng như: tốc độ quay của đĩa từ, số lượng đĩa từ trong ổ đĩa cứng, công nghệ chế tạo, dung lượng bộ nhớ đệm - Kích thƣớc: Để đảm bảo thay thế lắp ráp vừa với các loại máy tính, kích thước của ổ đĩa cứng được chuẩn hoá thành 6 loại là: 5,25 inch dùng trong các máy tính các thế hệ trước. 3,5 inch dùng cho các máy tính cá nhân, máy trạm, máy chủ. 2,5 inch dùng cho máy tính xách tay. 1,8 inch hoặc nhỏ hơn dùng trong các thiết bị kỹ thuật số cá nhân và PC Card. 1,0 inch dùng cho các thiết bị siêu nhỏ (micro device). - Chuẩn giao tiếp HDD Hiện nay ổ cứng gắn trong có 2 chuẩn kết nối thông dụng là IDE và SATA. Khi muốn mua mới hoặc bổ sung thêm một ổ cứng mới cho máy tính của mình, bạn cần phải biết được bo mạch chủ (motherboard) hỗ trợ cho chuẩn kết nối nào. Các dòng bo mạch chủ được sản xuất từ 2 năm trở lại đây sẽ có thể hỗ trợ cả hai chuẩn kết nối này, còn các bo mạch chủ trở về trước thì sẽ chỉ hỗ trợ IDE. Bạn cần xem thêm thông tin hướng dẫn kèm theo của bo mạch chủ mình đang sử dụng hoặc liên hệ nhà sản xuất để biết chính xác được chuẩn kết nối mà nó hỗ trợ. IDE (EIDE) Parallel ATA (PATA) hay còn được gọi là EIDE (Enhanced intergrated drive electronics) được biết đến như là 1 chuẩn kết nối ổ cứng thông dụng hơn 10 năm nay. Tốc độ truyền tải dữ liệu tối đa là 100 MB/giây. Các bo mạch chủ mới nhất hiện nay gần như đã bỏ hẳn chuẩn kết nối này, tuy nhiên, người dùng vẫn có thể mua loại card PCI EIDE Controller nếu muốn sử dụng tiếp ổ cứng EIDE. SATA (Serial ATA) Nhanh chóng trở thành chuẩn kết nối mới trong công nghệ ổ cứng nhờ vào cnhững khả năng ưu việt hơn chuẩn IDE về tốc độ xử lý và truyền tải dữ liệu. SATA là kết quả của việc làm giảm tiếng ồn, tăng các luồng không khí trong hệ thống do những dây cáp SATA hẹp hơn 400% so với dây cáp IDE. Tốc độ truyền tải dữ liệu tối đa lên đến 150 - 300 MB/giây. Đây là lý do vì sao bạn không nên sử dụng ổ cứng IDE chung với ổ cứng SATA trên cùng một hệ thống. Ổ cứng IDE sẽ “kéo” tốc độ ổ cứng SATA bằng với mình, khiến ổ cứng SATA không thể hoạt động đúng với “sức lực” của mình. Ngày nay, SATA là chuẩn kết nối ổ cứng thông dụng nhất và cũng như ở trên, ta có thể áp dụng card PCI SATA Controller nếu bo mạch chủ không hỗ trợ chuẩn kết nối này. Các phiên bản Windows 2000/XP/2003/Vista hay phần mềm sẽ nhận dạng và tương thích tốt với cả ổ cứng IDE lẫn SATA. Tuy vậy, cách thức cài đặt chúng vào hệ thống thì khác nhau. Do đó, cần biết cách phân biệt giữa ổ cứng IDE và SATA để có thể tự cài đặt vào hệ thống của mình khi cần thiết. Cách thức đơn giản nhất để phân biệt là nhìn vào phía sau của ổ cứng, phần kết nối của nó. 155
  45. Hình 4. 38. Giao diện kết nối phía sau của ổ cứng IDE và SATA Hình 4. 39. Phân biệt 2 loại cáp truyền tải dữ liệu của SATA và EIDE (IDE) Ổ cứng PATA (IDE) với 40-pin kết nối song song, phần thiết lập jumper (10- pin với thiết lập master/slave/cable select) và phần nối kết nguồn điện 4-pin, độ rộng là 3,5-inch. Có thể gắn 2 thiết bị IDE trên cùng 1 dây cáp, có nghĩa là 1 cáp IDE sẽ có 3 đầu kết nối, 1 sẽ gắn kết vào bo mạch chủ và 2 đầu còn lại sẽ vào 2 thiết bị IDE. Ổ cứng SATA có cùng kiểu dáng và kích cỡ, về độ dày có thể sẽ mỏng hơn ổ cứng IDE do các hãng sản xuất ổ cứng ngày càng cải tiến về độ dày. Điểm khác biệt dễ phân biệt là kiểu kết nối điện mà chúng yêu cầu để giao tiếp với bo mạch chủ, đầu kết nối của ổ cứng SATA sẽ nhỏ hơn, nguồn đóng chốt, jumper 8-pin và không có phần thiết lập Master/Slave/Cable Select, kết nối Serial ATA riêng biệt. Cáp SATA chỉ có thể gắn kết 1 ổ cứng SATA. Ngoài 2 chuẩn kết nối IDE (PATA) và SATA, các nhà sản xuất ổ cứng còn có 2 chuẩn kết nối cho ổ cứng gắn ngoài là USB, FireWire. Ưu điểm của 2 loại kết nối này so với IDE và SATA là chúng có thể cắm “nóng” rồi sử dụng ngay chứ không cần phải khởi động lại hệ thống. 156
  46. Hình 4. 40. Các loại kết nối củaUSB, FireWire 400, FireWire 800 USB (Universal Serial Bus) USB 2.0 là chuẩn kết nối ngoại vi cho hầu hết các máy tính sử dụng hệ điều hành Windows. Loại kết nối này có tốc độ truyền tải dữ liệu tối đa lên đến 480 MB/giây. Tốc độ duy trì liên tục khoảng từ 10 - 30 MB/giây, tuỳ thuộc vào những nhân tố khác nhau bao gồm loại thiết bị, dữ liệu được truyền tải và tốc độ hệ thống máy tính. FireWire FireWire còn được gọi là IEEE 1394, là chuẩn kết nối xử lý cao cấp cho người dùng máy tính cá nhân và thiết bị điện tử. Giao diện kết nối này sử dụng cấu trúc ngang hàng và có 2 cấu hình: FireWire 400 (IEEE 1394a) truyền tải môt khối lượng dữ liệu lớn giữa các máy tính và những thiết bị ngoại vi với tốc độ 400 MB/giây. Thường dùng cho các loại ổ cứng gắn ngoài, máy quay phim, chụp ảnh kỹ thuật số FireWire 800 (IEEE 1394b) cung cấp kết nối tốc độ cao (800 MB/giây) và băng thông rộng cho việc truyền tải nhiều video số và không nén, các tập tin audio số chất lượng cao. Nó cung ứng khả năng linh hoạt trong việc kết nối khoảng cách xa và các tuỳ chọn cấu hình mà USB không đáp ứng được. b. Ổ cứng SSD (Solid State Drive) là một loại ổ cứng thể rắn, được các chuyên gia về phần cứng nghiên cứu và chế tạo nhằm cạnh tranh với các ổ cứng HDD truyền thống, cải thiện về sức mạnh tốc độ, nhiệt độ, độ an toàn dữ liệu và cả về điện năng tiêu thụ. Là loại ổ cứng được cấu thành từ nhiều chip nhớ Non-volatile memory chip (chip nhớ không thay đổi), ổ cứng SSD ghi và lưu dữ liệu trong các chip flash, nhờ vậy việc truy xuất dữ liệu gần như được diễn ra ngay tức khắc cho dù ổ cứng có bị phân mảnh sau một thời gian sử dụng. Có hai loại chip nhớ được sử dụng nhiều nhất trong chế tạo ổ SSD: Bộ nhớ NAND SLC (Single-Level Cell) – ô nhớ một cấp thường được các doanh nghiệp sử dụng vì giá thành cao hơn (3 USD/GB) và NAND MLC (Multi-Level Cell) – ô nhớ đa cấp được người dùng thông thường sử dụng (~1 USD/GB). Trong đó, các chip SLC chỉ lưu giữ 1 bit/transistor (0 hoặc 1), còn chip MLC lại chứa 2 bit/ transistor (00, 01, 10 và 11). Vì vậy, lượng dữ liệu lưu trữ của chip MLC nhiều gấp hơn đôi chip SLC, 157
  47. nhưng tốc độ đọc trung bình lại chậm hơn hai lần (2x) và tốc độ ghi sẽ chậm hơn ba lần (3x) trên một tế bào bộ nhớ NAND. Ngoài ra, các SSD còn hỗ trợ công nghệ TRIM nhằm ngăn ngừa sự suy giảm tốc độ đọc/ghi sau một thời gian sử dụng. Tuy nhiên, cũng cần lưu ý các phiên bản hệ điều hành có hỗ trợ TRIM là Windows 7, Windows 8, Windows 2008 R2, Mac OS X Snow Leopard (10.6.6), Lion (10.7), các phiên bản OpenSolaris phát hành sau tháng 6/2010 và FreeBSD 8.2. SSD phổ thông hiện vẫn sử dụng giao tiếp SATA 3.0 (6 Gb/giây) trong khi SSD cao cấp sử dụng giao tiếp PCI Express có tốc độ truy xuất dữ liệu, độ bền và đáng tin cậy gấp nhiều lần SSD phổ thông. Tốc độ truy xuất dữ liệu SSD cao nhất có thể đạt mức 550 MB/giây; gần đạt ngưỡng tới hạn 6 Gb/giây của giao tiếp SATA 3.0, hiệu suất đọc/ghi ngẫu nhiên khoảng 80.000/65.000 lượt dữ liệu (4KB) vào/ra mỗi giây (IOPS). Bên cạnh khả năng truy xuất dữ liệu tốc độ cao, ổ cứng thể rắn SSD còn có độ bền tốt. Hiện tại, mỗi chip MLC có thể ghi/xóa 10.000 lần, còn tuổi thọ của chip SLC lên đến 100.000 lần. Ngoài ra, các nhà phát triển phần cứng cũng đã chế tạo thành công loại chip NAND TLC (Triple-Level Cell) nhưng hiện nay vẫn có rất ít sản phẩm sử dụng chip này xuất hiện trên thị trường phổ thông. Tuy TLC là loại chip có khả năng lưu trữ cao hơn hết (3 bit/transistor) nhưng lại thuộc loại kém bền nhất, chỉ đạt tối đa 1000 lần ghi/xóa tức kém hơn loại SLC 100 lần (hiện có ở laptop Samsung 840) và cũng không được người dùng ưa chuộng. Hình 4. 41. Ổ cứng SSD So sánh SSD và HDD Ổ cứng SSD hiện nay chưa đạt được mức dung lượng lớn như ổ cứng HDD mà chỉ ở mức cho người dùng phổ thông là từ 128 GB hoặc 256 GB, nếu người dùng muốn sở hữu ổ cứng SSD dung lượng lớn hơn 512 GB ~ 1 TB thì phải bỏ ra chi phí cực lớn. 158
  48. Tuy nhiên, SSD mang lại rất nhiều tiện ích cho người dùng máy tính với hiệu suất làm việc cao, khối lượng công việc nhiều và cần rút ngắn thời gian hoàn thành công việc. Dưới đây là một số ưu điểm của bộ nhớ SSD so với bộ nhớ HDD: - Giảm thiểu thời gian khởi động hệ điều hành. - Khả năng truy xuất dữ liệu cực nhanh. - Nạp chạy các phần mềm nhanh chóng. - Bảo vệ dữ liệu cực tốt, khả năng chống sốc cao. - Hoạt động không tiếng ồn, tản nhiệt hiệu quả và mát. - Băng thông truyền tải dữ liệu lớn, giúp tăng khả năng làm việc của máy tính. Hình 4. 42. Bên trong ổ đĩa SSD và HDD c. Hybrid HD còn được gọi là ổ cứng lai. Nó là sản phẩm của sự kết hợp giữa ổ cứng dung lượng cao HDD và ổ cứng tốc độ truy xuất cao SSD. Hình 4. 43. Ổ cứng SSHD Hybrid HDD hoạt động theo nguyên tắc, khi người dùng sử dụng hệ thống sẽ kiểm tra những ứng dụng hay dữ liệu nào được sử dụng thường xuyên sẽ được lưu và ổ SSD, còn những ứng dụng, dữ liệu khác được lưu vào HDD. Ngắn gọn hơn thì HDD để lưu trữ dữ liệu và SSD để lưu các dữ liệu hay được sử dụng nhằm giúp CPU truy xuất nhanh hơn. 4.5.1.2. Ổ đĩa quang 159
  49. Ổ đĩa quang, thuật ngữ dùng để chỉ các loại ổ đĩa đọc và ghi đĩa CD, DVD trên máy tính. Theo chiều phát triển của công nghệ, ổ đĩa quang này ngày càng rẻ,từ CD- ROM đến CD-RW rồi DVD combo và ngày nay, DVD-RW được xem là không thể thiếu cho một máy tính thông thường. - CD ROM (chỉ đọc đĩa CD): Sử dụng đi-ốte Laser có bước sóng 780 nm, công suất phát tia Laser ổn định nhờ mạch ổn dòng. - DVD ROM hay DVD combo (chỉ đọc đĩa CD/DVD): Sử dụng 2 đi-ốte Laser, một cho việc đọc đĩa CD có bước sóng 780 nm và một cho việc đọc đĩa DVD có bước sóng 650 nm, công suất phát tia Laser ổn định. - CD RW (chỉ đọc và ghi đĩa CD): Sử dụng đi-ốte Laser có bước sóng 780 nm, công suất phát tia Laser được điều chỉnh với 3 mức: cao, trung bình và thấp tương ứng với 3 nhiệm vụ ghi, xóa và đọc đĩa. DVD-R (DVD - Recordable): Giống như đĩa DVD-ROM, người dùng có thể ghi dữ liệu lên đĩa một lần và đọc được nhiều lần. Đĩa này chỉ có thể ghi được trên một mặt đĩa, dung lượng ghi trên mỗi mặt tối đa là 4.7 GB. DVD-RW (DVD - Rewritable): Giống như đĩa DVD-ROM, người dùng có thể ghi, xoá và ghi lại dữ liệu lên đĩa nhiều lần Đĩa này cũng có thể ghi được trên một mặt đĩa, dung lượng ghi trên mỗi mặt tối đa là 4.7 GB. Sau đây ta sẽ tìm hiểu kỹ về ổ đĩa CD Rom. Ổ đĩa CD Rom Ổ đĩa CD Rom (Compac Disk Read Only Memory) là thiết bị có trong hầu hết các máy tính hiện nay, nó có ưu điểm là lưu trữ được dung lượng lớn, giá thành đĩa CD rẻ, có thể di chuyển đi nơi khác dễ dàng, CD Rom là ổ đĩa không thể thiếu trong quá trình cài đặt phần mềm cho máy tính Phần này tác giả sẽ trình bày các nguyên tắc ghi và đọc đĩa CD Rom, cấu tạo của đĩa CD Rom và cuối cùng là một số bệnh thường gặp của ổ đĩa CD Rom cũng như phương pháp sửa chữa khắc phục. Hình 4. 44. Ổ đĩa CD Rom Về tiêu chuẩn đánh giá chất lượng của CD Rom dựa vào các yếu tố + Chủng loại ổCD Rom + Tốc độ đọc dữliệu của ổCD Rom : Tốc độ đọc dữliệu của ổCD Rom được tính bằng số X Ổ 1X có tốc độtruy cập dữliệu là 150KB => Ổ 10X sẽ có tốc độ truy cập là 10 x 150K = 1.500 KB 160
  50. => Ổ 48X có tốc độ truy cập là 48 x 150K = 7200 KB => Ổ 52X có tốc độ truy cập là 52 x 150K = 7800 KB Cấu tạo của đĩa CD Rom Đĩa CD Rom trắng được phủ một lớp hoá học lên bề mặt sau của đĩa (bề mặt dán giấy), lớp hoá học này có tính chất phản xạ ánh sáng như lớp bạc z Đĩa CD đã có tín hiệu thì tín hiệu được ghi lên đĩa thành các đường Track hình xoáy chôn ốc, tín hiệu ghi là các điểm hoá chất bị đốt cháy mất khả năng phản xạ, xen kẽ với các điểm có khả năng phản xạ . Hình 4. 45. Đĩa CD Rom Hình 4. 46. Bề mặt đĩa CD Rom (Tín hiệu được ghi theo các đường Track) Các đường track của đĩa CD Rom có mật độ rất dầy khoảng 6000 Track / 1cm vì vậy kích thước của chúng rất nhỏ. Nguyên lý ghi dữ liệu lên đĩa CD Rom Dữ liệu ghi lên đĩa CD Rom là dạng tín hiệu số 0, 1 ở đầu ghi, người ta sử dụng súng Lazer để ghi dữ liệu lên đĩa Hình 4. 47. Nguyên lý ghi dữ liệu lên đĩa CD Rom 161
  51. Đĩa quay với tốc độ cao và súng Lazer sẽ chiếu tia lazer lên bề mặt đĩa, tia lazer được điều khiển tắt sáng theo tín hiệu 0 hay 1 đưa vào => ứng với tín hiệu 0 => tia lazer tắt, ứng với tín hiệu 1 => tia lazer sáng đốt cháy bề mặt đĩa thành 1 điểm làm mất khả năng phản xạ. Mạch Servo sẽ điều khiển tốc độ quay đĩa cũng như điều khiển cho tia lazer hội tụ trên đĩa và ghi tín hiệu thành các đường trắc hình xoắn chôn ốc . Nguyên lý đọc tín hiệu từ đĩa CD Rom Đĩa có dữ liệu được quay với tốc độ cao, mắt đọc sẽ đọc dữ liệu ghi trên đĩa theo nguyên tắc: Sử dụng tia lazer (yếu hơn lúc ghi) chiếu lên bề mặt đĩa dọc theo các đường track có dữ liệu, sau đó hứng lấy tia phản xạ quay lại rồi đổi chúng thành tín hiệu điện . Khi tia lazer chiếu qua các điểm trên bề mặt đĩa bị đốt cháy sẽ không có tia phản xạ => và tín hiệu thu được là 0 Khi tia lazer chiếu qua các điểm trên bề mặt đĩa không bị đốt cháy sẽ có tia phản xạ => và tín hiệu thu được là 1. Tia phản xạ sẽ được ma trận Đi-ốte đổi thành tín hiệu điện, sau khi khuếch đại và xử lý ta thu được tín hiệu ban đầu. Hình 4. 48. Nguyên lý đọc tín hiệu từ đĩa CD Rom Đĩa quay và khi tia lazer chiếu qua điểm bị cháy sẽ mất tia phản xạ cho ta tín hiệu 0, qua điểm bình thường có tia phản xạ cho ta tín hiệu 1. Tín hiệu khi đọc nếu ngược với khi ghi thì chỉ việc cho qua cổng đảo tín hiệu sẽ được đảo lại . 101 => Cổng đảo => 010 Các thông số trên ổ đĩa - Tốc độ ổ đĩa Tốc độ (Speed) để đọc, hoặc ghi dữ liệu trên máy của ổ đĩa được biểu hiện qua (1X, 2X,4X, 24X). X càng lớn tốc độ càng nhanh. Tuy nhiên, tốc đô ̣ 1x của CDs là 150 kilobytes/s, trong khi tốc đô ̣ 1x của DVDs là 1,32 megabytes/s. Sau đây, chúng ta sẽ giải thích một số các ví dụ sau: Ví dụ 4.8: Ổ đĩa CD - 52X 162
  52. 1X có giá trị là 150 Kbps (Kilobyte per second) số byte dữ liệu đọc được trên 1 giây. Vậy với một ổ đĩa 52X thì tốc độ đọc dữ liệu tối đa của ổ đĩa đó là 52 x 150 Kbps Ví dụ: Ổ đĩa CD-RW - 52x32x52x Cũng như các ổ đĩa CD-ROM, các con số được nhà sản suất ghi trên ổ đĩa CD- RW chính là tốc độ tối đa khi ổ đĩa hoạt động ở các chế độ đọc/ghi khác nhau. Số đầu tiên biểu diễn cho tốc độ đọc đĩa của ổ đĩa, số kế tiếp là tốc độ tối đa ghi được đối với các đĩa ghi lại (CD-RW) và số sau cũng chính là tốc độ cho phép ghi trên đĩa CD-R. Thời gian truy cập Thời gian truy cập cho một ổ đĩa quang được đo lường cùng một cách như với một ổ đĩa cứng của PC. Nói một cách khác, thời gian truy cập là thời gian trì hoãn giữa ổ đĩa nhận lệnh để đọc thật sự một bit dữ liệu đầu tiên của nó. Thời gian này được ghi lại trong hàng triệu giây; một đánh giá của nhà sản xuất bình thường có thể là 95ms. Đó là một tốc độ truy cập trung bình; tốc độ truy cập thực tế phụ thuộc hoàn toàn vào vị trí dữ liệu trên đĩa. Khi cơ cấu đọc được định vị vào phần gần trung tâm chu vi hẹp hơn, tốc độ truy cập nhanh hơn là khi nó được đặt vị trí ở chu vi bên ngoài rộng hơn. Các tốc độ truy cập được báo bởi nhà sản xuất là số trung bình lấy từ việc tính toán một chuỗi đọc ngẫu nhiên từ một đĩa. Bộ nhớ đệm Hầu hết ổ đĩa đĩa quang bao gồm các bộ nhớ đệm (buffer hay cache) bên trong bên bo mạch. Những bộ nhớ đệm này thực sự là những chip nhớ được lắp đặt trên bo mạch điện của ổ đĩa cho phép ổ đĩa sắp xếp hay lưu trữ dữ liệu trong các phân đoạn lớn hơn trước khi gửi đến PC. Một bộ nhớ đệm thường từ 128KB lên tới 8MB hay nhiều hơn (tùy thuộc ổ đĩa). Nói chung, các ổ đĩa có khả năng ghi lại nhanh hơn đi với bộ nhớ đệm lớn hơn để xử lý những tốc độ truyền cao hơn. 4.5.2. Hệ thống đĩa dự phòng RAID Giới thiệu chung RAID là viết tắt của cụm từ Redundant Array of Independent Disks (mảng dư thừa của các đĩa độc lập). - Để dùng được RAID, phải có: +) Card điều khiển theo kiểu RAID. +) Phần mềm điều kiển RAID. Từ đó có thể tăng dung lượng của hệ thống nhớ ngoài lên hàng nghìn GB. - Đặc trưng cơ bản của RAID: + Hệ thống gồm nhiều đĩa vật lý, nhưng hệ điều hành coi như là một địa chỉ logic duy nhất. + Dữ liệu có thể được phân bố trên các đĩa vật lý khác nhau. 163
  53. + Vì dữ liệu lớn nên có một phần của hệ thống (nằm trên một hoặc nhiều đĩa) dùng để nhớ các thông tin nhằm an toàn dữ liệu trong trường hợp đĩa có sự cố. Các loại RAID - Có 6 mức RAID: RAID 0đến RAID 5. - Sự phân loại RAID không nhằm mục đích phân cấp, không có khái niệm mức RAID tốt nhất. Các mức khác nhau tương ứng với các mục đích khác nhau. a) RAID 0 - Dùng một tập hợp các đĩa. - Không có đặc trưng thứ 3 (thông tin an toàn). - Các đĩa được chia thành các Strip (mỗi Strip gồm các khối vật lý, các Sector hoặc đơn vị khác). Hình vẽ dưới đây mô tả việc Hệ điều hành quản lý đĩa RAID như thế nào: Các Strip của các đĩa vật lý khác nhau được AMS (Array Management Software) “xem như” là các strip của chỉ một đĩa. Strip 0 Strip Strip Strip Strip Strip 1 0 1 2 3 Strip 2 Strip 3 . . . Array Management Software Hình 4. 49. RAID 0 b) RAID 1 - Dùng kỹ thuật mirroring (ghi cùng một dữ liệu lên 2 đĩa): Có 2n đĩa thì dùng n đĩa chứa dữ liệu, còn n đĩa Back - up. Strip Strip Strip Strip Strip Strip Strip Strip 0 1 2 3 0 1 2 3 . . . . . . . . . . . . . . . . . . . . . . . . n đĩa dữ liệu n đĩa back - up Hình 4. 50. RAID 1 164
  54. - Đặc điểm của loại RAID này là giá thành cao, vì phải dùng gấp đôi số đĩa để chứa dữ liệu. c) RAID 2 - Mức RAID này nhắm vào việc sử dụng với các máy tính cỡ lớn và mini. - Với RAID 2, các Strip rất bé (khoảng 1 byte hoặc một word). - Dùng n + m đĩa (m ? = 1. e) RAIR 4 - Hệ thống hoạt động độc lập. - Parity được ghi lên một ổ đĩa riêng, nhưng như vậy có thể gây ra tẵc nghẽn dữ liệu. - RAID 4 thích hợp với những hệ thống đọc nhiều hơn ghi. Block 0 Block 1 Block 2 Block 3 p(0 - 3) Block 4 Block 5 Block 6 Block 7 p(4 - 7) . . . . . . . . 165 . . . . . . .
  55. Hình 4. 53. RAID 4 f) RAID 5 - Hệ thống được truy cập độc lập để thực hiện những yêu cầu đọc hay ghi riêng biệt trong cùng một thời gian. - Dùng n đĩa, mỗi đĩa chứa cả dữ liệu lẫn thông tin an toàn, vì vậy phân tán thông tin an toàn lên tất cả các đĩa, do đó ngăn chặn sự tắc nghẽn dòng dữ liệu trong quá trình tính toán và ghi dữ liệu parity. Tuy nhiên, việc truy nhập dữ liệu chậm đi vì hệ thống phải bỏ qua các khối thông tin parity xen kẽ để tìm dữ liệu lưu trữ. Block 0 Block 1 Block 2 Block 3 P (0-3) Block 4 Block 5 Block 6 P (4-7) Block 7 Block 8 Block 9 P (8-11) Block 10 Block 11 Block 12 P (12-15) Block 13 Block 14 Block 15 P (16-19) Block 16 Block 17 Block 18 Block 19 . . . . . . . . . . . . . . . Hình 4. 54. RAID 5 4.6. Bộ nhớ ảo Trong những ngày đầu tiên của kỷ nguyên máy tính, bộ nhớ của máy tính thường nhỏ và đắt tiền. Máy IBM 650 là một máy tính cho nghiên cứu khoa học dẫn đầu lúc đó (cuối những năm 1950) chỉ có bộ nhớ 2000 word. Một trong các compiler đầu tiên cho ALGOL 60 đã được viết cho các máy tính có bộ nhớ chỉ có 1024 word. Thời kì này các nhà lập trình thường phải dành phần lớn thời gian nhằm làm sao cho chương trình càng bé càng tốt để có thể lọt được vào một bộ nhớ rất nhỏ. Một giải pháp truyền thống cho vấn đề này là sử dụng bộ nhớ phụ, chẳng hạn đĩa. Người lập trình chia chương trình ra làm một số phần, gọi là overlay, mỗi overlay có thể nằm lọt trong bộ nhớ. Để chạy chương trình, overlay thứ nhất được đọc vào và nó sẽ chạy được một lúc. Trước khi kết thúc, nó sẽ đọc overlay tiếp theo vào và gọi overlay đó ra làm việc và việc đó cứ tiếp diễn như thế. Người lập trình phải lo chia chương trình thành các overlay, phải quy định từng overlay sẽ được giữ ở đâu trong bộ nhớ phụ, phải thu xếp để vận chuyển các overlay giữa bộ nhớ chính và bộ nhớ phụ và nối chung là phải tự mình quản lý toàn bộ quá trình overlay. 166
  56. Kỹ thuật này đã được sử dụng rộng rãi trong nhiều năm, nhưng nó đòi hỏi nhiều công sức của người lập trình cho việc quản lý overlay. Năm 1961 một nhóm nhà khoa học ở Manchester, nước Anh, đã đề xuất một phương pháp thực hiện quá trình overlay một cách tự động, thậm chí không đòi hỏi người lập trình phải biết điều gì đang xảy ra. Phương pháp này được gọi là bộ nhớ ảo– virtual memory. Phương pháp bắt đầu được sử dụng trong một số máy tính vào những năm 1960, hầu hết liên quan đến các dự án nghiên cứu về thiết kế hệ thống máy tính. Đầu những năm 1970 bộ nhớ ảo đã trở nên thông dụng trong các hầu hết các máy tính. Ngày nay thậm chí cả các bộ vi xử lý, trong đó có 80386 của Intel và 68030 Motorola cũng có các hệ thống bộ nhớ ảo rất tinh vi. 4.6.1. Việc phân trang – Paging Ý tưởng mà các nhóm nhà khoa học ở Manchester đưa ra làm tách biệt các khái niệm về không gian địa chỉ và các vị trí nhớ. Chúng ta hãy xem xét một thí dụ về một máy tính trong đó các chỉ thị có trường địa chỉ 16 bit và có bộ nhớ 4096 word. Một chương trình chạy trên máy tính này có thể đánh địa chỉ 65536 word bộ nhớ. Số word có thể đánh địa chỉ chỉ phụ thuộc vào số bit trong trường địa chỉ của chỉ thị và không liên quan tới số word mà bộ nhớ thực sự có. Không gian địa chỉ của máy tính này bao gồm các số 0, 1, 2, , 65535. Khi còn chưa phát minh ra bộ nhớ ảo, người ta phải phân biệt giữa các địa chỉ nhỏ hơn 4096 và các địa chỉ lớn hơn hoặc bằng 4096. Có thể coi miền thứ nhất là không gian địa chỉ khả dụng và miền thứ hai là không gian địa chỉ không khả dụng. Người ta thường không phân biệt rõ ràng giữa không gian địa chỉ và các địa chỉ bộ nhớ thực sự, bởi vì phần cứng bắt buộc phải có sự tương ứng một – một giữa chúng. Chương trình không được phép sử dụng các địa chỉ không khả dụng. Ý tưởng về việc làm tách biệt không gian địa chỉ và các địa chỉ bộ nhớ thực (bộ nhớ vật lý) như sau: Vào bất cứ thời điểm nào, 4096 word bộ nhớ có thể được truy nhập trực tiếp, nhưng chúng không nhất thiết phải tương ứng với các địa chỉ từ 0 4095. Ví dụ chúng ta có thể “bảo” cho máy tính rằng từ lúc này trở đi, mỗi khi địa chỉ 4096 được truy nhập thì word 0 của bộ nhớ sẽ được sử dụng. Mỗi khi địa chỉ 4097 được truy nhập thì word 1 của bộ nhớ sẽ được sử dụng, mỗi khi địa chỉ 8191 được truy nhập thì word 4095 của bộ nhớ sẽ được sử dụng Nói cách khác, chúng ta đã định nghĩa một sự ánh xạ từ không gian địa chỉ vào các địa chỉ bộ nhớ thực, như được minh họa trên hình 4.55. Bằng cách ánh xạ các địa chỉ của không gian địa chỉ vào các vị trí nhớ thực như trên hình 4.55, một máy với 4k bộ nhớ nếu không có bộ nhớ ảo thì chỉ có một sự xạ cố định các địa chỉ từ 0 4095 vào 4096 word bộ nhớ. Có một câu hỏi thú vị là: điều gì sẽ xảy ra nếu chương trình nhảy tới một địa chỉ nằm trong khoảng 8192 12287? Trong máy tính không có bộ nhớ ảo, chương trình này sẽ gây ra một bẫy lỗi, nó sẽ in ra 167
  57. màn hình một thông báo, chẳng hạn “Nonexistent memory referenced” rồi dừng chương trình. Trong máy tính có bộ nhớ ảo, một dãy các bước sau có thể sẽ lần lượt diễn ra: 1. Nội dung của bộ nhớ chính được cất vào bộ nhớ phụ. 2. Các word 8192 12287 đang nằm trong bộ nhớ phụ được nạp vào bộ nhớ chính. 3. Ánh xạ địa chỉ sẽ được thay đổi để ánh xạ các địa chỉ 8192 12287 vào các vị trí nhớ 0 4095 4. Chương trình tiếp tục như không có điều gì xảy ra. Hình 4. 55. Ánh xạ các địa chỉ 4096 8191vào các địa chỉ bộ nhớ chính 0 4095 Kỹ thuật thực hiện overlay tự động gọi là phân trang – paging, các đoạn chương trình được đọc vào bộ nhớ chính từ bộ nhớ phụ được gọi là các trang. Người ta cũng đã nghiên cứu các cách tinh vi hơn để ánh xạ các địa chỉ từ không gian địa chỉ vào các địa chỉ bộ nhớ thực. Để nhấn mạnh chúng ta sẽ gọi miền địa chỉ mà chương trình có thể truy cập là không gian địa chỉ ảo (virtual address space) còn các địa chỉ bộ nhớ thực, bằng các mạch điện, được gọi là không gian địa chỉ vật lý (physical address space). Ánh xạ bộ nhớ liên hệ các địa chỉ ảo với các địa chỉ vật lý. Trên thực tế người lập trình có thể viết chương trình mà không cần phải biết đến sự tồn tại của bộ nhớ ảo. Đối với họ máy tính dường như có một bộ nhớ chính rất lớn. Việc phân trang làm cho người lập trình có ảo giác về bộ nhớ chính tuyến tính, liên tục và lớn, có kích thước bằng kích thước của không gian địa chỉ; trong khi đó trên bộ nhớ chính có thể nhỏ hơn không gian địa chỉ nhớ. Sự mô phỏng địa chỉ bộ nhớ chính lớn như thế không thể phát hiện ra được bằng chương trình (trừ việc cho chạy 168
  58. các chương trình kiểm tra thời gian), vì vậy cơ chế phân trang có thể coi là trong suốt đối với người lập trình. Đặc điểm trên của phương pháp phân trang bộ nhớ rất quan trọng, làm cho nó khác với phương pháp phân đoạn bộ nhớ (segmentation), trong đó người lập trình phải ý thức về sự tồn tại của các phân đoạn. Tuy nhiên giáo trình này sẽ không trình bày vấn đề phân đoạn bộ nhớ. 4.6.2. Thực hiện việc phân trang Một đòi hỏi cốt yếu của bộ nhớ ảo là phải có bộ nhớ phụ để chứa toàn bộ chương trình. Nếu ta coi bản copy của chương trình trong bộ nhớ phụ là bản gốc, còn các phần của chương trình thỉnh thoảng được đưa vào bộ nhớ chính là các bản copy thì một số khái niệm mà chúng ta sử dụng sau này sẽ đơn giản hơn. Một công việc tự nhiên và quan trọng là cập nhật cho bản gốc, những thay đổi xảy ra với bản copy trong bộ nhớ chính, cuối cùng cần được phản ánh trong bản gốc. Không gian đĩa ảo được chia thành các trang có kích thước bằng nhau. Hiện nay người ta sử dụng kích thước trang nằm trong khoảng 512 4096. Nó luôn được chọn là số mũ của 2. Tương tự như vậy, không gian địa chỉ vật lý cũng được chia thành các mảnh, mỗi mảnh có cùng kích thước với trang, để cho mỗi mảnh của bộ nhớ chính có thể chưa được vừa vặn một trang. Các mảnh của bộ nhớ chính mà các trang sẽ đưa vào được gọi là khung trang – page frame. Trên hình 4.56 bộ nhớ chính chỉ có một khung trang. Trong các thiết kế thực, bộ nhớ chính của các máy tính lớn có thể có hàng chục, hàng trăm hay thậm chí hàng nghìn khung trang. Hình 4.56 minh họa một cách chia không gian địa chỉ 64K. Bộ nhớ ảo trên hình này có thể được triển khai thực hiện ở mức 2 bằng cách sử dụng một bảng phân trang – page table có 16 word (bảng phân trang sẽ được trình bày ngay dưới đây). Khi một chương trình truy cập bộ nhớ, dù là để lấy dữ liệu, chứa dữ liệu, lấy chỉ thị, hay là nhảy, đầu tiên nó sẽ sinh ra một địa chỉ 16 bit tương ứng với một địa chỉ ảo nằm trong miền 0 65535. Trong ví dụ này, địa chỉ 16 bit được sử dụng với 4 bit cao làm số trang ảo và 12 bit thấp làm địa chỉ trong trang ảo đã được chọn, như thể hiện trên hình 4.56a. Trong hình này địa chỉ 16 bit có giá trị là 12310 (số nhị phân trên hình vẽ là 0011 0000 0001 0110), theo cách sử dụng trên nó sẽ xem là địa chỉ của 22 của trang 3. Mối liên hệ giữa trang và địa chỉ ảo trong thí dụ này được thể hiện trên hình 4.56b. Nếu địa chỉ ảo của trang 3 là tại địa chỉ vật lý 12288, thì địa chỉ ảo 22 phải là tại địa chỉ vật lý 12310. Sau khi đã tính ra được rằng cần trang ảo số 3, hệ điều hành phải tìm ra được trang ảo số 3 nằm ở đâu. Có 9 khả năng sảy ra: trong đó 8 khả năng là trang ảo số 3 169
  59. nằm ở trong một trong số 8 khung trang trong bộ nhớ chính; khả năng thứ chín là trang ảo không có trong bộ nhớ chính mà nằm ở đâu đó trong bộ nhớ phụ. Hình 4. 56. Một cách chia không gian địa chỉ - Bảng phân trang Để tìm ra được khả năng nào trong 9 khả năng nói trên là đúng, hệ điều hành sẽ đối chiếu với bảng phân trang. Có số đề mục (entry) bằng số lượng trang ảo, mỗi đề mục giống như một bản ghi (record) có 3 trường (hình 4.58). Trường đầu tiên kích thước 1 bit, nó sẽ bằng 0 nếu trang ảo tương ứng không nằm trong bộ nhớ chính và sẽ bằng 1 nếu ngược lại. Trường thứ 2 chứa địa chỉ nơi chứa trang ảo trong bộ nhớ phụ khi nó không nằm trong bộ nhớ chính (thí dụ số hiệu track hay sector trên đĩa). Phải có địa chỉ này để khi cần có thể tìm được trang trong bộ nhớ phụ và đọc nó vào bộ nhớ chính và sau này ghi nó trở lại vị trí ban đầu trong bộ nhớ phụ khi nó không còn cần phải nằm trong bộ nhớ chính nữa. Trường thứ 3 kích thước 3 bit chứa một con số chỉ khung trang, là nơi mà trang nằm nếu nó ở bộ nhớ chính. Nếu trang không nằm trong bộ nhớ chính thì trường này không có ý nghĩa gì và được lờ đi. 170
  60. Hình 4. 57. Ví dụ một địa chỉ ảo Hình 4. 58. Ví dụ một bảng phân trang 171
  61. - Cách tạo địa chỉ bộ nhớ chính (bộ nhớ vật lí) từ địa chỉ ảo Giả sử trang ảo nằm trong bộ nhớ chính, trường khung trang 3 bit sẽ chỉ ra trang nằm ở đâu. Con số 3 bit này sẽ được nạp vào 3 bit trái nhất của thanh ghi địa chỉ của bộ nhớ MAR, còn 12 bit bên phải là địa chỉ trong ảo sẽ được nạp vào 12 bit bên phải của MAR. Đó là cách tạo thành địa chỉ bộ nhớ chính, được minh họa trên hình 4.59. Ba bit số chỉ khung trang cộng với 12 bit offset tạo thành địa chỉ 15 bit, đó là địa chỉ cần cho bộ nhớ chính dung lượng 32 bit như trên hình 4.55 mà chúng ta đã xem xét. Bây giờ phần cứng có thể sử dụng địa chỉ này để lấy về word mà nó cần nạp vào thanh ghi đệm bộ nhớ MBR (nếu thao tác với bộ nhớ là đọc – read) hoặc có thể chứa nội dung của thanh ghi MBR vào một word cần thiết nào đó (nếu thao tác với bộ nhớ là ghi-write). Hình 4. 59. Cách tạo ra địa chỉ bộ nhớ chính từ địa chỉ ảo 172
  62. Hình 4.60 cho thấy một ánh xạ có thể giữa các trang ảo và khung trang vật lí. Trang ảo số 0 nằm ở khung trang số 1. Trang ảo số 1 nằm ở khung trang số 0. Trang ảo số 2 không nằm trong bộ nhớ chính. Trang ảo số 3 nằm ở khung trang số 2. Trang ảo số 4 không nằm trong bộ nhớ chính. Trang ảo số 5 nằm ở khung trang số 6 Nếu hệ điều hành phải chuyển đổi địa chỉ ảo của chỉ thị mức 3 thành địa chỉ thực thì một máy mức 3 có bộ nhớ ảo có thể chạy chậm hơn một máy mức 3 không có bộ nhớ ảo rất nhiều lần và như vậy toàn bộ tưởng sẽ là không có nghĩa thực tế. Hình 4. 60. Ánh xạ từ không gian địa chỉ ảo lên không gian bộ nhớ chính có 8 khung trang Để tăng tốc độ việc chuyển đổi địa chỉ ảo thành địa chỉ vật lí, bảng phân trang thường được giữ trong các thanh ghi phần cứng đặc biệt, việc chuyển đổi thực hiện chuyển tiếp bằng phần cứng. Cách này đòi hỏi các chi phí phần cứng. Một cách khắc để tăng tốc là giữ bảng phân trang trong các thanh ghi tốc độ cao và dùng vi chương trình thực hiện chuyển đổi bằng cách lập trình trực tiếp đối với các thanh ghi. Tùy thuộc vào kiến trúc của mức vi chương trình, chuyển đổi bằng cách này có thể gần nhanh bằng cách chuyển đổi trực tiếp bằng phần cứng mà không đòi hỏi phải có mạch điện đặc biệt. 4.6.3. Phƣơng pháp cấp trang khi có yêu cầu và mô hình tập làm việc Trong thực tế bộ nhớ chính nói chung không đủ lớn để chứa tất cả các trang. Sự truy cập tới một địa chỉ thuộc một trang mà trang đó không có trong bộ nhớ chính được gọi là lỗi trang – page fault. Khi lỗi trang xảy ra, hệ điều hành cần phải đọc trang 173
  63. được yêu cầu từ bộ nhớ phụ vào bộ nhớ chính, nhập vị trí nhớ vật lí mới của nó vào bảng phân trang và sau dó lặp lại chỉ thị đã gây ra lỗi trang. 4.6.3.1. Phƣơng pháp cấp trang khi có yêu cầu Với máy có bộ nhớ ảo có thể khởi động một chương trình ngay cả khi không có phần nào của chương trình này nằm trong bộ nhớ chính, chỉ cần thiết lập cho bảng phân trang để chỉ ra là mọi trang ảo nằm trong bộ nhớ phụ chứ không phải là trong bộ nhớ chính. Khi CPU lấy chỉ thị đầu tiên, lập tức nó gặp một lỗi trang, điều này làm cho trang có chứa chỉ thị đầu tiên được nạp vào và bảng phân trang được cập nhập thông tin. Sau đó chỉ thị đầu tiên có thể bắt đầu thực hiện. Nếu chỉ thị đầu tiên có chứa hai địa chỉ mà chúng lại nằm ở trang khác với trang chứa chính chỉ thị, thì lại xảy ra hai lỗi trang nữa và sẽ lại có thêm hai trang được nạp vào bộ nhớ chính trước khi chỉ thị này được thi hành. Các chỉ thị tiếp theo của chương trình cũng có thể gây ra các lỗi trang nữa và quá trình tren lại tiếp diễn . Phương pháp vận hành bộ nhớ ảo như thế gọi là: cấp trang khi có yêu cầu – demand paging, nó giống thuật toán nổi tiếng demand feeding (cho ăn khi đòi) đối với trẻ con: khi đứa trẻ khóc bạn cần cho nó ăn, chứ không cho nó ăn những giờ đã dịnh trong ngày. Trong phương pháp cấp trang khi có yêu cầu, các trang chỉ được nạp vào bộ nhớ chính khi xuất hiện một yêu cầu thực hiện về trang, chứ không phải là được nạp từ trước. Việc xem xét có sử dụng phương pháp cấp trang khi có yêu cầu hay không chỉ liên quan tới lúc bắt đầu chạy một chương trình lần đầu tiên. Khi chương trình này đã chạy được một lúc rồi, thì các trang cần đến đã được tập hợp trong bộ nhớ chính. Nếu máy tính hoạt động trong chế độ chia sẻ thời gian và người sử dụng được chuyển đổi kiểu quay vòng, ví dụ mỗi chương trình của người sử dụng được cho chạy 100ms rồi tạm dừng để cho chạy một chương trình khác thì từng chương trình sẽ khởi động lại nhiều lần trong quá trình chạy của nó. Bởi vì mỗi chương trình có một bản đồ nhớ duy nhất và bản đồ này sẽ thay đổi khi các chương trình sẽ được chuyển đổi, cho nên vấn đề thay đổi lặp đi lặp lại nó trở thành một vấn đề nghiêm trọng, làm giảm hiệu suất của hệ thống. 4.6.3.2. Phƣơng pháp mô hình tập làm việc Một cách tiếp cận khác dựa trên sự quan sát thấy rằng hầu hết các chương trình không truy cập không gian địa chỉ của chúng đồng đều như nhau mà có khuynh hướng tập trung vào một số ít các trang. Sự truy cập bộ nhớ có thể là lấy một chỉ thị, chỉ thị này có thể lấy dữ liệu hoặc chứa dữ liệu. Tại một thời điểm t nào đó, tạo thành một tập bao gồm tất cả các trang dược sử dung k lần truy cập bộ nhớ gần đó nhất. Người ta gọi tập này là tập làm việc (working set), ký hiệu w (k,t). Bởi vì k+1 sự truy cập bộ nhớ mới đây nhất chắc chắn đã sử dụng tất cả các trang được k lần truy cập bộ nhớ mới 174
  64. đây nhất sử dụng và có thể các lần truy cập khác nữa, cho nên w (k,t) là một hàm đơn điệu tăng của k. Tuy nhiên giới hạn của w (k,t) khi k cứ tăng dần lên hữu hạn,bởi vì một chương trình không thể tham khảo nhiều trang hơn số trang của không gian địa chỉ của nó. Có số ít chương trình chỉ sử dụng một trang. Hình 4.61 miêu tả kích thước của tập làm việc là của k. Trong thực tế hầu hết các chương trình truy cập ngẫu nhiên có số ít các trang nhưng tập này thay đổi chậm theo thời gian, điều đó giải thích cho sự tăng nhanh ban đầu của đường cong và sau đó Ví dụ một chương trình đang thi hành một vòng lặp chiếm hai trang, chương trình sử dụng dữ liệu chiếm bốn trang, nó có thể tham khảo cả sáu trang cứ mỗi khi thi hành 1000 chỉ thị. Tuy nhiên lần tham khảo mới nhất tới một trang khác nào đó có thể là tham khảo một triệu tới trang đó tính từ lúc chương trình bắt đầu chạy. Do hành trạng có tính tiệm cận này nên nội dung của của tập làm việc không nhạy cảm đối với giá trị đã được chọn của k, hay nói một cách khác, tồn tại một miền rộng các giá trị của k trong đó working set là không thay đổi. Hình 4. 61. Hàm w (k, t) là kích thước của tập làm việc tại thời điểm t Lợi ích của phƣơng pháp mô hình tập làm việc Vì tập làm việc thay đổi chậm theo thời gian, cho nên có thể đoán ra các trang nào sẽ cần đến khi một chương trình được cho chạy trở lại dựa trên tập làm việc của lần chạy trước đó. Các trang này có thể được nạp vào trong khi một chương trình khác nào đó vẫn còn đang chạy, trước khi chương trình được cho chạy trở lại, nó sẽ không sinh ra ngay lập tức một số lớn các lỗi trang làm lãng phí thời gian. Người ta đã biết rằng thời gian cần để đọc một trang từ đĩa vào bộ nhớ chính thường bằng hoặc lớn hơn thời gian thực hiện 20.000 chỉ thị. Nhƣợc điểm của phƣơng pháp sử dụng tập làm việc Nếu tập làm việc được đưa vào bộ nhớ chính trước khi một chương trình được cho chạy trở lại, nhưng chương trình này khi chạy lại cần một tập làm việc khác (chương trình nằm ở lúc chuyển đổi giữa tập làm việc này và tập làm việc khác), thì việc nạp trước đó là thừa, và chương trình vẫn phải đợi cho đến khi các trang mà nố cần được nạp vào. Theo phương pháp cấp trang khi có yêu cầu thì tình huống này không thể xảy ra, các ttrang được nạp vào là các trang thực sự cần đến. Hiện nay người ta vẫn còn tranh luận về phẩm chất của hai chiến lược này. 175
  65. CÂU HỎI ÔN TẬP CHƢƠNG 4 Câu 1: Nêu các đặc trưng của hệ thống nhớ. Trình bày sự phân cấp bộ nhớ trong máy tính. Câu 2: Trình bày các điểm giống và khác nhau của SRAM và DRAM. Tại sao DRAM có tốc độ truy cập chậm hơn SRAM? Trong máy tính, SRAM và DRAM được ứng dụng cho các loại bộ nhớ nào? Câu 3. Trình bày kỹ thuật ánh xạ địa chỉ trực tiếp từ bộ nhớ chính vào bộ nhớ cache. Câu 4: Trình bày kỹ thuật ánh xạ địa chỉ liên kết tập hợp từ bộ nhớ chính vào bộ nhớ cache. Câu 5: Trình bày kỹ thuật ánh xạ địa chỉ liên kết hoàn toàn từ bộ nhớ chính vào bộ nhớ cache. Hãy cho biết ưu và nhược điểm của kỹ thuật ánh xạ này. Câu 6: Nêu khái niệm trúng cache, trượt cache; nguyên lý định vị tham số bộ nhớ. Trình bày nguyên tắc thiết kế, trao đổi thông tin giữa cache và bộ nhớ chính. Câu 7: Nêu chức năng và định dạng vật lý trên đĩa cứng. Hãy điền tên ứng với các bộ phận của ổ đĩa cứng được đánh số thứ tự ở hình dưới đây. Câu 8: Cho một IC ROM có các chân địa chỉ là A0 đến A13 và các chân dữ liệu là D0 đến D7. a) Trình bày cách tổ chức bộ nhớ của IC ROM. b) Tính dung lượng của IC ROM. 176