Tải bản đầy đủ (.doc) (21 trang)

Tìm hiểu cách làm việc của bộ nhớ cache

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (432.93 KB, 21 trang )

Tìm hiểu cách làm việc của bộ nhớ Cache
Bộ nhớ Cache là kiểu bộ nhớ tốc độ cao có bên trong CPU để
tăng tốc độ truy cập cho dữ liệu và các chỉ lệnh được lưu trong
bộ nhớ RAM.

Trong hướng dẫn này, chúng tôi sẽ giới thiệu cho các bạn về cách làm việc của
bộ nhớ này theo cách dễ hiểu nhất.
Một máy tính sẽ hồn tồn vơ dụng nếu bạn không bắt bộ vi xử lý (CPU) thực
hiện một nhiệm vụ nào đó. Cơng việc sẽ được thực hiện thơng qua một chương
trình, chương trình này lại gồm rất nhiều các chỉ lệnh để ra lệnh cho CPU làm
việc.
CPU lấy các chương trình từ bộ nhớ RAM. Tuy nhiên có một vấn đề với bộ nhớ
RAM đó là khi nguồn ni của nó bị cắt thì các thành phần dữ liệu được lưu trong
RAM cũng sẽ bị mất – chính điều này nên một số người nói rằng bộ nhớ RAM là
một môi trường “dễ bay hơi”. Các chương trình và dữ liệu như vậy phải được lưu
trên mơi trường khơng “dễ bay hơi” sau khi tắt máy tính (giống như các ổ đĩa
cứng hay các thiết bị quang như đĩa CD và DVD).
Khi kích đúp vào một biểu tượng trong Windows để chạy một chương trình nào
đó. Các chương trình thơng thường được lưu trên ổ đĩa cứng của máy tính, khi
được gọi nó sẽ được nạp vào bộ nhớ RAM sau đó từ bộ nhớ RAM, CPU nạp chương
trình thơng qua một mạch có tên gọi là memory controller, thành phần này được
đặt bên trong chipset (north bridge chip- chíp cực bắc) trên các bộ vi xử lý Intel
hoặc bên trong CPU trên các bộ vi xử lý AMD. Trong hình 1 chúng tơi đã tóm tắt
sơ qua nguyên tắc làm việc này (với các bộ vi xử lý AMD bạn hãy bỏ qua phần
chipset đã được vẽ).

Hình 1: Cách dữ liệu được truyền tải đến CPU
CPU khơng thể tìm nạp dữ liệu trực tiếp từ các ổ đĩa cứng vì tốc độ truy suất dữ
liệu của ổ đĩa cứng là q thấp với nó, thậm chí nếu nếu bạn có cả ổ đĩa cứng với
tốc độ truy suất lớn nhất. Hãy lấy một số ví dụ làm dẫn chứng cho điều này, ổ
cứng SATA-300 – một loại ổ đĩa cứng có tốc độ nhanh nhất hiện đang được cung


cấp ngày nay đến phần lớn người dùng – có tốc độ truyền tải theo lý thuyết là
300 MB/s. Một CPU chạy với tốc độ 2GHz với đường dữ liệu* 64-bit sẽ truyền tải
dữ liệu bên trong với tốc độ 16GB/s – như vậy là lớn gấp 50 lần.


- Đường dữ liệu: Các đường giữa các mạch bên trong CPU. Chỉ cần một phép toán
đơn giản bạn cũng có thể biết được rằng mỗi CPU có một số đường dữ liệu khác
nhau bên trong, mỗi một đường trong chúng lại có chiều dài khác nhau. Ví dụ với
các bộ vi xử lý AMD thì đường dữ liệu giữa L2 memory cache và L1 memory
cache có độ rộng 128-bit, trong khi đó của Intel là 256-bit. Đây chỉ là giải thích
con số mà chúng tơi đã cơng bố trong đoạn trên không cố định, nhưng dẫu sao
CPU luôn nhanh hơn rất nhiều so với các ổ đĩa cứng.
Sự khác nhau trong tốc độ cũng bắt nguồn từ một thực tế đó là các ổ đĩa cứng
cịn bao gồm cả hệ thống cơ khí, các hệ thống cơ khí này bao giờ cũng chậm hơn
hệ thống điện tử thuần túy, các thành phần cơ khí phải chuyển động để dữ liệu
mới có thể được đọc ra (điều này chậm hơn rất nhiều so với việc chuyển động
của điện tử). Hay nói cách khác, bộ nhớ RAM là 100% điện tử, có nghĩa là nó sẽ
nhanh hơn tốc độ của ổ đĩa cứng và quang.
Tuy nhiên đây chính là vấn đề, thậm chí bộ nhớ RAM nhanh nhất cũng khơng
nhanh bằng CPU. Nếu bạn sử dụng các bộ nhớ DDR2-800, chúng truyền tải dữ
liệu ở tốc độ 6.400 MB/s – 12.800 MB/s nếu sử dụng chế độ hai kênh. Thậm chí
con số này cịn có thể lên đến 16GB/s trong ví dụ trước, vì các CPU hiện nay cịn
có thể tìm nạp dữ liệu từ L2 memory cache ở tốc độ 128- bit hay 256-bit, chúng
ta đang nói về 32 GB/s hoặc 64 GB/s nếu CPU làm việc bên trong với tốc độ
2GHz. Bạn không nên lo lắng về những vấn đề với “L2 memory cache”, chúng tơi
sẽ giải thích vấn đề này sau. Tất cả những gì bạn cần nhớ là bộ nhớ RAM chậm
hơn CPU.
Bằng cách đó, tốc độ truyền tải có thể được tính bằng sử dụng cơng thưc dưới
đây (trong tất cả các ví dụ từ đầu tới giờ, “dữ liệu trên một clock” vẫn được tính
bằng “1”):

