Triển khai kiến ​​trúc game engine đa luồng. Trạng thái đồng thời

* Luôn có những câu hỏi cấp bách về những gì bạn nên chú ý khi chọn bộ xử lý để không mắc sai lầm.

Mục tiêu của chúng tôi trong bài viết này là mô tả tất cả các yếu tố ảnh hưởng đến hiệu suất bộ xử lý và các đặc tính hoạt động khác.

Có lẽ không có gì bí mật khi bộ xử lý là đơn vị tính toán chính của máy tính. Bạn thậm chí có thể nói – phần quan trọng nhất của máy tính.

Chính anh ta là người xử lý hầu hết tất cả các quy trình và tác vụ xảy ra trong máy tính.

Có thể là xem video, nghe nhạc, lướt Internet, viết và đọc trong bộ nhớ, xử lý 3D và video, trò chơi. Và nhiều hơn nữa.

Vì vậy, để lựa chọn C trung tâm P bộ xử lý, bạn nên xử lý nó thật cẩn thận. Có thể xảy ra trường hợp bạn quyết định cài đặt một card màn hình mạnh và bộ xử lý không tương ứng với cấp độ của nó. Trong trường hợp này, bộ xử lý sẽ không bộc lộ tiềm năng của card màn hình, điều này sẽ làm chậm hoạt động của nó. Bộ xử lý sẽ được tải đầy đủ và sôi theo đúng nghĩa đen, và card màn hình sẽ chờ đến lượt, hoạt động ở mức 60-70% khả năng của nó.

Đó là lý do tại sao khi chọn một máy tính cân bằng, Không chi phí bỏ bê bộ xử lýủng hộ một card màn hình mạnh mẽ. Sức mạnh của bộ xử lý phải đủ để phát huy tiềm năng của card màn hình, nếu không thì chỉ lãng phí tiền bạc.

Intel vs. AMD

*bắt kịp mãi mãi

Tập đoàn Intel, có nguồn nhân lực khổng lồ và nguồn tài chính gần như vô tận. Nhiều cải tiến trong ngành bán dẫn và công nghệ mới đến từ công ty này. Bộ xử lý và sự phát triển Intel, trung bình bằng 1-1,5 nhiều năm đi trước thành tựu của các kỹ sư AMD. Nhưng như bạn đã biết, bạn phải trả tiền để có cơ hội sở hữu những công nghệ hiện đại nhất.

Chính sách giá bộ xử lý Intel, đều dựa trên số lượng lõi, số lượng bộ nhớ đệm, nhưng cũng trên “sự tươi mới” của kiến ​​trúc, hiệu suất trên mỗi đồng hồoát,công nghệ xử lý chip. Ý nghĩa của bộ nhớ đệm, “sự tinh tế của quy trình kỹ thuật” và các đặc điểm quan trọng khác của bộ xử lý sẽ được thảo luận dưới đây. Để sở hữu các công nghệ như vậy cũng như hệ số nhân tần số miễn phí, bạn cũng sẽ phải trả thêm một khoản tiền.

Công ty AMD, không giống như công ty Intel, cố gắng cung cấp bộ xử lý cho người tiêu dùng cuối và đưa ra chính sách giá phù hợp.

Người ta thậm chí có thể nói rằng AMD– « Con dấu nhân dân" Trong thẻ giá của nó, bạn sẽ tìm thấy những gì bạn cần ở một mức giá rất hấp dẫn. Thông thường một năm sau khi công ty có công nghệ mới Intel, một công nghệ tương tự xuất hiện từ AMD. Nếu bạn không theo đuổi hiệu suất cao nhất và chú ý đến giá cả hơn là sự sẵn có của các công nghệ tiên tiến, thì sản phẩm của công ty AMD- chỉ dành cho bạn.

Chính sách giá cả AMD, dựa nhiều hơn vào số lượng lõi và rất ít dựa trên dung lượng bộ nhớ đệm cũng như sự hiện diện của các cải tiến về kiến ​​​​trúc. Trong một số trường hợp, để có cơ hội có bộ nhớ đệm cấp ba, bạn sẽ phải trả thêm một chút ( hiện tượng có bộ nhớ đệm 3 cấp, môn thể thao nội dung chỉ có giới hạn, cấp 2). Nhưng đôi khi AMD làm hỏng người hâm mộ của anh ấy khả năng mở khóa bộ xử lý rẻ hơn sang bộ xử lý đắt tiền hơn. Bạn có thể mở khóa lõi hoặc bộ nhớ đệm. Cải thiện môn thể thao trước hiện tượng. Điều này có thể thực hiện được nhờ vào kiến ​​trúc mô-đun và việc thiếu một số mẫu rẻ hơn, AMD chỉ cần vô hiệu hóa một số khối trên chip của những khối (phần mềm) đắt tiền hơn.

lõi– thực tế không thay đổi, chỉ có số lượng của chúng là khác nhau (đúng đối với bộ xử lý 2006-2011 năm). Do tính mô-đun của bộ xử lý, công ty thực hiện rất tốt việc bán các chip bị loại, khi một số khối bị tắt, chúng sẽ trở thành bộ xử lý từ dây chuyền kém năng suất hơn.

Công ty đã làm việc trong nhiều năm trên một kiến ​​trúc hoàn toàn mới với tên mã Chiếc xe ủi, nhưng tại thời điểm phát hành vào 2011 Năm sau, bộ xử lý mới không thể hiện hiệu suất tốt nhất. AMD Tôi đổ lỗi cho hệ điều hành vì đã không hiểu các đặc điểm kiến ​​​​trúc của lõi kép và “đa luồng khác”.

Theo đại diện công ty, bạn nên chờ các bản sửa lỗi và vá lỗi đặc biệt để trải nghiệm toàn bộ hiệu suất của các bộ xử lý này. Tuy nhiên, lúc đầu 2012 năm sau, đại diện công ty đã hoãn phát hành bản cập nhật để hỗ trợ kiến ​​trúc Chiếc xe ủi cho nửa cuối năm nay.

Tần số bộ xử lý, số lõi, đa luồng.

Trong thời gian Pentium 4 và trước mặt anh ta - tần số CPU, là hệ số hiệu suất bộ xử lý chính khi chọn bộ xử lý.

Điều này không có gì đáng ngạc nhiên, vì kiến ​​trúc bộ xử lý được phát triển đặc biệt để đạt được tần số cao và điều này đặc biệt được phản ánh trong bộ xử lý. Pentium 4 về kiến ​​trúc NetBurst. Tần số cao không hiệu quả với đường ống dài được sử dụng trong kiến ​​trúc. Thậm chí Athlon XP Tính thường xuyên 2GHz, xét về năng suất thì cao hơn Pentium 4 c 2,4 GHz. Vì vậy, đó là tiếp thị thuần túy. Sau sai sót này, công ty Intel nhận ra sai lầm của mình và trở lại mặt tốt Tôi bắt đầu làm việc không phải về thành phần tần số mà là hiệu suất trên mỗi đồng hồ. Từ kiến ​​trúc NetBurst Tôi đã phải từ chối.

Cái gì chúng tôi cũng vậy cung cấp đa lõi?

Bộ xử lý lõi tứ với tần số 2,4 GHz, trong các ứng dụng đa luồng, về mặt lý thuyết sẽ tương đương gần đúng với bộ xử lý lõi đơn có tần số 9,6 GHz hoặc bộ xử lý 2 lõi có tần số 4,8 GHz. Nhưng đó chỉ là về mặt lý thuyết. thực tế Tuy nhiên, hai bộ xử lý lõi kép trong bo mạch chủ hai socket sẽ nhanh hơn một bộ xử lý 4 lõi ở cùng tần số hoạt động. Giới hạn tốc độ xe buýt và độ trễ bộ nhớ gây ra hậu quả.

* có cùng kiến ​​trúc và dung lượng bộ nhớ đệm

Đa lõi giúp thực hiện các hướng dẫn và tính toán theo từng phần. Ví dụ, bạn cần thực hiện ba phép tính số học. Hai cái đầu tiên được thực thi trên mỗi lõi bộ xử lý và kết quả được thêm vào bộ nhớ đệm, nơi bất kỳ lõi trống nào có thể thực hiện hành động tiếp theo với chúng. Hệ thống này rất linh hoạt nhưng nếu không được tối ưu hóa phù hợp thì nó có thể không hoạt động. Do đó, việc tối ưu hóa đa lõi là rất quan trọng đối với kiến ​​trúc bộ xử lý trong môi trường HĐH.

Những ứng dụng “yêu thích” và sử dụngđa luồng: người lưu trữ, trình phát video và bộ mã hóa, thuốc chống virus, chương trình chống phân mảnh, biên tập đồ họa, trình duyệt, Tốc biến.

Ngoài ra, “những người yêu thích” đa luồng bao gồm các hệ điều hành như Windows 7Windows Vista, cũng như nhiều hệ điều hành dựa trên hạt nhân Linux, hoạt động nhanh hơn đáng kể với bộ xử lý đa lõi.

Hầu hết Trò chơi, đôi khi bộ xử lý 2 nhân ở tần số cao là khá đủ. Tuy nhiên, hiện nay ngày càng có nhiều trò chơi được phát hành được thiết kế cho đa luồng. Hãy lấy ít nhất những thứ này Hộp cát trò chơi như GTA 4 hoặc Nguyên mẫu, trong đó trên bộ xử lý 2 lõi có tần số thấp hơn 2,6 GHz– bạn không cảm thấy thoải mái, tốc độ khung hình giảm xuống dưới 30 khung hình/giây. Mặc dù trong trường hợp này, rất có thể nguyên nhân dẫn đến những sự cố như vậy là do việc tối ưu hóa trò chơi “yếu”, thiếu thời gian hoặc ra tay “gián tiếp” của những người chuyển trò chơi từ bảng điều khiển sang bảng điều khiển. máy tính.

Khi mua bộ xử lý mới để chơi game, bây giờ bạn nên chú ý đến bộ xử lý có 4 lõi trở lên. Tuy nhiên, bạn vẫn không nên bỏ qua bộ xử lý 2 nhân thuộc “loại trên”. Trong một số trò chơi, những bộ xử lý này đôi khi cho cảm giác tốt hơn một số bộ xử lý đa lõi.

Bộ nhớ đệm của bộ xử lý.

là khu vực dành riêng của chip xử lý, trong đó dữ liệu trung gian giữa lõi xử lý, RAM và các bus khác được xử lý và lưu trữ.

Nó chạy ở tốc độ xung nhịp rất cao (thường là ở tần số của chính bộ xử lý), có băng thông rất cao và các lõi bộ xử lý hoạt động trực tiếp với nó ( L1).

Bởi vì cô ấy thiếu, bộ xử lý có thể không hoạt động trong các tác vụ tốn thời gian, chờ dữ liệu mới đến bộ đệm để xử lý. Ngoài ra bộ nhớ đệm phục vụ cho các bản ghi dữ liệu được lặp lại thường xuyên, nếu cần, có thể được khôi phục nhanh chóng mà không cần tính toán không cần thiết mà không buộc bộ xử lý phải lãng phí thời gian cho chúng một lần nữa.

Hiệu suất cũng được nâng cao nhờ bộ nhớ đệm được thống nhất và tất cả các lõi đều có thể sử dụng dữ liệu từ nó như nhau. Điều này cung cấp thêm cơ hội để tối ưu hóa đa luồng.

Kỹ thuật này hiện nay được sử dụng để Bộ đệm cấp 3. Dành cho bộ xử lý Intelđã có những bộ xử lý có bộ nhớ đệm cấp 2 thống nhất ( C2D E 7***,E 8***), nhờ đó phương pháp này xuất hiện để tăng hiệu suất đa luồng.