[Tốc độ truyền tải] = [Độ rộng (số lượng bít)] x [tốc độ clock] x [dữ liệu
trên một clock] / 8
Vấn đề không chỉ dừng lại ở tốc độ truyền tải mà còn cả độ trễ. Độ trễ (thời gian
truy cập) là lựợng thời gian mà bộ nhớ giữ chậm trong việc chuyển ngược trở lại
dữ liệu mà CPU đã u cầu trước đó – điều này khơng thể thực hiện được ngay
lập tức. Khi CPU yêu cầu chỉ lệnh (hoặc dữ liệu) được lưu tại một địa chỉ nào đó
thì bộ nhớ sẽ giữ chậm một khoảng thời gian để phân phối lệnh này (hoặc dữ
liệu) trở ngược lại. Trên các bộ nhớ hiện nay, nếu nó được dán nhãn có CL bằng 5
(CAS Latency, đây chính là độ trễ mà chúng ta đang nói đến) thì điều đó có nghĩa
rằng bộ nhớ sẽ cung cấp dữ liệu đã được yêu cầu sau 5 chu kỳ clock nhớ - nghĩa
là CPU sẽ phải chờ đợi.
Việc chờ đợi sẽ làm giảm hiệu suất của CPU. Nếu CPU phải đợi đến 5 chu kỳ
clock để nhận được chỉ lệnh hoặc dữ liệu mà nó đã u cầu thì hiệu suất của nó
sẽ chỉ cịn 1/5 so với hiệu suất sử dụng bộ nhớ có khả năng cung cấp dữ liệu tức
thời. Nói theo cách khác, khi truy cập bộ nhớ DDR2-800 với CL5 thì hiệu suất của
CPU bằng với hiệu suất của CPU làm việc với bộ nhớ 160 MHz (800 MHz / 5) với
khả năng cung cấp dữ liệu tức thời. Trong thế giới thực, việc giảm hiệu suất


khơng nhiều vì các bộ nhớ làm việc dưới chế độ có tên gọi là chế độ truyền loạt
(burst mode), ở nơi mà dữ liệu được tập trung lần thứ hai có thể được cung cấp
một cách ngay lập tức, nếu dữ liệu này được lưu trên một địa chỉ nối tiếp nhau
(thường thì chỉ lệnh của chương trình nào đó được lưu trong các địa chỉ liên tục).
Điều này được diễn tả bằng cơng thức “x-1-1-1” (có nghĩa “5-1-1-1” là cho bộ
nhớ dùng trong ví dụ của chúng ta), có nghĩa là dữ liệu đầu tiên được cung cấp
sau 5 chu kỳ xung clock, nhưng từ dữ liệu thứ hai trở đi thì chúng được cung cấp
chỉ trong một chu kỳ clock – nếu nó được lưu trên địa chỉ liên tiếp giống như
những gì chúng ta đã nói.
RAM động và Ram tĩnh
Có hai kiểu bộ nhớ RAM đó là RAM động (DRAM) và RAM tĩnh (SRAM). Bộ nhớ

RAM đã sử dụng trên các máy tính là loại RAM động. Kiểu RAM này, mỗi bit dữ
liệu được lưu bên trong chip nhớ bằng một tụ điện nhỏ, các tụ điện này là thành
phần rất nhỏ, nghĩa là có đến hàng triệu tụ điện trên một vùng diện tích mạch
điện nhỏ, điều này vẫn được người ta gọi là “mật độ cao”. Các tụ điện này có thể
bị mất điện áp tích tụ sau một thời gian, chính vì vậy các bộ nhớ động cần phải
có q trình nạp lại, quá trình này vẫn thường được chúng ta gọi là “làm tươi”
(refresh). Trong suốt chu kỳ này dữ liệu không thể được đọc ra hoặc được ghi
vào. Bộ nhớ động rẻ hơn so với bộ nhớ tĩnh và cũng tiêu thụ ít năng lượng hơn bộ
nhớ tĩnh. Tuy nhiên như chúng ta đã biết, trên RAM động, dữ liệu không được
cung cấp một cách sẵn sàng và nó có thể không làm việc nhanh bằng CPU.
Với bộ nhớ tĩnh, đây là kiểu bộ nhớ có thể làm việc nhanh bằng CPU, vì mỗi bit
dữ liệu đều được lưu trên một mạch có tên gọi flip-flop (F-F), mỗi một F-F này lại
có thể cung cấp dữ liệu với độ trễ rất nhỏ, vì các F-F khơng u cầu đến chu trình
làm tươi. Vấn đề ở đây là các F-F này lại u cầu một số transistor, có kích thước
to hơn so với một tụ điện trên RAM động. Điều này có nghĩa là trên cùng một
diện tích giống nhau, nơi mà ở bộ nhớ tĩnh chỉ có một F-F tồn tại thì trên bộ nhớ
động sẽ có đến hàng trăm tụ điện. Chính vì vậy các bộ nhớ tĩnh thường có mật
độ thấp hơn – các chíp có dung lượng thấp hơn. Hai vấn đề khác với bộ nhớ tĩnh
nữa là: nó thường đắt hơn nhiều và tiêu tốn nhiều năng lượng hơn (do đó nóng
hơn) so với bộ nhớ tĩnh.
Trong bảng dưới đây, chúng tơi có tóm tắt các sự khác nhau chính giữa RAM
động (DRAM) và RAM tĩnh (SRAM).
Tính năng

RAM động
(DRAM)

RAM tĩnh
(SRAM)


Mạch trữ điện

Tụ điện

Flip-flop

Tốc độ truyền
tải

Thấp hơn CPU

Bằng với CPU

Độ trễ

Cao

Thấp

Mật độ

Cao

Thấp


Tiêu tốn năng
lượng

Thấp


Cao

Giá thành

Rẻ

Đắt

Mặc dù Ram tĩnh có tốc độ nhanh hơn RAM động nhưng những nhược điểm của
nó vẫn ngăn cản nó trở thành RAM chính.
Giải pháp đã tìm thấy để giảm sự ảnh hưởng trong việc sử dụng bộ nhớ RAM
chậm hơn CPU là sử dụng một số lượng nhỏ các RAM tĩnh giữa CPU và bộ nhớ
RAM. Công nghệ này được gọi là bộ nhớ Cache và ngày nay có một số lượng nhỏ
bộ nhớ tĩnh này được đặt bên trong CPU.

Bộ nhớ Cache copy hầu hết các dữ liệu đã được truy cập gần đây từ bộ nhớ RAM
vào bộ nhớ tĩnh và đoán dữ liệu gì CPU sẽ hỏi tiếp theo, tải chúng đến bộ nhớ
tĩnh trước khi CPU yêu cầu thực sự. Mục đích là làm cho CPU có thể truy cập vào
bộ nhớ Cache thay vì truy cập trực tiếp vào bộ nhớ RAM, vì nó có thể truy vấn dữ
liệu từ bộ nhớ Cache một cách tức thời hoặc cũng hầu như ngay lập tức thay vì
phải đợi khi truy cập vào dữ liệu được đặt trong RAM. CPU càng truy cập vào
Cache nhớ thay cho RAM nhiều hơn thì hệ thống sẽ càng hoạt động nhanh hơn.
Cũng theo đó, chúng ta sẽ sử dụng hoán đổi hai thuật ngữ “dữ liệu” và “chỉ lệnh”
cho nhau vì những gì được lưu bên trong mỗi địa chỉ nhớ khơng có gì khác biệt
đối với bộ nhớ.
Chúng tơi sẽ giải thích một cách chính xác cách Cache nhớ làm việc như thế nào
ở phần tiếp theo của bài. Mời các bạn chờ đọc phần sau!