Khi ép xung bộ xử lý, bộ nhớ đệm có thể trở thành điểm yếu, khiến bộ xử lý không thể được ép xung vượt quá tần số hoạt động tối đa mà không gặp lỗi. Tuy nhiên, điểm cộng là nó sẽ chạy ở cùng tần số với bộ xử lý được ép xung.

Nói chung, bộ nhớ đệm càng lớn thì nhanh hơn CPU. Chính xác là trong ứng dụng nào?

Tất cả các ứng dụng sử dụng nhiều dữ liệu dấu phẩy động, hướng dẫn và luồng đều sử dụng nhiều bộ nhớ đệm. Bộ nhớ đệm rất phổ biến người lưu trữ, bộ mã hóa video, thuốc chống virusbiên tập đồ họa vân vân.

Một lượng lớn bộ nhớ đệm là thuận lợi Trò chơi. Đặc biệt là chiến lược, trình mô phỏng tự động, game nhập vai, SandBox và tất cả các trò chơi có rất nhiều chi tiết nhỏ, hạt, yếu tố hình học, luồng thông tin và hiệu ứng vật lý.

Bộ nhớ đệm đóng vai trò rất quan trọng trong việc khai thác tiềm năng của hệ thống có 2 card màn hình trở lên. Rốt cuộc, một phần tải trọng rơi vào sự tương tác giữa các lõi bộ xử lý, giữa chúng và để làm việc với các luồng của một số chip video. Trong trường hợp này, việc tổ chức bộ nhớ đệm là quan trọng và bộ nhớ đệm cấp 3 lớn sẽ rất hữu ích.

Bộ nhớ đệm luôn được trang bị tính năng bảo vệ chống lại các lỗi có thể xảy ra ( ECC), nếu được phát hiện, chúng sẽ được sửa. Điều này rất quan trọng, vì một lỗi nhỏ trong bộ nhớ cache khi được xử lý có thể trở thành một lỗi lớn, liên tục khiến toàn bộ hệ thống bị hỏng.

Công nghệ độc quyền.

(siêu phân luồng, HT)–

công nghệ này lần đầu tiên được sử dụng trong bộ xử lý Pentium 4, nhưng không phải lúc nào nó cũng hoạt động chính xác và thường làm chậm bộ xử lý nhiều hơn là tăng tốc. Nguyên nhân là do đường ống quá dài và hệ thống dự đoán nhánh chưa được phát triển đầy đủ. Được công ty sử dụng Intel, chưa có công nghệ tương tự nào, trừ khi bạn coi nó là tương tự? những gì các kỹ sư của công ty đã thực hiện AMD trong kiến ​​trúc Chiếc xe ủi.

Nguyên tắc của hệ thống là đối với mỗi lõi vật lý, một hai luồng tính toán, thay vì một. Tức là, nếu bạn có bộ xử lý 4 nhân với HT (Cốt lõi tôi 7), thì bạn có chủ đề ảo 8 .

Hiệu suất đạt được là do dữ liệu có thể đi vào đường ống ở giữa đường ống chứ không nhất thiết phải ở đầu. Nếu một số khối bộ xử lý có khả năng thực hiện hành động này không hoạt động, chúng sẽ nhận được nhiệm vụ thực thi. Mức tăng hiệu suất không giống như mức tăng của lõi vật lý thực nhưng có thể so sánh được (~50-75%, tùy thuộc vào loại ứng dụng). Rất hiếm khi trong một số ứng dụng, HT ảnh hưởng tiêu cực cho hiệu suất. Điều này là do việc tối ưu hóa các ứng dụng cho công nghệ này kém, không thể hiểu được rằng có các luồng “ảo” và thiếu bộ hạn chế để tải các luồng một cách đồng đều.

bộ tăng ápTăng – một công nghệ rất hữu ích giúp tăng tần số hoạt động của các lõi bộ xử lý được sử dụng nhiều nhất, tùy thuộc vào mức tải của chúng. Nó rất hữu ích khi ứng dụng không biết cách sử dụng cả 4 lõi và chỉ tải một hoặc hai lõi, trong khi tần số hoạt động của chúng tăng lên, điều này bù đắp một phần cho hiệu suất. Công ty có một công nghệ tương tự của công nghệ này AMD, là công nghệ Lõi Turbo.

, 3 biết! hướng dẫn. Được thiết kế để tăng tốc bộ xử lý trong đa phương tiện tính toán (video, âm nhạc, đồ họa 2D/3D, v.v.), đồng thời tăng tốc hoạt động của các chương trình như trình lưu trữ, chương trình làm việc với hình ảnh và video (với sự hỗ trợ hướng dẫn từ các chương trình này).

3biết! – Công nghệ khá cũ AMD, chứa các hướng dẫn bổ sung để xử lý nội dung đa phương tiện, ngoài SSE phiên bản đầu tiên.

*Đặc biệt, khả năng truyền phát các số thực có độ chính xác đơn.

Có phiên bản mới nhất là một điểm cộng lớn; bộ xử lý bắt đầu thực hiện một số tác vụ nhất định hiệu quả hơn với sự tối ưu hóa phần mềm thích hợp. Bộ xử lý AMD có tên giống nhau nhưng hơi khác nhau.

* Ví dụ -SSE 4.1(Intel) - SSE 4A(AMD).

Ngoài ra, các bộ hướng dẫn này không giống nhau. Đây là những chất tương tự với sự khác biệt nhỏ.

Cool'n'Quiet, Thao tác nhanh CoolCore mê hoặc Một nửa Bang(C1E) T. d.

Những công nghệ này, ở mức tải thấp, sẽ giảm tần số bộ xử lý bằng cách giảm hệ số nhân và điện áp lõi, vô hiệu hóa một phần bộ nhớ đệm, v.v. Điều này cho phép bộ xử lý ít nóng lên hơn, tiêu thụ ít năng lượng hơn và ít gây tiếng ồn hơn. Nếu cần nguồn điện, bộ xử lý sẽ trở lại trạng thái bình thường trong tích tắc. Trên cài đặt tiêu chuẩn Tiểu sử Chúng hầu như luôn được bật; nếu muốn, chúng có thể bị tắt để giảm khả năng "đóng băng" khi chuyển sang trò chơi 3D.

Một số công nghệ này kiểm soát tốc độ quay của quạt trong hệ thống. Ví dụ: nếu bộ xử lý không cần tăng khả năng tản nhiệt và không được tải thì tốc độ quạt của bộ xử lý sẽ giảm ( AMD Cool'n'Quiet, Intel Speed ​​Step).

Công nghệ ảo hóa intel Ảo hóa AMD.

Những công nghệ phần cứng này giúp bạn có thể chạy nhiều hệ điều hành cùng một lúc bằng cách sử dụng các chương trình đặc biệt mà không bị giảm hiệu suất đáng kể. Nó cũng được sử dụng để vận hành chính xác các máy chủ, vì thường có nhiều hơn một hệ điều hành được cài đặt trên chúng.

Hành hình Vô hiệu hóa ChútKHÔNG hành hình Chút công nghệ được thiết kế để bảo vệ máy tính khỏi sự tấn công của virus và lỗi phần mềm có thể khiến hệ thống gặp sự cố tràn bộ nhớ.

Intel 64 , AMD 64 , EM 64 T – công nghệ này cho phép bộ xử lý hoạt động cả trong HĐH có kiến ​​​​trúc 32 bit và HĐH có kiến ​​​​trúc 64 bit. Hệ thống 64 bit– xét về mặt lợi ích, đối với người dùng bình thường, điểm khác biệt là hệ thống này có thể sử dụng hơn 3,25GB RAM. Trên hệ thống 32 bit, sử dụng b Không thể có dung lượng RAM lớn hơn do số lượng bộ nhớ có thể định địa chỉ* bị hạn chế.

Hầu hết các ứng dụng có kiến ​​trúc 32 bit đều có thể chạy trên hệ thống có HĐH 64 bit.

* Bạn có thể làm gì nếu quay lại năm 1985, thậm chí không ai có thể nghĩ về dung lượng RAM khổng lồ như vậy, theo tiêu chuẩn thời đó.

Ngoài ra.

Một vài lời về.

Điểm này đáng được chú ý. Quy trình kỹ thuật càng mỏng thì bộ xử lý càng tiêu thụ ít năng lượng hơn và do đó, nó càng ít nóng lên. Và trong số những thứ khác, nó có giới hạn an toàn cao hơn cho việc ép xung.

Quy trình kỹ thuật càng tinh tế thì bạn càng có thể “bọc” vào chip (và không chỉ) và tăng khả năng của bộ xử lý. Khả năng tản nhiệt và tiêu thụ điện năng cũng giảm tương ứng do tổn thất dòng điện thấp hơn và diện tích lõi giảm. Bạn có thể nhận thấy xu hướng là với mỗi thế hệ mới của cùng một kiến ​​trúc trên một quy trình công nghệ mới, mức tiêu thụ năng lượng cũng tăng lên, nhưng thực tế không phải vậy. Chỉ là các nhà sản xuất đang hướng tới năng suất cao hơn nữa và đang vượt ra ngoài ranh giới tản nhiệt của thế hệ bộ xử lý trước do số lượng bóng bán dẫn tăng lên, không tỷ lệ thuận với việc giảm quy trình kỹ thuật.

Được tích hợp vào bộ xử lý.

Nếu bạn không cần lõi video tích hợp thì bạn không nên mua bộ xử lý kèm theo nó. Bạn sẽ chỉ nhận được tình trạng tản nhiệt kém hơn, tỏa nhiệt nhiều hơn (không phải lúc nào cũng vậy), khả năng ép xung kém hơn (không phải lúc nào cũng vậy) và phải trả quá nhiều tiền.

Ngoài ra, những lõi được tích hợp trong bộ xử lý chỉ thích hợp để tải HĐH, lướt Internet và xem video (và không có bất kỳ chất lượng nào).

Xu hướng thị trường vẫn đang thay đổi và cơ hội mua bộ vi xử lý mạnh mẽ từ Intel Không có lõi video, nó ngày càng rơi ra ít hơn. Chính sách ép buộc lõi video tích hợp xuất hiện với bộ xử lý Intel dưới tên mã Cầu Cát, điểm cải tiến chính trong số đó là lõi tích hợp trên cùng một quy trình kỹ thuật. Lõi video được đặt cùng nhau với bộ xử lý trên một con chip và không đơn giản như các thế hệ bộ xử lý trước Intel. Đối với những người không sử dụng nó, có những nhược điểm như phải trả quá nhiều tiền cho bộ xử lý, sự dịch chuyển của nguồn sưởi so với tâm của nắp phân phối nhiệt. Tuy nhiên, cũng có những lợi thế. Lõi video bị vô hiệu hóa, có thể được sử dụng cho công nghệ mã hóa video rất nhanh Đồng bộ nhanh kết hợp với phần mềm đặc biệt hỗ trợ công nghệ này. Trong tương lai, Intel hứa hẹn sẽ mở rộng phạm vi sử dụng lõi video tích hợp cho tính toán song song.

Ổ cắm cho bộ xử lý. Tuổi thọ nền tảng.


Intel có chính sách khắc nghiệt cho nền tảng của nó. Tuổi thọ của mỗi loại (ngày bắt đầu và ngày kết thúc bán bộ xử lý) thường không vượt quá 1,5 - 2 năm. Ngoài ra, công ty còn có một số nền tảng phát triển song song.

Công ty AMD, có chính sách tương thích ngược lại. Trên nền tảng của cô ấy trên sáng 3, tất cả các bộ xử lý thế hệ tương lai hỗ trợ DDR3. Ngay cả khi nền tảng đạt tới Sáng 3+ và sau này, bộ xử lý mới cho sáng 3, hoặc bộ xử lý mới sẽ tương thích với bo mạch chủ cũ và bạn có thể thực hiện nâng cấp dễ dàng cho ví của mình bằng cách chỉ thay đổi bộ xử lý (không thay đổi bo mạch chủ, RAM, v.v.) và flash bo mạch chủ. Sắc thái duy nhất của tính không tương thích có thể phát sinh khi thay đổi loại, vì sẽ cần có bộ điều khiển bộ nhớ khác được tích hợp trong bộ xử lý. Vì vậy khả năng tương thích bị hạn chế và không được hỗ trợ bởi tất cả các bo mạch chủ. Nhưng nói chung, đối với người dùng có ngân sách hạn chế hoặc những người không quen với việc thay đổi hoàn toàn nền tảng 2 năm một lần, việc lựa chọn nhà sản xuất bộ xử lý là rõ ràng - điều này AMD.

làm mát CPU.

Đạt tiêu chuẩn với bộ xử lý HỘP-một bộ làm mát mới sẽ hoàn thành nhiệm vụ của nó một cách đơn giản. Nó là một miếng nhôm có diện tích phân tán không cao lắm. Bộ làm mát hiệu quả với các ống dẫn nhiệt và tấm gắn vào chúng được thiết kế để tản nhiệt hiệu quả cao. Nếu không muốn nghe thêm tiếng ồn từ quạt thì bạn nên mua một bộ làm mát thay thế, hiệu quả hơn có ống dẫn nhiệt hoặc hệ thống làm mát bằng chất lỏng kiểu đóng hoặc mở. Các hệ thống làm mát như vậy sẽ cung cấp thêm khả năng ép xung bộ xử lý.

Phần kết luận.

Tất cả các khía cạnh quan trọng ảnh hưởng đến hiệu suất và hiệu suất của bộ xử lý đã được xem xét. Hãy nhắc lại những gì bạn nên chú ý:

  • Chọn nhà sản xuất
  • Kiến trúc bộ xử lý
  • Quy trình kỹ thuật
  • tần số CPU
  • Số lõi xử lý
  • Kích thước và loại bộ nhớ đệm của bộ xử lý
  • Hỗ trợ công nghệ và hướng dẫn
  • Làm mát chất lượng cao

Chúng tôi hy vọng tài liệu này sẽ giúp bạn hiểu và quyết định chọn bộ xử lý đáp ứng mong đợi của bạn.

Đối với ngành công nghiệp thông tin, thời điểm đầu thế kỷ 21 trùng hợp với những thay đổi có thể được mô tả là “kiến tạo”. Các dấu hiệu của kỷ nguyên mới bao gồm việc sử dụng các kiến ​​trúc hướng dịch vụ (SOA), cấu hình cụm và nhiều hơn thế nữa, bao gồm cả bộ xử lý đa lõi. Nhưng, tất nhiên, lý do cơ bản cho những gì đang xảy ra là sự phát triển của vật lý bán dẫn, dẫn đến sự gia tăng số lượng phần tử logic trên một đơn vị diện tích, tuân theo định luật Gordon Moore. Số lượng bóng bán dẫn trên một con chip đã lên tới hàng trăm triệu và sẽ sớm vượt qua hàng tỷ, do đó, định luật biện chứng nổi tiếng chắc chắn sẽ bộc lộ, quy định mối quan hệ của những thay đổi về lượng và chất. Trong những điều kiện đã thay đổi, một thể loại mới xuất hiện - sự phức tạp và các hệ thống trở nên phức tạp cả ở cấp độ vi mô (bộ xử lý) và cấp độ vĩ mô (hệ thống thông tin doanh nghiệp).

Ở một mức độ nào đó, những gì đang diễn ra trong thế giới máy tính hiện đại có thể được ví như quá trình chuyển đổi tiến hóa xảy ra hàng triệu năm trước, khi các sinh vật đa bào xuất hiện. Vào thời điểm đó, độ phức tạp của một tế bào đã đạt đến một giới hạn nhất định và quá trình tiến hóa tiếp theo đi theo con đường phát triển độ phức tạp của cơ sở hạ tầng. Điều tương tự cũng đang xảy ra với các hệ thống máy tính: độ phức tạp của một lõi xử lý đơn lẻ, cũng như kiến ​​trúc nguyên khối của hệ thống thông tin doanh nghiệp, đã đạt đến mức tối đa nhất định. Cấp độ vĩ mô hiện đang chuyển từ hệ thống nguyên khối sang hệ thống thành phần (hoặc dựa trên dịch vụ) khi các nhà phát triển tập trung vào phần mềm trung gian cơ sở hạ tầng, trong khi các kiến ​​trúc bộ xử lý mới đang nổi lên ở cấp độ vi mô.

Mới gần đây, ý tưởng về sự phức tạp bắt đầu mất đi ý nghĩa thường được sử dụng, trở thành một yếu tố độc lập. Về vấn đề này, sự phức tạp vẫn chưa được hiểu đầy đủ và thái độ đối với nó cũng chưa được xác định đầy đủ, mặc dù, thật kỳ lạ, trong gần 50 năm đã có một ngành khoa học riêng biệt, được gọi là “lý thuyết về các hệ thống phức tạp”. (Hãy nhớ lại rằng về mặt lý thuyết, “phức tạp” dùng để chỉ một hệ thống có các thành phần riêng lẻ được kết hợp theo cách phi tuyến tính; hệ thống như vậy không chỉ đơn giản là tổng của các thành phần, như trường hợp của các hệ thống tuyến tính.) Người ta chỉ có thể ngạc nhiên rằng các hệ thống đó lý thuyết vẫn chưa được chấp nhận bởi các chuyên gia và công ty có hoạt động hướng dẫn họ tạo ra các hệ thống phức tạp này bằng công nghệ thông tin.

“Nút thắt cổ chai” của kiến ​​trúc von Neumann

Ở cấp độ vi mô, sự tương tự của quá trình chuyển đổi từ sinh vật đơn bào sang đa bào có thể là quá trình chuyển đổi từ bộ xử lý lõi đơn sang bộ xử lý đa lõi (Chip MultiProcessors, CMP). CMP mang đến một trong những cơ hội khắc phục điểm yếu cố hữu của các bộ xử lý hiện đại - “nút cổ chai” của kiến ​​trúc von Neumann.

Đây là những gì John Backus đã nói tại lễ trao giải Turing năm 1977: “Theo von Neumann, máy tính là gì? Khi John von Neumann và những người khác đề xuất kiến ​​trúc ban đầu của họ cách đây 30 năm, ý tưởng này có vẻ tao nhã, thực tế và có thể đơn giản hóa một số vấn đề kỹ thuật và lập trình. Và mặc dù các điều kiện tồn tại tại thời điểm xuất bản nó đã thay đổi hoàn toàn theo thời gian, chúng tôi vẫn xác định ý tưởng của mình về máy tính với những khái niệm cũ này. Ở dạng đơn giản nhất, máy tính von Neumann bao gồm ba phần: bộ xử lý trung tâm (CPU), bộ nhớ và kênh kết nối chúng, dùng để trao đổi dữ liệu giữa CPU và bộ nhớ, và các phần nhỏ (chỉ một từ tại một thời điểm). thời gian). Tôi đề xuất gọi kênh này là “nút thắt cổ chai von Neumann”. Chắc chắn phải có một giải pháp ít thô sơ hơn là bơm một lượng lớn dữ liệu qua nút cổ chai. Một kênh như vậy không chỉ tạo ra vấn đề về lưu lượng mà còn là “nút thắt cổ chai về trí tuệ” buộc các lập trình viên phải suy nghĩ từng từ một, khiến họ không thể suy nghĩ theo những phạm trù khái niệm cao hơn”.

Backus nổi tiếng với việc tạo ra ngôn ngữ Fortran vào giữa những năm 50, ngôn ngữ này trong vài thập kỷ tiếp theo là phương tiện phổ biến nhất để tạo các chương trình tính toán. Nhưng sau đó, Backus dường như đã nhận thức sâu sắc về điểm yếu của nó và nhận ra rằng mình đã phát triển “ngôn ngữ von Neumann nhất” trong tất cả các ngôn ngữ cấp cao. Do đó, nguyên nhân chính trong lời chỉ trích của ông chủ yếu nhắm vào các phương pháp lập trình không hoàn hảo.

Kể từ khi Backus phát biểu, đã có những tiến bộ đáng kể trong lập trình, với các công nghệ hướng đối tượng và chức năng đang nổi lên và giúp khắc phục cái mà Backus gọi là "nút cổ chai trí tuệ von Neumann". Tuy nhiên, nguyên nhân sâu xa về mặt kiến ​​trúc của hiện tượng này, căn bệnh cố hữu của kênh giữa bộ nhớ và bộ xử lý - băng thông hạn chế của nó - vẫn chưa biến mất, bất chấp những tiến bộ về công nghệ trong hơn 30 năm qua. Vấn đề này trở nên tồi tệ hơn trong những năm qua khi tốc độ bộ nhớ tăng chậm hơn nhiều so với bộ xử lý và khoảng cách giữa hai loại này ngày càng lớn hơn.

Kiến trúc máy tính Von Neumann không phải là kiến ​​trúc duy nhất khả thi. Từ quan điểm tổ chức trao đổi lệnh giữa bộ xử lý và bộ nhớ, tất cả các máy tính có thể được chia thành bốn loại:

  • SISD (Dữ liệu đơn hướng dẫn)- “một luồng lệnh, một luồng dữ liệu”;
  • SIMD (Dữ liệu nhân lệnh đơn)- một luồng lệnh, nhiều luồng dữ liệu;
  • MISD (Dữ liệu đơn nhiều lệnh)- nhiều luồng lệnh, một luồng dữ liệu;
  • MIMD (Nhiều lệnh Nhiều dữ liệu)- nhiều luồng lệnh, nhiều luồng dữ liệu.

Từ sự phân loại này, rõ ràng máy von Neumann là một trường hợp đặc biệt thuộc loại SISD. Những cải tiến có thể có trong kiến ​​trúc SISD bị giới hạn ở việc bao gồm các đường dẫn và các đơn vị chức năng bổ sung khác, cũng như việc sử dụng các phương pháp lưu vào bộ nhớ đệm khác nhau. Hai loại kiến ​​trúc khác (SIMD, bao gồm bộ xử lý vector và kiến ​​trúc đường ống MISD) đã được triển khai trong một số dự án nhưng chưa trở nên phổ biến. Nếu chúng ta vẫn ở trong khuôn khổ phân loại này thì cách duy nhất để khắc phục những hạn chế của nút cổ chai là phát triển kiến ​​trúc lớp MIMD. Trong khuôn khổ của họ, có nhiều cách tiếp cận: đây có thể là các kiến ​​trúc song song và cụm khác nhau cũng như các bộ xử lý đa luồng.

Chỉ vài năm trước, do những hạn chế về công nghệ, tất cả các bộ xử lý đa luồng đều được xây dựng trên cơ sở một lõi duy nhất và việc đa luồng như vậy được gọi là “đồng thời” - Đa luồng đồng thời (SMT). Và với sự ra đời của bộ xử lý đa lõi, một loại đa luồng thay thế đã xuất hiện - Bộ xử lý đa chip (CMP).

Đặc điểm của bộ xử lý đa luồng

Quá trình chuyển đổi từ bộ xử lý đơn luồng đơn giản sang bộ xử lý đa luồng phức tạp hơn về mặt logic đòi hỏi phải khắc phục những khó khăn cụ thể chưa từng gặp phải trước đây. Chức năng của thiết bị, trong đó quá trình thực thi được chia thành các tác nhân hoặc luồng, có hai tính năng:

  • nguyên lý bất định. Trong ứng dụng đa luồng, quy trình được chia thành các luồng tác nhân tương tác mà không có bất kỳ định nghĩa định trước nào;
  • nguyên lý bất định. Chính xác tài nguyên sẽ được phân phối như thế nào giữa các luồng tác nhân cũng chưa được biết trước.