Tìm hiểu cách làm việc của bộ nhớ Cache (Phần 2)



Lịch sử về Cache nhớ trên các máy tính cá nhân (PC)
Trong phần này chúng tôi chỉ quan tâm đến các khía cạnh lịch sử
trước đây của bộ nhớ Cache. Nếu bạn khơng quan tâm đến chủ đề
này thì hồn tồn có thể bỏ qua để đọc phần tiếp theo

Bộ nhớ Cache được sử dụng đầu tiên trên các máy tính thời 386DX. Mặc dù bản
thân CPU khơng có bộ nhớ Cache bên trong nhưng mạch hỗ trợ của nó - chipset –
có một bộ điều khiển Cache nhớ. Vì điều đó nên Cache nhớ ở thời điểm này nằm
ở bên ngồi CPU và mang tính tùy chọn, nghĩa là nhà sản xuất bo mạch chủ có
thể thêm vào hoặc khơng. Nếu bạn có một bo mạch chủ mà khơng có bộ nhớ
Cache thì máy tính của bạn sẽ chậm hơn rất nhiều so với các máy tính có thành
phần này. Số lượng bộ nhớ Cache được cung cấp khác nhau và phụ thuộc vào
model của bo mạch chủ và các giá trị điển hình cho thời điểm đó là 64 KB và 128
KB. Cũng ở thời điểm này, bộ điều khiển Cache nhớ đã sử dụng một kiến trúc
được biết đến với tên “write-through”, dùng cho các hoạt động ghi – nghĩa là khi
CPU muốn lưu dữ liệu trong bộ nhớ thì bộ điều khiển Cache nhớ sẽ cập nhật bộ
nhớ RAM ngay lập tức.
Với các bộ vi xử lý 486DX, Intel đã bổ sung thêm một số lượng nhỏ (8KB) Cache
nhớ bên trong mỗi CPU. Cache nhớ bên trong này được gọi là L1 (level 1) hay
“internal”, còn các Cache nhớ bên ngoài được gọi là (level 2) hay “external”. Số
lượng và sự tồn tại của Cache nhớ bên ngoài phụ thuộc vào model của bo mạch
chủ. Số lượng điển hình cho thời điểm đó là 128 KB và 256 KB. Sau đó các mơ
hình 486 đã bổ sung thêm kiến trúc Cache “write back”, đây là kiến trúc đã được
sử dụng cho đến ngày nay, các hoạt động ghi của bộ nhớ RAM không được cập
nhật ngay tức khắc mà CPU lưu dữ liệu trên Cache nhớ và bộ điều khiển nhớ sẽ
cập nhật bộ nhớ RAM chỉ khi khơng có Cache.
Sau đó với các bộ vi xử lý Pentium đầu tiên, Intel đã tạo hai Cache nhớ bên trong
tách biệt nhau, một cho các chỉ lệnh và một cho dữ liệu (ở thời điểm này mỗi

Cache nhớ là 8 KB). Kiến trúc này vẫn được sử dụng cho đến ngày nay và đó
chính là tại sao đôi khi bạn vẫn thấy Cache nhớ L1 tồn tại được ghi 64 KB + 64
KB (ví dụ) – điều này là vì có một Cache chỉ lệnh L1 64KB và một Cache nhớ dữ
liệu L2 64KB. Chúng tôi sẽ giải thích cho các bạn về sự khác nhau của hai loại
Cache nhớ này. Tại thời điểm đó, Cache nhớ L2 thường được đặt trên bo mạch
chủ, chính vì vậy số lượng và sự tồn tại của nó phụ thuộc vào model của bo
mạch chủ. Rõ ràng việc hệ thống khơng có Cache nhớ là một điều khơng thể
chấp nhận. Số lượng điển hình cho thời điểm đó là 256 KB và 512 KB.
Các bộ vi xử lý AMD K5, K6 và K6-2 cũng đã sử dụng kiến trúc này, với K6-III thì
có thêm Cache nhớ thứ ba (L3, level 3).
Vấn đề với Cache nhớ nằm bên ngoài L2 là nó được truy cập với tốc độ clock
thấp hơn vì thế hệ 486DX2 tốc độ clock bên trong của CPU khác hoàn toàn với
tốc độ clock bên ngoài của CPU. Ví dụ Pentium-200 làm việc bên trong tại tốc độ
200MHz, nó đã truy cập vào bộ nhớ Cache L2 của nó với tốc độ 66MHz.


Sau kiến trúc P6, Intel đã chuyển sang Cache nhớ từ bo mạch chủ sang bên
trong CPU – điều đó đã cho phép CPU có thể truy cập với tốc độ clock bên trong –
ngoại trừ Pentium II (bộ nhớ Cache không được đặt bên trong CPU nhưng trên
cùng bo mạch in – nơi CPU được hàn gắn (bo mạch in này được đặt bên trong
một hộp chứa)), lại chạy bằng một nửa tốc độ clock trong của CPU. Trên Celeron266 và Celeron-300, các model này khơng có Cache nhớ (chính vì vậy chúng là
các CPU tồi tệ nhất trong lịch sử).
Kiến trúc được sử dụng cho đến ngày nay cũng tương tự như vậy: cả hai Cache
nhớ L1 và L2 đều được đặt bên trong CPU và chạy với tốc độ clock bên trong của
CPU. Chính vì vậy số lượng Cache nhớ mà bạn có trên hệ thống sẽ phụ thuộc vào
model của CPU; khơng có cách nào để có thể tăng được số lượng Cache nhớ mà
khơng cần thay thế CPU.
Xem xét các Cache nhớ
Trong hình 2, bạn sẽ thấy sơ đồ khối cơ bản của một CPU một lõi. Sơ đồ khối cụ
thể sẽ thay đổi phụ thuộc vào CPU.



Hình 2: Sơ đồ khối cơ bản của một CPU
Đường chấm trên hình 2 thể hiện phần thân của CPU, vì bộ nhớ RAM được đặt
bên ngồi CPU. Đường dữ liệu giữa bộ nhớ RAM và CPU có độ rộng 64 –bit thơng
thường (hoặc 128 khi cấu hình hai kênh được sử dụng), đang chạy với tốc độ
clock nhớ hoặc clock ngoài của CPU (hoặc clock của bus nhớ, trong trường hợp
đối với các bộ vi xử lý của AMD).
Tất cả các mạch bên trong phần chấm đều chạy với tốc độ clock của CPU. Phụ