Do những đặc điểm này, hoạt động của bộ xử lý đa luồng về cơ bản khác với các phép tính xác định von Neumann. Trong trường hợp này, trạng thái hiện tại của quy trình không thể được xác định là hàm tuyến tính của trạng thái trước đó và dữ liệu nhận được dưới dạng đầu vào, mặc dù mỗi quy trình có thể được coi là một máy vi mô von Neumann. (Khi áp dụng cho hành vi của các luồng, người ta thậm chí có thể sử dụng thuật ngữ “sự kỳ lạ”, được sử dụng trong vật lý lượng tử.) Sự hiện diện của các tính năng này đưa bộ xử lý đa luồng đến gần hơn với khái niệm về một hệ thống phức tạp, nhưng từ một khía cạnh thuần túy thực tế. Theo quan điểm, rõ ràng là ở cấp độ thực thi quy trình không có tính bất định hoặc không thể có sự không chắc chắn, huống chi là sự kỳ lạ. Một chương trình được thực thi đúng cách không thể có gì lạ.

Ở dạng tổng quát nhất, bộ xử lý đa luồng bao gồm hai loại nguyên thủy. Loại đầu tiên là tài nguyên hỗ trợ thực thi một luồng, được gọi là mutex (từ Loại trừ lẫn nhau - "loại trừ lẫn nhau") và loại thứ hai là các sự kiện. Cách một mutex cụ thể được triển khai về mặt vật lý tùy thuộc vào sơ đồ đã chọn - SMT hoặc CMP. Trong mọi trường hợp, việc thực thi quy trình phụ thuộc vào thực tế là luồng tiếp theo thu được mutex trong suốt thời gian thực thi và sau đó giải phóng nó. Nếu một mutex bị chiếm bởi một luồng thì luồng thứ hai không thể lấy được nó. Quy trình cụ thể để chuyển quyền sở hữu một mutex từ luồng này sang luồng khác có thể là ngẫu nhiên; nó phụ thuộc vào việc triển khai điều khiển, ví dụ, trong một hệ điều hành cụ thể. Trong mọi trường hợp, việc kiểm soát phải được cấu trúc sao cho các tài nguyên bao gồm mutex được phân phối chính xác và ảnh hưởng của sự không chắc chắn bị triệt tiêu.

Sự kiện là những đối tượng báo hiệu sự thay đổi của môi trường bên ngoài. Họ có thể đặt mình vào chế độ chờ cho đến khi một sự kiện khác xảy ra hoặc báo cáo trạng thái của họ cho một sự kiện khác. Bằng cách này, các sự kiện có thể tương tác với nhau, đồng thời phải đảm bảo tính liên tục của dữ liệu giữa các sự kiện. Tác nhân đang chờ xử lý phải được thông báo rằng dữ liệu đã sẵn sàng cho nó. Và cũng giống như ảnh hưởng của sự không chắc chắn sẽ bị triệt tiêu trong phân bố mutex, khi làm việc với các sự kiện, ảnh hưởng của sự không chắc chắn cũng sẽ bị triệt tiêu. Mạch SMT lần đầu tiên được triển khai trong bộ xử lý Compaq Alpha 21464, cũng như Intel Xeon MP và Itanium.

Về mặt logic, CMP đơn giản hơn: ở đây tính song song được đảm bảo bởi thực tế là mỗi luồng được xử lý bởi lõi riêng của nó. Nhưng nếu ứng dụng không thể phân luồng thì ứng dụng đó (trong trường hợp không có các biện pháp đặc biệt) sẽ được xử lý bởi một lõi đơn và trong trường hợp này, hiệu suất tổng thể của bộ xử lý bị giới hạn bởi tốc độ của một lõi đơn. Thoạt nhìn, bộ xử lý được xây dựng bằng sơ đồ SMT linh hoạt hơn và do đó sơ đồ này thích hợp hơn. Nhưng tuyên bố này chỉ đúng ở mật độ bóng bán dẫn thấp. Nếu tần số được đo bằng megahertz và số lượng bóng bán dẫn trên chip đạt tới một tỷ, đồng thời độ trễ truyền tín hiệu lớn hơn thời gian chuyển mạch, thì vi kiến ​​trúc CMP, trong đó các phần tử điện toán liên quan được cục bộ hóa, sẽ được hưởng lợi.

Tuy nhiên, song song hóa vật lý có nghĩa là CMP không hiệu quả lắm cho việc tính toán tuần tự. Để khắc phục nhược điểm này, một phương pháp gọi là “đa luồng suy đoán” được sử dụng. Trong tiếng Nga từ “suy đoán” mang hàm ý tiêu cực nên chúng ta sẽ gọi đây là “có điều kiện” đa luồng. Cách tiếp cận này liên quan đến việc hỗ trợ phần cứng hoặc phần mềm để chia ứng dụng tuần tự thành các luồng có điều kiện, điều phối việc thực thi chúng và tích hợp các kết quả vào bộ nhớ.

Sự phát triển của CMP

Bộ xử lý CMP được sản xuất hàng loạt đầu tiên dành cho thị trường máy chủ. Bất kể nhà cung cấp nào, về cơ bản chúng đều là hai bộ xử lý siêu vô hướng độc lập trên cùng một đế. Động lực chính để tạo ra những thiết kế như vậy là giảm khối lượng để có thể “đóng gói” nhiều bộ xử lý hơn vào một thiết kế, tăng mật độ năng lượng trên một đơn vị khối lượng (điều này rất quan trọng đối với các trung tâm dữ liệu hiện đại). Sau đó, một số khoản tiết kiệm bổ sung sẽ được thực hiện ở cấp hệ thống tổng thể vì các bộ xử lý trên cùng một chip chia sẻ tài nguyên hệ thống, chẳng hạn như truyền thông tốc độ cao. Thông thường, chỉ có một giao diện hệ thống chung giữa các bộ xử lý lân cận ( cơm. 1, b).

Những người biện hộ cho việc sử dụng bộ xử lý CMP biện minh cho việc tăng thêm (hơn hai) số lượng lõi theo đặc điểm của tải máy chủ, điều này giúp phân biệt loại máy tính này với các hệ thống nhúng hoặc hệ thống dành cho điện toán lớn. Máy chủ cần có hiệu suất tổng thể cao hơn nhưng độ trễ của một cuộc gọi riêng lẻ tới hệ thống không quá nghiêm trọng. Một ví dụ tầm thường: người dùng có thể đơn giản không nhận thấy độ trễ một phần nghìn giây khi xuất hiện một trang Web được cập nhật, nhưng lại rất nhạy cảm với tình trạng quá tải của máy chủ, điều này có thể gây gián đoạn dịch vụ.

Tính đặc hiệu của tải mang lại cho bộ xử lý CMP một lợi thế đáng chú ý khác. Ví dụ: thay thế bộ xử lý lõi đơn bằng bộ xử lý lõi kép, bạn có thể giảm một nửa tần số xung nhịp với cùng hiệu suất. Trong trường hợp này, về mặt lý thuyết, thời gian xử lý một yêu cầu riêng lẻ có thể tăng gấp đôi, nhưng do việc phân tách vật lý các luồng làm giảm giới hạn thắt cổ chai của kiến ​​trúc von Neumann nên tổng độ trễ sẽ nhỏ hơn đáng kể so với gấp đôi. Với tần số thấp hơn và độ phức tạp của một lõi, mức tiêu thụ năng lượng giảm đáng kể và khi số lượng lõi tăng lên, các lập luận được liệt kê ủng hộ CMP chỉ trở nên mạnh mẽ hơn. Do đó, bước hợp lý tiếp theo là lắp ráp một số lõi và kết hợp chúng với bộ nhớ đệm chung, chẳng hạn như trong dự án Hydra (Hình 1, c). Và sau đó, bạn có thể phức tạp hóa các hạt nhân và biến chúng thành đa luồng, điều này đã được triển khai trong dự án Niagara (Hình 1, d).

Sự phức tạp của bộ xử lý còn có một biểu hiện quan trọng khác. Thiết kế một sản phẩm với hàng tỷ linh kiện đang trở thành một nhiệm vụ ngày càng sử dụng nhiều lao động - bất chấp việc sử dụng các công cụ tự động hóa. Điều ý nghĩa là chúng ta đang chứng kiến ​​hơn chục năm “hoàn thiện” kiến ​​trúc IA-64. Thiết kế bộ xử lý CMP đơn giản hơn nhiều: nếu có lõi được phát triển tốt, nó có thể được nhân rộng với số lượng cần thiết và thiết kế chỉ giới hạn ở việc tạo ra cơ sở hạ tầng bên trong của chip. Ngoài ra, cùng loại lõi giúp đơn giản hóa việc thiết kế bo mạch chủ, điều này dẫn đến việc mở rộng quy mô và cuối cùng là hiệu suất của các hệ thống con I/O thay đổi.

Bất chấp những lập luận trên, vẫn chưa có đủ cơ sở để nhận định rõ ràng về ưu điểm của CMP so với SMT. Kinh nghiệm tạo ra bộ xử lý triển khai SMT còn lớn hơn nhiều: kể từ giữa những năm 80, hàng chục sản phẩm thử nghiệm và một số bộ xử lý nối tiếp đã được tạo ra. Lịch sử phát triển CPM vẫn còn ngắn: nếu không tính đến dòng bộ xử lý tín hiệu chuyên dụng Texas Instruments TMS 320C8x, thì dự án thành công đầu tiên là Hydra, được hoàn thành tại Đại học Stanford. Trong số các dự án nghiên cứu của trường đại học nhằm xây dựng bộ xử lý CMP, có ba dự án nữa được biết đến - Wisconsin Multiscalar, Carnegie-Mellon Stampede và MIT M-machine.

Bộ vi xử lý Hydra

Chip Hydra bao gồm bốn lõi xử lý dựa trên kiến ​​trúc MIPS RISC nổi tiếng. Mỗi lõi có bộ đệm lệnh và bộ đệm dữ liệu và tất cả các lõi được kết hợp thành bộ đệm L2 chung. Bộ xử lý thực thi tập hợp các lệnh MIPS thông thường cộng với các lệnh Lưu trữ có điều kiện hoặc SC để thực hiện các nguyên tắc đồng bộ hóa. Bộ xử lý và bộ nhớ đệm cấp hai được kết hợp bằng các bus đọc/ghi, ngoài ra còn có các bus địa chỉ phụ và bus điều khiển. Tất cả các bus này đều là ảo, nghĩa là chúng được biểu diễn một cách hợp lý dưới dạng bus có dây và được chia về mặt vật lý thành nhiều phân đoạn bằng cách sử dụng bộ lặp và bộ đệm, cho phép tăng tốc độ của lõi.

Bus đọc/ghi đóng vai trò là bus hệ thống. Do vị trí trên chip nên nó có đủ băng thông để hỗ trợ giao tiếp bộ đệm trong một chu kỳ. Rất khó để đạt được các chỉ số hiệu suất trao đổi như vậy ngay cả trong các kiến ​​trúc đa bộ xử lý truyền thống đắt tiền nhất do những hạn chế về mặt vật lý về số lượng chân bộ xử lý bên ngoài. Các bus truyền thông hiệu quả với bộ nhớ đệm sẽ ngăn chặn tắc nghẽn giữa lõi và bộ nhớ.