thuộc vào CPU mà một số thành phần bên trong nó thậm chí cịn có thể chạy với
tốc độ clock cao hơn. Còn đường dẫn giữa các khối CPU cũng có thể rộng hơn,
nghĩa là sẽ truyền tải nhiều bit hơn trên mỗi một chu kỳ xung clock (nhiều hơn
64 hoặc 128). Ví dụ, đường dữ liệu giữa bộ nhớ Cache L2 và Cache chỉ lệnh L1
trên các bộ vi xử lý hiện đại thường có độ rộng 256-bit. Đường dữ liệu giữa Cache
chỉ lệnh L1 và khối tìm nạp của CPU cũng thay đổi phụ thuộc vào mơ hình của
từng CPU – 128 bit là giá trị điển hình, tuy nhiên ở phần cuối của hướng dẫn này
chúng tôi sẽ giới thiệu cho một bảng chỉ tiêu kỹ thuật của các Cache nhớ chính
đối với các CPU được bán trên thị trường hiện nay. Số lượng truyền tải các bit
trên một chu kỳ xung nhịp càng cao thì sự truyền tải càng diễn ra nhanh hơn (nói
theo cách khác là tốc độ truyền tải sẽ nhanh hơn).
Nói chung, tất cả các CPU hiện đại đều có đến ba Cache nhớ: L2 là Cache nhớ lớn
hơn và có thể tìm thấy ở giữa bộ nhớ RAM và Cache chỉ lệnh L1, nó nắm giữ cả
các chỉ lệnh và dữ liệu; Cache chỉ lệnh L1 được sử dụng để lưu các chỉ lệnh đã
được thực thi bởi CPU và lưu dữ liệu để có thể được ghi ngược trở lại bộ nhớ.
L1 và L2 có nghĩa là “Level 1” và “Level 2”, ám chỉ khoảng cách từ chúng đến lõi
CPU (khối thực thi). Có một sự nghi ngờ đó là tại sao lại có đến ba Cache nhớ
tách biệt (Cache nhớ dữ liệu L1, Cache nhớ chỉ lệnh L1 và Cache L2).
Để làm cho độ trễ của bộ nhớ tĩnh giảm xuống bằng “0” là một điều rất khó

khăn, đặc biệt với các CPU đang chạy ở tốc độ clock rất cao. Do việc sản xuất
các RAM tĩnh có độ trễ xấp xỉ “0” là rất khó nên các hãng sản xuất đã sử dụng
một kiểu bộ nhớ chỉ ở trên Cache nhớ L1. Cache nhớ L2 sử dụng RAM tĩnh không
nhanh bằng bộ nhớ được sử dụng trên Cache nhớ L1, điều này là do nó có độ trễ
nhất định, chính vì vậy nó sẽ chậm hơn đơi chút so với Cache nhớ L1.
Hãy chú ý vào hình 2 chúng ta sẽ thấy được rằng Cache chỉ lệnh L1 làm việc
giống như một “Cache đầu vào”, còn Cache dữ liệu L1 làm việc giống như một
“Cache đầu ra”. Cache chỉ lệnh L1 (thường nhỏ hơn Cache L2) có hiệu quả cao
hơn khi chương trình bắt đầu lặp lại một số phần nhỏ của nó, đó cũng là do các
chỉ lệnh đã được yêu cầu sẽ gần khối tìm nạp hơn.
Một điều cũng hiếm khi được đề cập đến, nhưng Cache chỉ lệnh L1 cũng được sử
dụng để lưu các dữ liệu khác bên cạch các chỉ lệnh đã được giải mã. Phụ thuộc
vào CPU mà nó có thể được sử dụng để lưu một số dữ liệu tiền giải mã và việc rẽ
nhánh thơng tin (nhìn chung, dữ liệu điều khiển sẽ làm tăng được tốc độ của quá
trình giải mã) và đơi khi Cache chỉ lệnh L1 cịn lớn hơn cả những gì đã tuyên bố,
điều này là do nhà sản xuất thường không bổ sung vào không gian mở rộng sẵn
có cho những phần thơng tin mở rộng này.
Trong trang các chỉ tiêu kỹ thuật của CPU, Cache L1 có thể có nhiều kiểu khác
nhau. Một số nhà sản xuất liệt kê hai Cache L1 tách biệt hoàn tồn với nhau (có
khi gọi Cache chỉ lệnh là “I” và Cache dữ liệu là “D”), đôi khi lại bổ sung thêm cả
số lượng và phần ký hiệu “separated”, nếu “128 KB, separated” thì điều đó có
nghĩa là Cache chỉ lệnh 64KB và Cache dữ liệu 64KB, một số hãng đã thực hiện
để bạn có thể đốn được số lượng tổng thể và phải chia hai để có được dung
lượng của mỗi Cache. Mặc dù vậy cũng có trường hợp ngoại lệ đối với các CPU


được xây dựng trên kiến trúc Netburst, chẳng hạn như Pentium 4, Pentium D,
Pentium 4 dựa trên Xeon và các CPU của Celeron dòng Pentium 4.
Các bộ vi xử lý dựa trên kiến trúc Netburst khơng có Cache chỉ lệnh L1, thay vào
đó chúng có một Cache thực thi dị theo (hay có thể gọi là lần vết), Cache này

được đặt giữa khối giải mã và khối thực thi, lưu các chỉ lệnh đã được giải mã.
Chính vì vậy có thể nói Cache chỉ lệnh L1 là nó, nhưng được ẩn dưới một tên
hoàn toàn khác và đặt ở vị trí cũng khác. Chúng ta sẽ đề cập đến vấn đề này ở
đây vì đây là một lỗi rất hay mắc phải, mọi người thường nghĩ rằng các CPU
Pentium 4 khơng có Cache chỉ lệnh L1. Điều này dẫn đến hiện tượng khi so sánh
Pentium 4 với các CPU khác mọi người thường nghĩ rằng Cache L1 của nó có
dung lượng nhỏ hơn, do họ chỉ tính 8KB của Cache dữ liệu L1. Cache thực thi lần
vết của các CPU xây dựng trên kiến trúc Netburst là 150KB.
L2 Memory Cache trên các CPU đa lõi
Trên các CPU có nhiều hơn một lõi, kiến trúc Cache L2 có thay đổi khá nhiều, sự
thay đổi này phụ thuộc vào từng loại CPU.
Với các CPU dual-core Pentium D và AMD được xây dựng trên kiến trúc K8, mỗi
lõi của CPU lại có Cache nhớ L2 riêng của chính nó. Chính vì vậy mỗi một lõi làm
việc như nó đang làm việc cho một CPU độc lập.
Các CPU dual-core của Intel được xây dựng trên kiến trúc Core và Pentium M thì
hai Cache nhớ L2 lại có thể được chia sẻ giữa hai lõi.
Hãng Intel nói rằng, kiến trúc chia sẻ này cho hiệu suất thực thi tốt hơn vì trên
phương pháp Cache riêng vì ở một thời điểm nào đó một lõi này có thể chạy quá
tải trong khi đó lõi kia lại không được sử dụng hoặc sử dụng không hết hiệu suất
trên chính Cache L2 của nó. Khi xảy ra điều này, lõi chạy quá tải sẽ lấy dữ liệu từ
bộ nhớ RAM chính mặc dù khơng gian trên Cache nhớ L2 kia hoàn toàn trống mà
lẽ ra nên được sử dụng để lưu dữ liệu và tránh không để cho lõi quá tải truy cập
lấy dữ liệu từ bộ nhớ RAM làm giảm hiệu suất của toàn hệ thống. Với phương
pháp mới này, bộ vi xử lý Core 2 Duo với Cache nhớ L2 4MB, thì một lõi này có
thể sử dụng đến 3,5MB trong khi đó lõi cịn lại sử dụng 0,5MB, hoàn toàn tương
phải với hệ số chia cố định 50%-50% như trên các CPU dual-core.
Có thể nói theo cách khác, các CPU quad-core hiện tại của Intel như Core 2
Extreme QX và Core 2 Quad sử dụng 2 chíp dual-core, nghĩa là việc chia sẻ này
chỉ xuất hiện giữa các lõi 1 và 2, 3 và 4. Hiện nay, Intel đã lên kế hoạch cho các
CPU quad-core sử dụng một chíp đơn. Với phương pháp này, Cache L2 sẽ được

chia sẻ giữa bốn lõi.
Trên hình 3 bạn có thể thấy được sự so sánh giữa các giải pháp Cache nhớ L2
này.


Hình 3: So sánh các giải pháp Cache nhớ L2 hiện có trên các CPU đa lõi
Bộ vi xử lý AMD xây dựng trên kiến trúc K10 sẽ có Cache L3 chia sẻ nằm bên
trong CPU, và có một kiểu lai giữa hai phương pháp này. Vấn đề này được thể
hiện trên hình 4. Kích thước của Cache này sẽ phụ thuộc vào mơ hình của CPU,
cũng giống như những gì xảy ra với kích thước của Cache L2.


Hình 4: Kiến trúc Cache K10

Tìm hiểu cách làm việc của bộ nhớ Cache (Phần 3)
Cách làm việc
Khối tìm nạp của CPU sẽ tìm kiếm chỉ lệnh kế tiếp để được thực
thi trong Cache chỉ lệnh L1. Nếu khơng có ở đó thì nó sẽ tìm
kiếm trên Cache L2. Sau khi đó nếu cũng khơng có thì nó sẽ
phải truy cập vào bộ nhớ RAM để nạp chỉ lệnh.

Chúng tôi gọi là một “hit” khi CPU nạp một chỉ lệnh đã được yêu cầu hoặc dữ liệu
từ Cache, và gọi là một “miss” nếu chỉ lệnh hoặc dữ liệu được u cầu khơng có
ở đó và CPU cần phải truy cập trực tiếp vào bộ nhớ RAM để lấy dữ liệu này.
Rõ ràng khi bạn mới bật máy tính thì Cache là hồn tồn trống rỗng, vì vậy hệ
thống sẽ phải truy cập vào bộ nhớ RAM – đây là một miss đối với Cache không
thể tránh. Tuy nhiên sau khi chỉ lệnh đầu tiên được nạp, thì quá trình này sẽ bắt
đầu.
Khi CPU nạp một chỉ lệnh từ một vị trí nhớ nào đó thì mạch đã gọi bộ điều khiển
Cache nhớ sẽ nạp vào trong Cache nhớ một khối dữ liệu nhỏ bên dưới vị trí hiện

hành mà CPU vừa mới nạp. Do các chương trình thường được thực hiện theo cách
tuần tự nên vị trí nhớ tiếp theo mà CPU sẽ yêu cầu có thể là vị trí ngay bên dưới
vị trí nhớ mà nó vừa nạp. Cũng do bộ điều khiển Cache nhớ đã nạp một số dữ


liệu bên dưới vị trí đầu tiên được đọc bởi CPU rồi nên dữ liệu kế tiếp sẽ có thể
nằm ở bên trong Cache nhớ, chính vì vậy CPU khơng cần phải truy cập vào RAM
để lấy dữ liệu trong đó: nó đã được nạp vào bên trong Cache nhớ nhúng trong
CPU, điều này làm cho nó có thể truy cập với tốc độ clock bên trong.
Lượng dữ liệu này được gọi là dịng và nó thường có chiều dài 64 byte.
Bên cạnh việc nạp một số lượng nhỏ dữ liệu này, bộ điều khiển nhớ cũng ln
tìm cách đốn xem những gì CPU sẽ yêu cầu tiếp theo. Một mạch có tên gọi là
mạch tìm nạp trước, sẽ nạp nhiều dữ liệu được đặt sau 64 byte đầu tiên hơn từ
RAM vào Cache nhớ. Nếu chương trình tiếp tục nạp chỉ lệnh và dữ liệu từ các vị
trí nhớ theo cách tuần tự như vậy thì các chỉ lệnh và dữ liệu mà CPU sẽ hỏi tiếp
theo đã được nạp vào trong Cache nhớ từ trước rồi.
Chúng ta có thể tóm tắt cách Cache nhớ làm việc như sau:
1. CPU yêu cầu chỉ lệnh hoặc dữ liệu đã được lưu tại địa chỉ “a”.
2. Do nội dung từ địa chỉ “a” khơng có bên trong Cache nhớ nên CPU phải tìm
nạp nó trực tiếp từ RAM.
3. Bộ điều khiển Cache sẽ nạp một dòng (thường là 64 byte) bắt đầu từ địa chỉ
“a” vào Cache nhớ. Nó sẽ nạp nhiều hơn dữ lượng dữ liệu mà CPU yêu cầu, chính
vì vậy nếu chương trình tiếp tục chạy tuần tự (nghĩa là yêu cầu địa chỉ a +1) thì
chỉ lệnh hoặc dữ liệu kế tiếp mà CPU sẽ hỏi đã được nạp trong Cache nhớ từ
trước đó rồi.
4. Mạch có tên gọi là tìm nạp trước sẽ nạp nhiều dữ liệu được đặt sau dịng này,
có nghĩa là bắt đầu việc nạp các nội dung từ địa chỉ a + 64 trở đi vào Cache. Để
cho bạn một ví dụ thực tế là các CPU của Pentium 4 có bộ tìm nạp trước 256byte, chính vì vậy nó có thể nạp được 256byte kế tiếp sau dòng dữ liệu đã được
nạp vào trong Cache.
Nếu chương trình chạy một cách tuần tự thì CPU sẽ khơng cần phải tìm nạp dữ