Thử nghiệm Hydra dưới tải song song cao trên các ứng dụng máy chủ và Web thông thường cho thấy hiệu suất của bốn lõi so với một lõi tăng 3-3,8 lần, tức là gần như tuyến tính. Điều này đưa ra lý do để tin rằng các bộ xử lý loại này sẽ “phù hợp” khá tốt với những ứng dụng sử dụng máy chủ có kiến ​​trúc SMP. Nhưng rõ ràng bộ xử lý cũng phải hoạt động khá hiệu quả với các ứng dụng tuần tự, vì vậy một trong những nhiệm vụ quan trọng nhất là thực hiện đa luồng có điều kiện. Ở Hydra, nó được triển khai ở cấp độ phần cứng và việc lựa chọn phương pháp này là hợp lý bởi thực tế là nó không yêu cầu thêm chi phí cho việc lập trình các ứng dụng song song.

Đa luồng có điều kiện dựa trên việc chia chuỗi lệnh chương trình thành các luồng có thể được thực thi song song. Đương nhiên, có thể có sự phụ thuộc lẫn nhau về mặt logic giữa các luồng như vậy và để phối hợp chúng, một cơ chế đồng bộ hóa đặc biệt được tích hợp trong bộ xử lý. Bản chất công việc của nó là nếu một số luồng yêu cầu dữ liệu từ một luồng song song và nó chưa sẵn sàng, thì việc thực thi luồng đó sẽ bị tạm dừng. Trên thực tế, các yếu tố của thuyết bất định được thảo luận ở trên đều xuất hiện ở đây. Quá trình đồng bộ hóa khá phức tạp vì cần xác định tất cả các phụ thuộc có thể có giữa các luồng và điều kiện đồng bộ hóa. Đồng bộ hóa có điều kiện cho phép bạn song song hóa các chương trình mà không cần biết trước về các thuộc tính của chúng. Điều quan trọng là cơ chế đồng bộ hóa phải động, nó hoạt động mà không cần sự can thiệp của lập trình viên hoặc trình biên dịch, chỉ có khả năng phân chia tĩnh các ứng dụng thành các luồng. Các thử nghiệm của mô hình dựa trên các thử nghiệm khác nhau đã chỉ ra rằng các phương tiện đa luồng có điều kiện có thể tăng hiệu suất của bộ xử lý lên nhiều lần và thử nghiệm càng đặc trưng cho tính song song rõ ràng thì giá trị này càng thấp.

Năm 2000, Afara được thành lập trong tình trạng bí mật nghiêm ngặt. Người sáng lập của nó là Giáo sư Kunle Olukotun từ Đại học Stanford và nhà phát triển bộ xử lý nổi tiếng Les Cohn, người từng có kinh nghiệm làm việc tại Intel và Sun Microsystems. Cohn là một trong những tác giả của bộ xử lý i860 và i960 RISC ở tập đoàn đầu tiên và UltraSPARC-I ở tập đoàn thứ hai. Dưới sự lãnh đạo của ông, Hydra đã được thiết kế lại các lõi xử lý dựa trên bộ xử lý SPARC. Năm 2002, Afara được Sun Microsystems mua lại và đây là sự kết thúc của dự án Hydra và mở đầu câu chuyện Niagara.

Niagara - “sự kết hợp” giữa MAJC và Hydra

Bộ xử lý UltraSPARC T1, hay còn được gọi là Niagara, có hai phiên bản tiền nhiệm chính - Hydra và MAJC.

Vào giữa những năm 90, trước cơn sốt bộ xử lý Java chuyên dụng, Sun Microsystems đã cố gắng tạo ra bộ xử lý “Từ hướng dẫn rất dài” (VLIW). Sáng kiến ​​này được gọi là MAJC (Kiến trúc vi xử lý cho máy tính Java). Cũng như các dự án khác được triển khai vào thời điểm đó (Intel IA-64 Itanium), trường hợp này nhằm mục đích chuyển một số thao tác phức tạp nhất sang trình biên dịch. Logic bóng bán dẫn được giải phóng có thể được sử dụng để tạo ra các đơn vị chức năng hiệu suất cao hơn để các lệnh và dữ liệu có thể truyền hiệu quả giữa CPU, bộ nhớ đệm và bộ nhớ chính. Như vậy, nút cổ chai von Neumann đã được khắc phục.

MAJC khác với hầu hết các bộ xử lý ở chỗ không có bộ đồng xử lý chuyên dụng (bộ xử lý phụ), thường được gọi là các đơn vị chức năng được thiết kế để thực hiện các phép toán với số nguyên, số dấu phẩy động và dữ liệu đa phương tiện. Trong đó, tất cả các thiết bị chức năng đều giống nhau, có khả năng thực hiện bất kỳ thao tác nào, một mặt làm giảm hiệu quả của các thao tác riêng lẻ nhưng mặt khác lại làm tăng tốc độ sử dụng của toàn bộ bộ xử lý.

Niagara là hiện thân tốt nhất của hai phương pháp thay thế để triển khai đa luồng - SMT và CMP. Thoạt nhìn thì nó rất giống với Hydra, nhưng Hydra có thể được gọi là “bố cục” của Niagara hơn. Ngoài thực tế là cái sau có số lõi gấp đôi, mỗi lõi có thể xử lý bốn luồng.

Bộ xử lý Niagara cung cấp hỗ trợ phần cứng để thực thi 32 luồng, được chia thành 8 nhóm (mỗi nhóm có 4 luồng). Mỗi nhóm có kênh xử lý đường ống SPARC riêng ( Hình 2). Nó là lõi xử lý được xây dựng theo kiến ​​trúc SPARC V9. Mỗi đường dẫn SPARC chứa bộ đệm L1 dành cho hướng dẫn và dữ liệu. 32 luồng chia sẻ bộ đệm L2 3 MB được chia thành bốn ngân hàng. Bộ chuyển mạch này kết nối tám lõi, dãy bộ đệm cấp hai và các tài nguyên CPU phân tán khác, đồng thời hỗ trợ tốc độ truyền 200 GB/s. Ngoài ra, bộ chuyển mạch còn có một cổng dành cho hệ thống I/O và các kênh tới bộ nhớ DDR2 DRAM, cung cấp tốc độ truyền 20 GB/s; Dung lượng bộ nhớ tối đa lên tới 128 GB.

Project Niagara tập trung vào hệ điều hành Solaris nên mọi ứng dụng chạy trên Solaris đều có thể chạy trên bộ xử lý mới mà không có bất kỳ thay đổi nào. Phần mềm ứng dụng coi Niagara là 32 bộ xử lý riêng biệt.

Ô dự án

Tập đoàn IBM đã đề xuất cách tiếp cận riêng của mình để tạo ra các bộ xử lý đa lõi, dự án Cell của họ được gọi là “bộ xử lý đa chip không đồng nhất”. Kiến trúc di động còn được gọi là Kiến trúc công cụ băng thông rộng di động (CBEA). Bộ đa xử lý Cell bao gồm lõi Kiến trúc nguồn 64-bit của IBM và tám bộ đồng xử lý chuyên dụng thực hiện sơ đồ “một lệnh nhiều dữ liệu”. IBM gọi kiến ​​trúc này là Bộ xử lý tổng hợp (SPU). Nó có thể được sử dụng thành công khi cần xử lý các luồng dữ liệu lớn, ví dụ như trong mật mã, trong các ứng dụng khoa học và đa phương tiện khác nhau, chẳng hạn như phép biến đổi Fourier nhanh hoặc phép toán ma trận. Kiến trúc Cell được tạo ra bởi một nhóm các nhà nghiên cứu từ IBM Research cùng với các đồng nghiệp từ IBM Systems Technology Group, Sony và Toshiba, và ứng dụng đầu tiên của nó phải là các thiết bị đa phương tiện yêu cầu số lượng tính toán lớn.

Cơ sở của Bộ xử lý tổng hợp là Kiến trúc tập lệnh (ISA). Các lệnh dài 32 bit và được đánh địa chỉ tới ba toán hạng nằm trong nhóm thanh ghi, bao gồm 128 thanh ghi, mỗi thanh ghi 128 bit.

Trong tương lai, việc sử dụng Cell sẽ không chỉ giới hạn ở các hệ thống chơi game. Tiếp theo là truyền hình độ nét cao, máy chủ gia đình và thậm chí cả siêu máy tính.

Văn học
  1. Leonid Chernyak. Sửa đổi nguyên tắc cơ bản - chấm dứt tình trạng trì trệ? // Hệ thống mở. - 2003, số 5.
  2. Mikhail Kuzminsky. Kiến trúc bộ vi xử lý đa luồng // Hệ thống mở. - 2002, số 1.
  3. Rajat A Dua, Bhushan Lokhande. Một nghiên cứu so sánh về bộ đa xử lý SMT và CMP. -