liệu bằng cách truy cập trực tiếp vào bộ nhớ RAM, ngoại trừ nạp mỗi chỉ lệnh đầu
tiên – vì các chỉ lệnh và dữ liệu được yêu cầu bởi CPU sẽ luôn nằm bên trong
Cache nhớ trước khi CPU yêu cầu đến chúng.
Mặc dù các chương trình khơng chạy ln giống như vậy, đơi khi chúng có thể
nhảy từ một vị trí nhớ này sang vị trí nhớ khác. Thách thức chính của bộ điều
khiển Cache chính là việc đốn những địa chỉ gì mà CPU sẽ nhảy đến, và từ đó
nạp những nội dung của địa chỉ này vào trong Cache nhớ trước khi CPU yêu cầu
để tránh trường hợp CPU phải truy cập vào bộ nhớ RAM là giảm hiệu suất của hệ
thống. Nhiệm vụ này được gọi là dự đoán rẽ nhánh và tất cả các CPU hiện đại
đều có tính năng này.
Các CPU hiện đại có tốc độ hit ít nhất cũng là 80%, nghĩa là 80% của thời gian
CPU không truy cập trực tiếp vào bộ nhớ RAM, mà thay vào đó là Cache nhớ.
Tổ chức Cache nhớ


Cache nhớ được chia thành các dòng bên trong, mỗi một dòng dữ từ 16 đến
128byte, phụ thuộc vào CPU. Đối với đại đa số các CPU hiện hành thì Cache nhớ
được tổ chức theo các dịng 64byte (512bit), chính vì vậy chúng tơi sẽ xem xét
đến Cache nhớ đang sử dụng dịng 64byte trong các ví dụ xun suốt từ đầu
hướng dẫn này. Phần dưới chúng tơi sẽ trình bày các chi tiết kỹ thuật chính của
Cache nhớ cho tất cả các CPU hiện đang có trên thị trường.
Cache nhớ 512 KB L2 được chia thành 8.192 dòng. Bạn nên lưu ý rằng 1KB là
2^10 hay 1.024 byte chứ khơng phải là 1.000byte, chính vì vậy 524.288 / 64 =
8.192. Chúng ta sẽ xem xét đến CPU một lõi có Cache nhớ 512 KB L2 trong các
ví dụ. Trên hình 5 chúng tơi mơ phỏng cách tổ chức bên trong của Cache nhớ
này.

Hình 5: Cách tổ chức Cache nhớ L2 512 KB
Cache nhớ có thể làm việc dưới ba kiểu cấu hình khác nhau: bản đồ hóa trực
tiếp, liên kết tồn bộ và tập liên kết (theo nhiều dịng).

Bản đồ hóa trực tiếp
Bản đồ hóa trực tiếp là cách đơn giản nhất để tạo một Cache nhớ. Trong cấu hình
này, bộ nhớ RAM chính được chia thành các dịng bằng nhau nằm bên trong
Cache nhớ. Nếu chúng ta có một hệ thống 1GB RAM thì 1GB này sẽ được chia
thành 8.192 khối (giả dụ rằng Cache nhớ sử dụng cấu hình mà chúng ta đã mơ
tả ở trên), mỗi một khối có 128KB (1.073.741.824 / 8.192 = 131.072 – lưu ý rằng
1GB là 2^30 bytes, 1 MB là 2^20 byte và 1 KB sẽ là 2^10 byte). Nếu hệ thống
của bạn có 512MB thì bộ nhớ cũng sẽ được chia thành 8.192 khối nhưng mỗi một
khối này chỉ có 64 KB. Chúng tơi có minh chứng cách tổ chức này trong hình 6
bên dưới.


Hình 6: Cách bản đồ hóa trực tiếp các làm việc của Cache
Ưu điển của phương pháp bản đồ hóa trực tiếp là nó là cách đơn giản nhất.
Khi CPU yêu cầu một địa chỉ nào đó từ bộ nhớ RAM (ví dụ địa chỉ 1.000) thì bộ
điều khiển Cache sẽ nạp một dòng (64byte) từ bộ nhớ RAM và lưu dòng này trên
Cache nhớ (nghĩa là từ địa chỉ 1.000 đến 1.063, giả dụ rằng chúng ta đang sử
dụng lược đồ địa chỉ 8 bit). Vì vậy nếu CPU lại yêu cầu các nội dung của địa chỉ
này hoặc của một số địa chỉ tiếp theo sau đó (nghĩa là các địa chỉ từ 1.000 đến
1.063) thì chúng sẽ được nằm sẵn bên trong Cache.
Vấn đề ở đây là nếu CPU cần đến hai địa chỉ được bản đồ hóa đến cùng một
dịng Cache giống nhau, thì lúc này một miss sẽ xuất hiện (vấn đề này được gọi
là hiện tượng xung đột). Tiếp tục ví dụ của chúng ta, nếu CPU yêu cầu địa chỉ
1.000 và sau đó yêu cầu địa chỉ 2.000 thì một miss cũng sẽ xuất hiện vì hai địa
chỉ này đều nằm trong cùng một khối 128KB, và những gì bên trong Cache là


một dịng bắt đầu từ địa chỉ 1.000. Chính vì vậy bộ điều khiển Cache sẽ nạp một
dòng từ địa chỉ 2.000 và lưu nó trên dịng đầu tiên của Cache nhớ, xóa các nội
dung trước đó, trong trường hợp của chúng ta thì đó là dịng từ địa chỉ 1.000.

Cũng một vấn đề nữa. Nếu chương trình có một vịng lặp nhiều hơn 64 bytes thì
lúc này cũng có một miss xuất nhiện trong toàn bộ khoảng thời gian của vịng
lặp.
Ví dụ, nếu vịng lặp thực hiện từ địa chỉ 1.000 đến địa chỉ 1.100 thì CPU sẽ phải
nạp tất cả các chỉ lệnh trực tiếp từ bộ nhớ RAM trong suốt khoảng thời gian của
vòng lặp. Vấn đề này sẽ xảy ra vì Cache sẽ có nội dung từ các địa chỉ 1.000 đến
1.063 và khi CPU yêu cầu các nội dung từ địa chỉ 1.100 thì nó sẽ phải vào bộ nhớ
RAM để lấy dữ liệu, và sau đó bộ điều khiển Cache sẽ nạp các địa chỉ từ 1.100
đến 1.163. Khi CPU yêu cầu lại địa chỉ 1.000 thì nó sẽ phải quay trở lại bộ nhớ
RAM, vì lúc này Cache sẽ khơng có các thành phần dữ liệu từ địa chỉ 1.000. Nếu
vòng lặp này được thực thi 1.000 lần thì CPU sẽ phải vào bộ nhớ RAM để nạp dữ
liệu cũng 1.000 lần.
Đó chính là lý do tại sao việc bản đồ hóa trực tiếp Cache nhớ lại ít hiệu quả và ít
được sử dụng nữa.
Sự liên kết tồn bộ
Cấu hình liên kết tồn bộ, hay nói theo cách khác là khơng có sự khó khăn trong
việc liên kết giữa các dịng của Cache nhớ và vị trí của bộ nhớ RAM. Bộ điều
khiển Cache có thể lưu bất kỳ địa chỉ nào. Như vậy các vấn đề đã được nói ở trên
sẽ khơng xảy ra. Cấu hình này là cấu hình hiệu quả nhất (nghĩa là cấu hình có
tốc độ hit cao nhất).
Nói theo cách khác, mạch điều khiển sẽ phức tạp hơn nhiều, vì nó cần phải giữ
được việc kiểm tra xem các vị trí nhớ nào được nạp bên trong Cache nhớ. Điều
này là lý do cho ra đời một giải pháp lai – có tên gọi là tập liên kết – được sử
dụng rộng rãi ngày nay.

Tìm hiểu cách làm việc của bộ nhớ Cache (Phần cuối)
Tập Cache liên kết n dịng
Trong cấu hình này, Cache nhớ được chia thành một vài khối
(các tập), mỗi khối gồm có “n” dịng.


Một tập 4 dịng Cache liên kết thì Cache nhớ sẽ có 2.048 khối, mỗi khối gồm có 4
dịng (8.192 dịng / 4), với tập 2 dịng Cache liên kết thì Cache nhớ sẽ có 4.096
khối, mỗi khối gồm 2 dịng. Chúng ta sẽ tiếp tục ví dụ với Cache nhớ L2 512 KB,
Cache nhớ này sẽ chia thành 8.192 dòng, mỗi dịng 64-byte. Phụ thuộc vào CPU
mà số khối có thể khác nhau.


Hình 7: Cache nhớ L2 512 KB khi được cấu hình thành một tập 4 dịng liên kết
Khi bộ nhớ RAM được chia thành các khối bằng nhau trong Cache nhớ. Vẫn ví dụ
tập 4 dịng 512 KB liên kết, RAM chính sẽ được chia thành 2.048 khối nằm trong
Cache nhớ. Mỗi khối nhớ lại được liên kết đến một tập các dòng bên trong Cache,
giống như trong Cache đã được bản đồ hóa trực tiếp. Với 1GB, bộ nhớ sẽ được
chia thành 2.048 khối, mỗi khối 512KB, bạn có thể xem trong hình 8.


Hình 8: Cache nhớ L2 512 KB được cấu hình thành một tập 4 dịng liên kết
Như những gì bạn có thể thấy được, việc bản đồ hóa là hồn tồn giống với
những gì xảy ra với Cache được bản đồ hóa trực tiếp, sự khác biệt ở đây là mỗi
một khối nhớ hiện có nhiều dịng trên cùng một Cache. Mỗi một dòng lại giữ
nhiều nội dung từ các địa chỉ bên trong các khối đã được bản đồ hóa. Trên tập 4
dịng liên kết, mỗi tập trên Cache nhớ có thể giữ đến 4 dịng từ cùng một khối
nhớ.
Với phương pháp này, các vấn đề gặp phải đối với phương pháp bản đồ hóa trực
tiếp khơng cịn nữa (cả các vấn đề xung đột do vòng lặp mà chúng ta đã mô tả
trên). Ở đây, tập Cache liên kết dễ dàng thực thi hơn so với Cache liên kết tồn
bộ, vì logic điều khiển của nó đơn giản hơn. Vì điều đó mà phương pháp này được
sử dụng nhiều ngày nay, mặc dù nó cung cấp hiệu suất thấp hơn so với cách liên
kết toàn bộ.
Rõ ràng chúng ta vẫn có một số lượng hạn chế các khe bên trong mỗi một tập
Cache nhớ đối với mỗi một khối nhớ - 4 trên cấu hình 4 dịng. Sau khi 4 khe này

được sử dụng, bộ điều khiển Cache sẽ phải giải phóng một trong số chúng để lưu
chỉ lệnh kế tiếp đã được nạp từ cùng khối nhớ.
Khi chúng ta tăng số dịng thì Cache nhớ tập liên kết (ví dụ với cấu hình 4 hoặc


8) sẽ có nhiều khe có sẵn hơn trên mỗi tập, tuy nhiên nếu giữ nguyên số lượng
của Cache nhớ thì kích thước của mỗi khối nhớ cũng sẽ tăng. Tiếp tục ví dụ của
chúng ta, việc chuyển từ 4 dòng sang 8 dòng sẽ làm cho bộ nhớ 1GB RAM có thể
được chia thành 1.024 khối 1MB. Vì vậy cách làm này sẽ tăng số khe có sẵn trên
mỗi một tập nhưng mỗi tập lúc này phải chịu trách nhiệm với một khối nhớ lớn
hơn.
Có rất nhiều thảo luận trừu tượng liên quan đến việc cân bằng hoàn hảo giữa số
các tập và kích thước khối nhớ và tất cả đều chưa có câu trả lời thích đáng - Intel
và AMD cũng sử dụng các cấu hình khác nhau, bạn có thể xem trong bảng bên
dưới.
Vậy điều gì sẽ xảy ra nếu chúng ta có một Cache nhớ lớn? Vẫn giữ ví dụ ở trên,
nếu chúng ta tăng Cache nhớ L2 từ 512 KB thành 1MB (chỉ có một cách thực
hiện là thay thế một CPU mới), thì điều xảy ra là chúng ta sẽ có 16.384 dịng 64
byte trong Cache nhớ, điều đó cho chúng ta có đến 4.096 tập và mỗi tập có 4
dịng. Bộ nhớ 1MB RAM của chúng ta sẽ được chia thành 4.096 khối 256MB. Vì
vậy về cơ bản những gì xảy ra là kích thước của mỗi khối nhớ giảm hơn và tăng
số lần dữ liệu được yêu cầu nằm bên trong Cache nhớ - hay nói cách khác, tăng
kích thước Cache sẽ làm giảm được tốc độ miss đối với Cache.
Tuy vậy, việc tăng Cache nhớ không phải là điều bảo đảm cho việc tăng hiệu
suất. Tăng kích thước của bộ nhớ Cache chỉ cho phép có nhiều hơn dữ liệu được
lưu trữ nhưng một câu hỏi đặt ra là liệu CPU sẽ sử dụng dữ liệu mở rộng đó hay
khơng. Ví dụ, cho một CPU một lõi có Cache L2 4MB. Nếu CPU sử dụng nghiêng
về 1MB là chủ yếu còn khơng q nặng về phía 3MB kia (nghĩa là hầu hết các chỉ
lệnh đã truy cập sẽ chiếm 1MB và trên 3 MB kia CPU đã chứa các chỉ lệnh khơng
được gọi đến nhiều), lúc này CPU sẽ có hiệu suất giống với một CPU chỉ có 2 MB