Sau khi hiểu lý thuyết về đa luồng, chúng ta hãy xem một ví dụ thực tế - Pentium 4. Ở giai đoạn phát triển của bộ xử lý này, các kỹ sư của Intel tiếp tục nỗ lực tăng hiệu suất của nó mà không thực hiện thay đổi đối với giao diện phần mềm. Năm phương pháp đơn giản nhất đã được xem xét:
1. Tăng tần số đồng hồ.
2. Đặt hai bộ xử lý trên một con chip.
3. Giới thiệu các khối chức năng mới.
1. Mở rộng băng tải.
2. Sử dụng đa luồng.
Cách rõ ràng nhất để cải thiện hiệu suất là tăng tốc độ xung nhịp mà không thay đổi các thông số khác. Theo quy định, mỗi mẫu bộ xử lý tiếp theo có tốc độ xung nhịp cao hơn một chút so với mẫu trước đó. Thật không may, khi tăng tốc độ xung nhịp theo đường thẳng, các nhà phát triển phải đối mặt với hai vấn đề: mức tiêu thụ điện năng tăng (điều này rất quan trọng đối với máy tính xách tay và các thiết bị điện toán chạy bằng pin khác) và quá nóng (đòi hỏi phải tạo ra các bộ tản nhiệt hiệu quả hơn).
Phương pháp thứ hai - đặt hai bộ xử lý trên một con chip - tương đối đơn giản, nhưng nó liên quan đến việc tăng gấp đôi diện tích mà con chip chiếm giữ. Nếu mỗi bộ xử lý có bộ nhớ đệm riêng, số lượng chip trên một tấm wafer sẽ giảm đi một nửa nhưng điều đó cũng có nghĩa là chi phí sản xuất tăng gấp đôi. Nếu cả hai bộ xử lý chia sẻ bộ nhớ đệm, có thể tránh được việc tăng đáng kể diện tích chiếm dụng, nhưng trong trường hợp này, một vấn đề khác lại phát sinh - dung lượng bộ nhớ đệm trên mỗi bộ xử lý giảm một nửa và điều này chắc chắn ảnh hưởng đến hiệu suất. Ngoài ra, nếu các ứng dụng máy chủ chuyên nghiệp có thể sử dụng đầy đủ tài nguyên của một số bộ xử lý, thì tính song song bên trong của các chương trình máy tính để bàn thông thường được phát triển ở mức độ thấp hơn nhiều.
Việc đưa vào các khối chức năng mới cũng không khó, nhưng điều quan trọng là phải duy trì sự cân bằng ở đây. Việc có hàng tá khối ALU có ích gì nếu chip không thể ra lệnh cho đường ống với tốc độ cho phép bạn tải tất cả các khối này?
Một đường ống với số lượng giai đoạn tăng lên, có khả năng chia nhiệm vụ thành các phân đoạn nhỏ hơn và xử lý chúng trong khoảng thời gian ngắn, một mặt giúp cải thiện hiệu suất, mặt khác, làm tăng hậu quả tiêu cực của việc dự đoán nhánh không chính xác, lỗi bộ đệm, gián đoạn và các sự kiện khác làm gián đoạn các lệnh xử lý luồng thông thường trong bộ xử lý. Ngoài ra, để phát huy hết khả năng của đường ống mở rộng, cần phải tăng tần số xung nhịp, và điều này, như chúng ta biết, sẽ dẫn đến mức tiêu thụ điện năng và tản nhiệt tăng lên.
Cuối cùng, bạn có thể triển khai đa luồng. Ưu điểm của công nghệ này là việc giới thiệu một luồng phần mềm bổ sung cho phép đưa các tài nguyên phần cứng không hoạt động vào sử dụng. Dựa trên kết quả nghiên cứu thực nghiệm, các nhà phát triển Intel nhận thấy rằng việc tăng diện tích chip thêm 5% khi triển khai đa luồng cho nhiều ứng dụng giúp tăng hiệu suất lên 25%. Bộ xử lý Intel đầu tiên hỗ trợ đa luồng là Xeon 2002. Sau đó, bắt đầu từ tốc độ 3,06 GHz, đa luồng được đưa vào dòng Pentium 4. Intel gọi việc triển khai đa luồng trong siêu phân luồng Pentium 4.
Nguyên tắc cơ bản của siêu phân luồng là thực thi đồng thời hai luồng chương trình (hoặc các tiến trình - bộ xử lý không phân biệt các tiến trình với các luồng chương trình). Hệ điều hành xử lý bộ xử lý siêu phân luồng Pentium 4 như một tổ hợp bộ xử lý kép với bộ đệm chung và bộ nhớ chính. Hệ điều hành thực hiện lập lịch cho từng luồng chương trình một cách riêng biệt. Bằng cách này, hai ứng dụng có thể chạy cùng lúc. Ví dụ: một chương trình email có thể gửi hoặc nhận tin nhắn ở chế độ nền trong khi người dùng tương tác với một ứng dụng tương tác - nghĩa là chương trình daemon và chương trình người dùng đang chạy đồng thời, như thể hệ thống có sẵn hai bộ xử lý.
Các chương trình ứng dụng có thể được thực thi dưới dạng nhiều luồng có thể sử dụng cả “bộ xử lý ảo”. Ví dụ: các chương trình chỉnh sửa video thường cho phép người dùng áp dụng các bộ lọc cho tất cả các khung hình. Các bộ lọc như vậy điều chỉnh độ sáng, độ tương phản, cân bằng màu sắc và các thuộc tính khác của khung. Trong tình huống như vậy, chương trình có thể chỉ định một bộ xử lý ảo để xử lý các khung chẵn và một bộ xử lý khác để xử lý các khung lẻ. Trong trường hợp này, hai bộ xử lý sẽ hoạt động hoàn toàn độc lập với nhau.
Bởi vì các luồng phần mềm truy cập vào cùng các tài nguyên phần cứng nên việc phối hợp giữa các luồng này là cần thiết. Trong bối cảnh siêu phân luồng, Intel đã xác định bốn chiến lược hữu ích để quản lý việc chia sẻ tài nguyên: sao chép tài nguyên và chia sẻ tài nguyên cứng, ngưỡng và đầy đủ. Hãy xem xét những chiến lược này.
Hãy bắt đầu với việc sao chép tài nguyên. Như đã biết, một số tài nguyên được sao chép nhằm mục đích tổ chức các luồng chương trình. Ví dụ: vì mỗi luồng chương trình yêu cầu điều khiển riêng lẻ nên cần có bộ đếm chương trình thứ hai. Ngoài ra, cần đưa thanh ghi kiến ​​trúc ánh xạ bảng thứ hai (EAX, EBX, v.v.) vào các thanh ghi vật lý; tương tự, bộ điều khiển ngắt được sao chép, vì các ngắt được xử lý riêng cho từng luồng.
Sau đây là kỹ thuật phân vùng cứng các tài nguyên (chia sẻ tài nguyên được phân vùng) giữa các luồng chương trình. Ví dụ: nếu bộ xử lý có hàng đợi giữa hai giai đoạn chức năng của đường ống thì một nửa số vị trí có thể được cấp cho luồng 1, nửa còn lại cho luồng 2. Việc chia sẻ tài nguyên dễ thực hiện, không dẫn đến mất cân bằng và đảm bảo sự độc lập hoàn toàn của các luồng chương trình với nhau. Bằng cách chia sẻ hoàn toàn tất cả các tài nguyên, một bộ xử lý sẽ biến thành hai một cách hiệu quả. Mặt khác, có thể có tình huống trong đó một luồng chương trình không sử dụng các tài nguyên có thể hữu ích cho luồng thứ hai nhưng lại không có quyền truy cập. Kết quả là, các tài nguyên có thể được sử dụng theo cách khác đều không hoạt động.
Ngược lại với chia sẻ cứng là chia sẻ tài nguyên đầy đủ. Trong sơ đồ này, bất kỳ luồng chương trình nào cũng có thể truy cập các tài nguyên cần thiết và chúng được phục vụ theo thứ tự nhận được yêu cầu truy cập. Hãy xem xét tình huống trong đó một luồng nhanh, bao gồm chủ yếu các phép toán cộng và trừ, cùng tồn tại với một luồng chậm, thực hiện các phép toán nhân và chia. Nếu các lệnh được gọi từ bộ nhớ nhanh hơn các phép tính nhân và chia được thực hiện thì số lượng lệnh được gọi trong luồng chậm và xếp hàng vào đường ống sẽ tăng dần. Cuối cùng, các lệnh này sẽ lấp đầy hàng đợi, khiến luồng xử lý nhanh bị dừng do thiếu dung lượng. Chia sẻ tài nguyên đầy đủ giải quyết vấn đề sử dụng tài nguyên được chia sẻ dưới mức tối ưu, nhưng tạo ra sự mất cân bằng trong mức tiêu thụ của chúng - một luồng có thể làm chậm hoặc dừng luồng khác.
Sơ đồ trung gian được triển khai trong khuôn khổ chia sẻ tài nguyên theo ngưỡng. Theo sơ đồ này, bất kỳ luồng chương trình nào cũng có thể tự động lấy được một lượng tài nguyên (có giới hạn) nhất định. Khi áp dụng cho các tài nguyên được sao chép, phương pháp này mang lại sự linh hoạt mà không có mối đe dọa về việc một trong các luồng chương trình bị ngừng hoạt động do không thể lấy được tài nguyên. Ví dụ: nếu bạn cấm mỗi luồng chiếm hơn 3/4 hàng đợi lệnh, thì mức tiêu thụ tài nguyên tăng lên của luồng chậm sẽ không cản trở việc thực thi luồng nhanh.
Mô hình siêu phân luồng Pentium 4 kết hợp các chiến lược chia sẻ tài nguyên khác nhau. Vì vậy, một nỗ lực được thực hiện để giải quyết tất cả các vấn đề liên quan đến từng chiến lược. Sự trùng lặp xảy ra trong các tài nguyên mà cả hai luồng liên tục cần truy cập (cụ thể là bộ đếm chương trình, bảng bản đồ đăng ký và bộ điều khiển ngắt). Việc sao chép các tài nguyên này chỉ làm tăng diện tích chip thêm 5% - bạn đồng ý, một mức giá rất hợp lý cho đa luồng. Các tài nguyên có sẵn với số lượng lớn đến mức hầu như không thể bị chiếm bởi một luồng duy nhất (ví dụ: các dòng bộ đệm) được phân bổ động. Quyền truy cập vào các tài nguyên kiểm soát hoạt động của đường ống (đặc biệt là nhiều hàng đợi của nó) được chia - mỗi luồng chương trình được cấp một nửa số vị trí. Đường dẫn chính của kiến ​​trúc Netburst được triển khai trong Pentium 4 được hiển thị trong Hình 2. 8,7; Các vùng màu trắng và xám trong hình minh họa này biểu thị cơ chế phân phối tài nguyên giữa các luồng chương trình màu trắng và xám.
Như bạn có thể thấy, tất cả các hàng đợi trong hình minh họa này đều được chia - mỗi luồng chương trình được phân bổ một nửa số vị trí. Không có chủ đề chương trình nào có thể hạn chế công việc của chủ đề khác. Khối phân phối và thay thế cũng được chia. Tài nguyên của bộ lập lịch được phân bổ động nhưng dựa trên một số ngưỡng - sao cho không một luồng nào có thể chiếm tất cả các vị trí hàng đợi. Đối với tất cả các giai đoạn khác của băng tải có sự tách biệt hoàn toàn.
Tuy nhiên, với đa luồng, không phải mọi thứ đều đơn giản như vậy. Ngay cả một kỹ thuật tiến bộ như vậy cũng có nhược điểm. Phân vùng cứng tài nguyên không liên quan đến chi phí nghiêm trọng, nhưng phân vùng động, đặc biệt có tính đến các ngưỡng, yêu cầu giám sát mức tiêu thụ tài nguyên trong thời gian chạy. Ngoài ra, trong một số trường hợp, các chương trình không cần đa luồng sẽ chạy tốt hơn nhiều so với khi có nó. Ví dụ: giả sử nếu bạn có hai luồng chương trình thì mỗi luồng yêu cầu 3/4 bộ đệm để hoạt động bình thường. Nếu chúng được thực thi luân phiên, thì mỗi cái sẽ cho thấy hiệu quả hợp lý với một số ít lỗi bộ đệm (được biết là có liên quan đến chi phí bổ sung). Trong trường hợp thực thi song song, mỗi bộ nhớ đệm sẽ bị lỗi bộ đệm nhiều hơn đáng kể và kết quả cuối cùng sẽ tệ hơn so với việc không có đa luồng.
Thông tin bổ sung về cơ chế đa luồng RepPit 4 có thể được tìm thấy trong.

Giới thiệu. Công nghệ máy tính đang phát triển với tốc độ chóng mặt. Các thiết bị máy tính ngày càng trở nên mạnh mẽ hơn, nhỏ gọn hơn và tiện lợi hơn, nhưng việc tăng hiệu năng của thiết bị gần đây đã trở thành một vấn đề lớn. Năm 1965, Gordon Moore (một trong những người sáng lập Intel) đã đưa ra kết luận rằng “số lượng bóng bán dẫn được đặt trên một con chip mạch tích hợp sẽ tăng gấp đôi sau mỗi 24 tháng”.

Những phát triển đầu tiên trong lĩnh vực tạo ra hệ thống đa bộ xử lý bắt đầu từ những năm 70. Trong một thời gian dài, hiệu suất của bộ xử lý lõi đơn thông thường được tăng lên bằng cách tăng tần số xung nhịp (có tới 80% hiệu suất chỉ được xác định bởi tần số xung nhịp) đồng thời tăng số lượng bóng bán dẫn trên chip. Các định luật vật lý cơ bản đã ngăn chặn quá trình này: các con chip bắt đầu quá nóng và con chip công nghệ bắt đầu đạt đến kích thước của các nguyên tử silicon. Tất cả những yếu tố này dẫn đến thực tế là:

  • Dòng điện rò rỉ tăng lên, dẫn đến tăng sinh nhiệt và tiêu thụ điện năng.
  • Bộ xử lý đã trở nên “nhanh” hơn nhiều so với bộ nhớ. Hiệu suất bị giảm do độ trễ trong việc truy cập RAM và tải dữ liệu vào bộ đệm.
  • Khái niệm “nút thắt cổ chai von Neumann” nảy sinh. Điều đó có nghĩa là kiến ​​trúc bộ xử lý không hiệu quả khi thực thi một chương trình.

Hệ thống đa bộ xử lý (là một trong những cách giải quyết vấn đề) không được sử dụng rộng rãi vì chúng yêu cầu sản xuất bo mạch chủ đa bộ xử lý đắt tiền và khó khăn. Dựa trên điều này, năng suất tăng lên theo những cách khác. Khái niệm đa luồng hóa ra lại có hiệu quả - xử lý đồng thời một số luồng lệnh.

Công nghệ siêu phân luồng (HTT) hay công nghệ xử lý dữ liệu siêu phân luồng cho phép bộ xử lý thực thi nhiều luồng chương trình trên một lõi. Theo ý kiến ​​​​của nhiều chuyên gia, chính HTT đã trở thành điều kiện tiên quyết để tạo ra bộ xử lý đa lõi. Việc thực thi đồng thời một số luồng chương trình bằng bộ xử lý được gọi là song song cấp luồng (TLP).

Để khai thác tiềm năng của bộ xử lý đa lõi, chương trình thực thi phải sử dụng tất cả các lõi máy tính, điều này không phải lúc nào cũng có thể đạt được. Các chương trình tuần tự cũ chỉ có thể sử dụng một lõi sẽ không còn chạy nhanh hơn trên thế hệ bộ xử lý mới, vì vậy các lập trình viên ngày càng tham gia nhiều hơn vào việc phát triển bộ vi xử lý mới.

1. Khái niệm chung

Kiến trúc theo nghĩa rộng là sự mô tả một hệ thống phức tạp bao gồm nhiều phần tử.

Trong quá trình phát triển, các cấu trúc bán dẫn (chip) phát triển, do đó, nguyên tắc xây dựng bộ xử lý, số lượng phần tử có trong thành phần của chúng và cách tổ chức tương tác của chúng liên tục thay đổi. Do đó, các CPU có cùng nguyên tắc cấu trúc cơ bản thường được gọi là bộ xử lý có cùng kiến ​​trúc. Và bản thân những nguyên tắc như vậy được gọi là kiến ​​trúc bộ xử lý (hoặc vi kiến ​​trúc).

Bộ vi xử lý (hoặc bộ xử lý) là thành phần chính của máy tính. Nó xử lý thông tin, thực thi chương trình và điều khiển các thiết bị khác trong hệ thống. Sức mạnh của bộ xử lý quyết định tốc độ thực thi chương trình.

Lõi là cơ sở của bất kỳ bộ vi xử lý nào. Nó bao gồm hàng triệu bóng bán dẫn nằm trên một con chip silicon. Bộ vi xử lý được chia thành các ô đặc biệt gọi là các thanh ghi mục đích chung (GPR). Công việc của bộ xử lý bao gồm việc lấy toàn bộ các lệnh và dữ liệu từ bộ nhớ theo một trình tự nhất định và thực hiện chúng. Ngoài ra, để tăng tốc độ của PC, bộ vi xử lý được trang bị bộ nhớ đệm bên trong. Bộ nhớ đệm là bộ nhớ trong của bộ xử lý, được sử dụng làm bộ đệm (để bảo vệ khỏi sự gián đoạn trong giao tiếp với RAM).

Bộ xử lý Intel được sử dụng trong các PC tương thích với IBM có hơn một nghìn lệnh và thuộc về các bộ xử lý có hệ thống lệnh mở rộng - bộ xử lý CISC (CISC - Máy tính tập lệnh phức tạp).

1.1 Tính toán hiệu năng cao. Sự song song

Tốc độ phát triển của công nghệ điện toán rất dễ theo dõi: từ ENIAC (máy tính kỹ thuật số điện tử đa năng đầu tiên) với hiệu suất vài nghìn phép tính mỗi giây đến siêu máy tính Tianhe-2 (1000 nghìn tỷ phép tính dấu phẩy động mỗi giây). Điều này có nghĩa là tốc độ tính toán đã tăng lên hàng nghìn tỷ lần trong 60 năm. Việc tạo ra các hệ thống máy tính hiệu năng cao là một trong những vấn đề khoa học kỹ thuật khó khăn nhất. Trong khi tốc độ tính toán của các phương tiện kỹ thuật chỉ tăng vài triệu lần thì tốc độ tính toán tổng thể đã tăng lên hàng nghìn tỷ lần. Hiệu ứng này đạt được thông qua việc sử dụng tính song song ở tất cả các giai đoạn tính toán. Tính toán song song đòi hỏi phải tìm kiếm cách phân bổ bộ nhớ hợp lý, các phương pháp đáng tin cậy để truyền thông tin và điều phối các quá trình tính toán.

1.2 Đa xử lý đối xứng

Đa xử lý đối xứng (viết tắt SMP) hoặc đa xử lý đối xứng là một kiến ​​trúc đặc biệt của hệ thống đa bộ xử lý trong đó một số bộ xử lý có quyền truy cập vào bộ nhớ dùng chung. Đây là một kiến ​​trúc rất phổ biến, được sử dụng khá rộng rãi gần đây.

Khi sử dụng SMP, một số bộ xử lý hoạt động trong máy tính cùng một lúc, mỗi bộ xử lý thực hiện một nhiệm vụ riêng. Hệ thống SMP với hệ điều hành chất lượng cao phân bổ hợp lý các tác vụ giữa các bộ xử lý, đảm bảo tải đồng đều cho từng bộ xử lý. Tuy nhiên, một vấn đề nảy sinh với việc truy cập bộ nhớ, bởi vì ngay cả các hệ thống bộ xử lý đơn cũng yêu cầu thời gian tương đối dài cho việc này. Do đó, việc truy cập vào RAM trong SMP diễn ra tuần tự: bộ xử lý đầu tiên, sau đó là bộ xử lý thứ hai.

Do các tính năng được liệt kê ở trên, hệ thống SMP được sử dụng riêng trong lĩnh vực khoa học, công nghiệp, kinh doanh và cực kỳ hiếm khi được sử dụng trong các văn phòng làm việc. Ngoài chi phí triển khai phần cứng cao, các hệ thống như vậy còn yêu cầu phần mềm chất lượng cao và đắt tiền, cung cấp khả năng thực thi các tác vụ đa luồng. Các chương trình thông thường (trò chơi, trình soạn thảo văn bản) sẽ không hoạt động hiệu quả trong hệ thống SMP vì chúng không cung cấp mức độ song song như vậy. Nếu bạn điều chỉnh bất kỳ chương trình nào cho hệ thống SMP, nó sẽ trở nên cực kỳ kém hiệu quả khi hoạt động trên các hệ thống bộ xử lý đơn, dẫn đến nhu cầu tạo một số phiên bản của cùng một chương trình cho các hệ thống khác nhau. Ví dụ: một ngoại lệ là chương trình ABLETON LIVE (được thiết kế để tạo nhạc và chuẩn bị các bộ Dj), có hỗ trợ cho các hệ thống đa bộ xử lý. Nếu bạn chạy một chương trình thông thường trên hệ thống nhiều bộ xử lý, nó vẫn sẽ chạy nhanh hơn một chút so với hệ thống một bộ xử lý. Điều này là do cái gọi là gián đoạn phần cứng (dừng chương trình để xử lý kernel), được thực thi trên một bộ xử lý miễn phí khác.

Hệ thống SMP (giống như bất kỳ hệ thống nào khác dựa trên tính toán song song) đặt ra yêu cầu ngày càng tăng đối với tham số bộ nhớ như băng thông bus bộ nhớ. Điều này thường giới hạn số lượng bộ xử lý trong hệ thống (hệ thống SMP hiện đại chạy hiệu quả tới 16 bộ xử lý).

Vì các bộ xử lý có bộ nhớ dùng chung nên cần có sự sử dụng hợp lý và phối hợp dữ liệu. Trong một hệ thống đa bộ xử lý, hóa ra có một số bộ nhớ đệm hoạt động trên một tài nguyên bộ nhớ dùng chung. Tính nhất quán của bộ đệm là thuộc tính bộ đệm đảm bảo tính toàn vẹn của dữ liệu được lưu trữ trong bộ đệm riêng lẻ cho tài nguyên được chia sẻ. Khái niệm này là trường hợp đặc biệt của khái niệm kết hợp bộ nhớ, trong đó nhiều lõi có quyền truy cập vào bộ nhớ dùng chung (được tìm thấy ở mọi nơi trong các hệ thống đa lõi hiện đại). Nếu chúng ta mô tả các khái niệm này bằng thuật ngữ chung thì bức tranh sẽ như sau: cùng một khối dữ liệu có thể được tải vào các bộ đệm khác nhau, trong đó dữ liệu được xử lý khác nhau.

Nếu bất kỳ thông báo thay đổi dữ liệu nào không được sử dụng thì sẽ xảy ra lỗi. Sự gắn kết của bộ đệm được thiết kế để giải quyết những xung đột như vậy và duy trì tính nhất quán của dữ liệu trong bộ đệm.

Hệ thống SMP là một nhóm con của MIMD (multi-in-struction multi data - một hệ thống máy tính có nhiều luồng lệnh và nhiều luồng dữ liệu) thuộc phân loại hệ thống máy tính Flynn (giáo sư tại Đại học Stanford, đồng sáng lập Palyn Associates). Theo cách phân loại này, hầu hết tất cả các loại hệ thống song song đều có thể được phân loại là MIMD.

Hệ thống đa bộ xử lý được chia thành các loại dựa trên nguyên tắc sử dụng bộ nhớ. Cách tiếp cận này cho phép chúng tôi phân biệt các loại quan trọng sau đây

hệ thống đa bộ xử lý - bộ đa bộ xử lý (hệ thống đa bộ xử lý có bộ nhớ dùng chung) và bộ đa máy tính (hệ thống có bộ nhớ riêng). Dữ liệu dùng chung được sử dụng trong tính toán song song yêu cầu phải đồng bộ hóa. Nhiệm vụ đồng bộ hóa dữ liệu là một trong những vấn đề quan trọng nhất và giải pháp của nó khi phát triển các hệ thống đa bộ xử lý, đa lõi và theo đó, phần mềm cần thiết là nhiệm vụ ưu tiên của các kỹ sư và lập trình viên. Quyền truy cập chia sẻ vào dữ liệu có thể được thực hiện bằng cách cấp phát bộ nhớ vật lý. Cách tiếp cận này được gọi là truy cập bộ nhớ không đồng nhất hoặc NUMA.

Trong số các hệ thống này, chúng ta có thể nhấn mạnh:

  • Các hệ thống chỉ sử dụng bộ nhớ đệm riêng của bộ xử lý để trình bày dữ liệu (kiến trúc bộ nhớ chỉ có bộ đệm).
  • Các hệ thống đảm bảo sự gắn kết của bộ nhớ đệm cục bộ cho các bộ xử lý khác nhau (NUMA kết hợp bộ nhớ đệm).
  • Các hệ thống cung cấp quyền truy cập chung vào bộ nhớ riêng lẻ của bộ xử lý mà không triển khai kết hợp bộ nhớ đệm ở cấp độ phần cứng (NUMA kết hợp không phải bộ nhớ đệm).

Việc đơn giản hóa vấn đề tạo hệ thống đa bộ xử lý đạt được bằng cách sử dụng bộ nhớ dùng chung phân tán, nhưng phương pháp này dẫn đến sự gia tăng đáng kể độ phức tạp của lập trình song song.

1.3 Đa luồng đồng thời

Dựa trên tất cả những nhược điểm nêu trên của đa xử lý đối xứng, việc phát triển và phát triển các cách khác để cải thiện hiệu suất là điều hợp lý. Nếu bạn phân tích hoạt động của từng bóng bán dẫn riêng lẻ trong bộ xử lý, bạn có thể chú ý đến một thực tế rất thú vị - khi thực hiện hầu hết các hoạt động tính toán, không phải tất cả các thành phần của bộ xử lý đều được sử dụng (theo nghiên cứu gần đây - khoảng 30% tổng số bóng bán dẫn) . Do đó, nếu bộ xử lý thực hiện một phép toán số học đơn giản, thì hầu hết bộ xử lý sẽ không hoạt động, do đó, nó có thể được sử dụng cho các phép tính khác. Vì vậy, nếu bộ xử lý hiện đang thực hiện các phép toán thực thì một phép toán số học số nguyên có thể được tải vào phần trống. Để tăng tải cho bộ xử lý, bạn có thể tạo các hoạt động thực thi suy đoán (hoặc chuyển tiếp), điều này đòi hỏi logic phần cứng của bộ xử lý rất phức tạp. Nếu bạn xác định trước các luồng chương trình (chuỗi lệnh) có thể được thực thi độc lập với nhau, thì điều này sẽ đơn giản hóa đáng kể tác vụ (phương pháp này có thể dễ dàng thực hiện ở cấp độ phần cứng). Ý tưởng này thuộc sở hữu của Dean Toulsen (được ông phát triển vào năm 1955 tại Đại học Washington), được gọi là đa luồng đồng thời. Sau đó nó được Intel phát triển dưới tên siêu phân luồng. Do đó, một bộ xử lý thực thi nhiều luồng được hệ điều hành Windows coi là một số bộ xử lý. Việc sử dụng công nghệ này một lần nữa đòi hỏi mức độ phần mềm phù hợp. Hiệu quả tối đa từ việc sử dụng công nghệ đa luồng là khoảng 30%.