hoặc thậm chí Cache nhớ L2 1MB.
Cấu hình Cache nhớ trên các CPU hiện nay
Dưới đây chúng tơi trình bày cho các bạn một bản tham chiếu gồm có các chi
tiết kỹ thuật của Cache nhớ đối với các CPU hiện đang có trên thị trường.
CPU
Athlon 64

Cache chỉ lệnh L1

Cache dữ
liệu L1

L2 Cache L2

64 KB

64 KB

Tập liên kết 2 dòng

Tập liên kết 2
dòng
Tập liên kết 16
dòng
Mỗi dòng 64
byte
Mỗi dòng 64byte

Mỗi dòng 64 byte
Đường dữ liệu 128 –

bit cho L2
Đường dữ liệu 128 –
bit cho khối tìm nạp

512 KB hoặc 1
MB

Đường dữ liệu Đường dữ liệu
128 – bit cho 128 – bit cho
L2
Cache dữ liệu L1


Đường dữ liệu
128 – bit cho
Cache chỉ lệnh
L1
1MB trên mỗi lõi
64KB trên mỗi lõi
Tập liên kết 2 dòng
Mỗi dòng 64 byte
Athlon 64 FX
Đường dữ liệu 128 –
bit cho L2
Đường dữ liệu 128 –
bit cho khối tìm nạp

64KB trên mỗi
Tập liên kết 16
lõi

dòng
Tập liên kết 2
Mỗi dòng 64byte
dòng
Mỗi dòng
64byte

Đường dữ liệu
128 – bit cho
Cache dữ liệu L1

Đường dữ liệu
Đường dữ liệu
128 – bit cho
128 – bit cho
Cache L2
Cache chỉ lệnh
L1
512KB hoặc 1MB
trên mỗi lõi

64KB trên mỗi lõi
Tập liên kết 2 dòng
Mỗi dòng 64 byte
Athlon 64 X2
Đường dữ liệu 128 –
bit cho L2
Đường dữ liệu 128 –
bit cho khối tìm nạp


Sempron
(sockets 754
and AM2)

64KB

64KB trên mỗi
lõi
Tập liên kết 16
dòng
Tập liên kết 2
dòng
Mỗi dòng 64byte
Mỗi dòng
64byte

Đường dữ liệu
128 – bit cho
Cache dữ liệu L1

Đường dữ liệu
128 – bit cho Đường dữ liệu
Cache L2
128 – bit cho
Cache chỉ lệnh
L1
64KB trên mỗi 128 KB hoặc 256
lõi
KB


Tập liên kết 2 dòng
Mỗi dòng 64 byte

Tập liên kết 2 Tập liên kết 16
dòng
dòng

Đường dữ liệu 128 –
bit cho L2

Mỗi dịng
64byte

Đường dữ liệu 128 –
bit cho khối tìm nạp

Đường dữ liệu
Đường dữ liệu 128 – bit cho
128 – bit cho Cache dữ liệu L1
Cache L2

Mỗi dòng 64byte


Đường dữ liệu
128 – bit cho
Cache chỉ lệnh
L1
1MB trên mỗi lõi


64KB trên mỗi lõi

Opteron

Tập liên kết 2
dòngĐường dữ liệu
128 – bit cho L2
Đường dữ liệu 128 –
bit cho khối tìm nạp

Tập liên kết 16
64KB trên mỗi
dòng
lõi Tập liên kết
2 dòng
Mỗi dòng 64byte
Mỗi dòng
64byte

Đường dữ liệu
128 – bit cho
Cache dữ liệu L1

Đường dữ liệu
128 – bit cho
Đường dữ liệu
Cache L2
128 – bit cho
Cache chỉ lệnh
L1

8KB

256 KB, 512 MB
hoặc 1 MBTập
liên kết 16 dòng

Tập liên kết 4
Mỗi dòng 128
dòng
byte
Pentium 4

N/A *

Mỗi dòng
64byte

Đường dữ liệu 64
– bit cho khối tìm
nạp

Đường dữ liệu
256 – bit cho
Đường dữ liệu
Cache L2
256 – bit cho
Cache dữ liệu L1
Pentium D

N/A *


16KB

1 MB hoặc 2 MB
trên mỗi lõi

Tập liên kết 4
dòng
Tập liên kết 8
dòng
Mỗi dòng
64byte
Mỗi dòng 128
byte
Đường dữ liệu
256 – bit cho Đường dữ liệu 64
Cache L2
– bit cho khối tìm
nạp
Đường dữ liệu
256 – bit cho


Cache dữ liệu L1
2 MB hoặc 4 MB
32 KB
32 KB
Core 2 Duo

Mỗi dòng 64 byte

Đường dữ liệu 256 –
bit cho khối tìm nạp

Mỗi dịng 64
byte

Tập liên kết 8
dịng
Mỗi dịng 64
byte

Đường dữ liệu
256 – bit cho
Đường dữ liệu
Cache L2
256 – bit cho
Cache dữ liệu L1
1MB
32 KB

32 KB
Pentium Dual
Core

Mỗi dòng 64 byte
Đường dữ liệu 256 –
bit cho khối tìm nạp

Mỗi dịng 64
byte


Tập liên kết 8
dòng
Mỗi dòng 64
byte

Đường dữ liệu
256 – bit cho
Đường dữ liệu
Cache L2
256 – bit cho
Cache dữ liệu L1

*N/A: Có Cache lần vết 150 KB trên mỗi bộ vi xử lý. Cache này được
đặt giữa khối giải mã và khối thực thi. Như vậy khối tìm nạp sẽ lấy
dữ liệu trực tiếp từ Cache nhớ L2.
Chúng tôi không giới thiệu các bộ vi xử lý Xeon và Celeron trong bảng trên vì có
một số mơ hình của Xeon và Celeron khác được dựa trên các kiến trúc khác.
Xeon và Celeron được xây dựng trên kiến trúc Netburst (nghĩa là dựa trên kiến
trúc Pentium 4) sẽ có các chỉ tiêu kỹ thuật tương tự như Pentium 4 nhưng có kích
thước Cache L2 khác đơi chút, cịn Celeron và Xeon được xây dựng trên kiến trúc
Core (nghĩa là dựa trên Core 2 Duo) sẽ có các chi tiết kỹ thuật giống với Core 2
Duo nhưng có kích thước Cache L2 khác.



×