1.4 Đa lõi

Công nghệ đa luồng – triển khai đa lõi ở cấp độ phần mềm. Như mọi khi, việc tăng hiệu suất hơn nữa đòi hỏi phải thay đổi phần cứng bộ xử lý. Việc tăng độ phức tạp của hệ thống và kiến ​​trúc không phải lúc nào cũng hiệu quả. Có ý kiến ​​​​trái ngược: Mọi thứ khéo léo đều đơn giản! Thật vậy, để tăng hiệu suất của bộ xử lý, không nhất thiết phải tăng tần số xung nhịp hoặc làm phức tạp các thành phần logic và phần cứng, vì chỉ cần hợp lý hóa và tinh chỉnh công nghệ hiện có là đủ. Phương pháp này mang lại lợi nhuận rất cao - không cần phải giải quyết vấn đề tăng khả năng tản nhiệt của bộ xử lý hoặc phát triển các thiết bị mới đắt tiền để sản xuất vi mạch. Cách tiếp cận này được triển khai trong khuôn khổ công nghệ đa lõi - việc triển khai một số lõi điện toán trên một chip. Nếu chúng ta lấy bộ xử lý ban đầu và so sánh mức tăng hiệu suất khi thực hiện một số phương pháp để tăng hiệu suất thì rõ ràng việc sử dụng công nghệ đa lõi là lựa chọn tốt nhất.

Nếu chúng ta so sánh kiến ​​​​trúc của bộ xử lý đa lõi đối xứng và bộ xử lý đa lõi, chúng sẽ gần như giống hệt nhau. Bộ đệm lõi có thể có nhiều cấp độ (cục bộ và chia sẻ, đồng thời dữ liệu từ RAM có thể được tải trực tiếp vào bộ đệm cấp hai). Dựa trên những ưu điểm được coi là của kiến ​​trúc bộ xử lý đa lõi, các nhà sản xuất tập trung vào nó. Công nghệ này hóa ra khá rẻ để triển khai và phổ biến, điều này giúp nó có thể đưa nó ra thị trường rộng rãi. Ngoài ra, kiến ​​trúc này còn có những điều chỉnh riêng theo định luật Moore: “số lượng lõi tính toán trong bộ xử lý sẽ tăng gấp đôi sau mỗi 18 tháng”.

Nếu nhìn vào thị trường máy tính hiện đại, bạn có thể thấy rằng các thiết bị có bộ xử lý bốn và tám lõi chiếm ưu thế. Ngoài ra, các nhà sản xuất bộ xử lý cho biết bộ xử lý có hàng trăm lõi xử lý sẽ sớm có mặt trên thị trường. Như đã nói nhiều lần trước đây, toàn bộ tiềm năng của kiến ​​trúc đa lõi chỉ được bộc lộ khi có phần mềm chất lượng cao. Vì vậy, việc sản xuất phần cứng và phần mềm máy tính có mối quan hệ rất chặt chẽ với nhau.

Nhưng với việc chinh phục các đỉnh mới về chỉ số tần số, việc tăng nó trở nên khó khăn hơn vì điều này ảnh hưởng đến việc tăng TDP của bộ xử lý. Do đó, các nhà phát triển bắt đầu tăng chiều rộng của bộ xử lý, cụ thể là thêm lõi và nảy sinh khái niệm đa lõi.

Đúng nghĩa đen là 6-7 năm trước, bộ xử lý đa lõi thực tế chưa từng được biết đến. Không, bộ xử lý đa lõi của cùng một công ty IBM đã tồn tại trước đó, nhưng sự xuất hiện của bộ xử lý lõi kép đầu tiên dành cho máy tính để bàn, chỉ diễn ra vào năm 2005 và bộ xử lý này được gọi là Pentium D. Ngoài ra, vào năm 2005, Opteron lõi kép của AMD đã được phát hành, nhưng dành cho hệ thống máy chủ.

Trong bài viết này, chúng tôi sẽ không đi sâu vào chi tiết các sự kiện lịch sử mà sẽ thảo luận về các bộ xử lý đa lõi hiện đại như một trong những đặc điểm của CPU. Và quan trọng nhất, chúng ta cần tìm hiểu xem đa lõi này mang lại điều gì về mặt hiệu suất cho bộ xử lý cũng như cho bạn và tôi.

Tăng hiệu suất nhờ đa lõi

Nguyên tắc tăng hiệu suất xử lý bằng cách sử dụng nhiều lõi là chia việc thực thi các luồng (các tác vụ khác nhau) thành nhiều lõi. Tóm lại, chúng tôi có thể nói rằng hầu hết mọi tiến trình đang chạy trên hệ thống của bạn đều có nhiều luồng.

Hãy để tôi đặt trước ngay rằng hệ điều hành hầu như có thể tạo ra nhiều luồng cho chính nó và thực hiện tất cả các luồng đó cùng một lúc, ngay cả khi bộ xử lý vật lý là lõi đơn. Nguyên tắc này thực hiện đa nhiệm giống như Windows (ví dụ: nghe nhạc và gõ văn bản đồng thời).


Hãy lấy một chương trình chống vi-rút làm ví dụ. Một luồng sẽ quét máy tính, luồng còn lại sẽ cập nhật cơ sở dữ liệu chống vi-rút (chúng tôi đã đơn giản hóa mọi thứ rất nhiều để hiểu khái niệm chung).

Và hãy xem điều gì sẽ xảy ra trong hai trường hợp khác nhau:

a) Bộ xử lý lõi đơn. Vì chúng tôi có hai luồng chạy đồng thời, nên chúng tôi cần tạo cho người dùng (trực quan) việc thực thi đồng thời tương tự này. Hệ điều hành thực hiện điều gì đó thông minh:có một sự chuyển đổi giữa việc thực hiện hai luồng này (các chuyển đổi này là tức thời và thời gian tính bằng mili giây). Tức là hệ thống “thực hiện” cập nhật một chút rồi đột ngột chuyển sang quét, rồi quay lại cập nhật. Vì vậy, đối với bạn và tôi, có vẻ như chúng ta đang thực hiện hai nhiệm vụ này cùng một lúc. Nhưng cái gì bị mất? Tất nhiên, hiệu suất. Vì vậy, hãy xem xét lựa chọn thứ hai.

b) Bộ xử lý đa lõi. Trong trường hợp này, chuyển đổi này sẽ không xảy ra. Hệ thống rõ ràng sẽ gửi từng luồng đến một lõi riêng biệt, do đó sẽ cho phép chúng ta loại bỏ việc chuyển từ luồng này sang luồng khác gây bất lợi cho hiệu suất (hãy lý tưởng hóa tình huống). Hai luồng được thực thi đồng thời, đây là nguyên tắc đa lõi và đa luồng. Cuối cùng, chúng tôi sẽ quét và cập nhật trên bộ xử lý đa lõi nhanh hơn nhiều so với bộ xử lý lõi đơn. Nhưng có một nhược điểm - không phải tất cả các chương trình đều hỗ trợ đa lõi. Không phải mọi chương trình đều có thể được tối ưu hóa theo cách này. Và mọi thứ diễn ra không hề lý tưởng như chúng tôi đã mô tả. Nhưng mỗi ngày, các nhà phát triển ngày càng tạo ra nhiều chương trình có mã được tối ưu hóa hoàn hảo để thực thi trên bộ xử lý đa lõi.

Bạn có cần bộ xử lý đa lõi không? Lý do hàng ngày

Tại chọn bộ xử lýđối với một máy tính (cụ thể là khi nghĩ về số lượng lõi), bạn nên xác định các loại nhiệm vụ chính mà nó sẽ thực hiện.

Để nâng cao kiến ​​thức của bạn trong lĩnh vực phần cứng máy tính, bạn có thể đọc tài liệu về ổ cắm bộ xử lý .

Bộ xử lý lõi kép có thể được gọi là điểm khởi đầu, vì không có ích gì khi quay lại các giải pháp lõi đơn. Nhưng bộ xử lý lõi kép thì khác. Đây có thể không phải là Celeron gần đây “nhất” nhưng có thể là Core i3 trên Ivy Bridge, giống như Sempron hay Phenom II của AMD. Đương nhiên, do các chỉ số khác, hiệu suất của chúng sẽ rất khác nhau, vì vậy bạn cần xem xét mọi thứ một cách toàn diện và so sánh đa lõi với các chỉ số khác đặc điểm bộ xử lý.

Ví dụ: Core i3 trên Ivy Bridge có công nghệ Hyper-Treading, cho phép bạn xử lý đồng thời 4 luồng (hệ điều hành nhìn thấy 4 lõi logic, thay vì 2 lõi vật lý). Nhưng cùng một Celeron không tự hào về điều này.

Nhưng chúng ta hãy quay lại trực tiếp những suy nghĩ liên quan đến các nhiệm vụ được yêu cầu. Nếu cần một máy tính cho công việc văn phòng và lướt Internet thì bộ xử lý lõi kép là đủ.

Khi nói đến hiệu năng chơi game, hầu hết các game đều yêu cầu 4 lõi trở lên mới có thể sử dụng thoải mái. Nhưng ở đây cũng có một vấn đề tương tự: không phải tất cả các trò chơi đều có mã tối ưu hóa cho bộ xử lý 4 nhân và nếu chúng được tối ưu hóa thì chúng sẽ không hiệu quả như chúng ta mong muốn. Nhưng về nguyên tắc, đối với game hiện nay giải pháp tối ưu là bộ xử lý 4 nhân.


Ngày nay, những bộ xử lý AMD 8 nhân tương tự đều thừa cho game, đó là số lượng lõi thừa, hiệu năng không bằng nhưng lại có những ưu điểm khác. 8 lõi tương tự này sẽ giúp ích rất nhiều trong các tác vụ đòi hỏi phải làm việc mạnh mẽ với khối lượng công việc đa luồng chất lượng cao. Ví dụ: điều này bao gồm kết xuất video (tính toán) hoặc điện toán máy chủ. Do đó, những tác vụ như vậy cần có 6, 8 lõi trở lên. Và chẳng bao lâu nữa, các trò chơi sẽ có thể tải 8 lõi trở lên một cách hiệu quả, vì vậy trong tương lai, mọi thứ đều rất màu hồng.

Đừng quên rằng vẫn còn rất nhiều tác vụ tạo ra tải đơn luồng. Và thật đáng để bạn tự hỏi mình câu hỏi: liệu tôi có cần đơn vị 8 hạt nhân này hay không?

Tóm lại, tôi muốn lưu ý một lần nữa rằng những ưu điểm của đa lõi thể hiện trong quá trình tính toán đa luồng “nặng”. Và nếu bạn không chơi các trò chơi có yêu cầu cao ngất trời và không thực hiện các loại công việc cụ thể đòi hỏi sức mạnh tính toán tốt, thì việc chi tiền cho các bộ xử lý đa lõi đắt tiền chẳng ích gì (