Đi giải ngố nghĩa là gì

Ở bài viết này, mình muốn cùng các bạn tìm hiểu và làm rõ hơn khái niệm về nhân (core) và luồng (thread) trong khoa học máy tính, và đi tìm câu trả lời cho các câu hỏi hay gặp suốt ngày trên các mạng xã hội, diễn đàn công nghệ như:

Core và Thread khác nhau ở chỗ nào?Có phải CPU có 1 core tức là chỉ chạy được một phần mềm/một thread một thời điểm mà không làm được việc gì khác?Có phải CPU càng nhiều core thì càng mạnh?Core (hay nhân CPU)

Khái niệm về Core (nhân) hết sức dễ hiểu. Mỗi nhân là từng đơn vị xử lý của chiếc vi xử lý, có khả năng độc lập xử lý một dãy các chỉ dẫn. Đương nhiên, nếu vi xử lý của bạn càng có nhiều nhân thì tức là mỗi nhân có thể nhận các chỉ dẫn khác nhau và thực thi song song các chỉ dẫn đó.

Bạn đang xem: Giải ngố là gì

Rõ ràng là với vi xử lý có càng nhiều nhân, thì tức là tiềm năng xử lý của bộ vi xử lý đó càng mạnh. Tuy nhiên, vẫn còn rất nhiều câu hỏi khác về nhân vi xử lý:

Một vi xử lý Snapdragon 2.0 GHz với 8 nhân liệu có nghĩa là nó mạnh gấp 8 lần vi xử lý một nhân tương đương? Hay nói cách khác, ta có thể cho rằng $8 * 2.0 = 16.0$ GHz?Một vi xử lý Intel Core i5 với 2 nhân, 4 luồng nghĩa là sao? Nó liệu có mạnh ngang bằng một vi xử lý 4 nhân thông thường?

Hãy đọc tiếp những phần phía dưới, mình sẽ cùng các bạn từ từ làm rõ.

Hyperthreading

Siêu phân luồng (Hyperthreading) là tên gọi riêng của Intel cho kỹ thuật gọi là Simultaneous Multithreading (SMT). Công nghệ này cho phép mỗi nhân thực (physical core) của vi xử lý có thể hiện diện như 2 nhân ảo (logical core) đối với hệ điều hành. Nếu bạn thấy một vi xử lý mà có ghi thông tin là 2 nhân, 4 luồng xử lý hay 6 nhân 12 luồng thì tức là vi xử lý của bạn có hỗ trợ SMT. AMD cũng có thuật ngữ riêng cho các vi xử lý có hỗ trợ SMT của họ là CMT (Cluster-based Multithreading). Tuy nhiên ở trong bài này, mình sẽ tạm dùng tên gọi Hyperthreading vì nó phổ biến hơn.

CPU thread và OS thread

Đây là một điều dễ gây nhầm lẫn với nhiều người. CPU thread chính là các logical core, tức là các nhân của CPU mà hệ điều hành nhìn thấy. Hệ điều hành hiểu những CPU thread này ngang với những nhân CPU thực sự, và bắt đầu giao cho những nhân này xử lý các “tác vụ” là những OS thread.

Với một vi xử lý có 6 nhân 12 luồng thì tức là bạn đang có 12 CPU thread, hay 12 logical core khác nhau. Hệ điều sẽ được phép lên lịch tối đa 12 OS thread riêng biệt vào những core này. Trong cùng một thời điểm, những OS thread đó sẽ được các nhân xử lý (hầu như) song song.

Với vi xử lý trên thì số lượng CPU thread chỉ là 12 mà thôi. Tuy nhiên, số lượng OS thread thì lại được quản lý bởi hệ điều hành và có thể được tạo bao nhiêu tuỳ thích, có thể có lên đến hàng ngàn OS thread khác nhau tuỳ vào các chương trình mà bạn chạy.

Lưu ý nhỏ: khi ai đó chỉ nhắc đến từ thread, thì trong đa phần trường hợp, người ta đang ám chỉ đến OS thread!

Hyperthreading có thực sự giúp gấp đôi số nhân?

Hay nói cách khác, một vi xử lý được cho là có 2 nhân 4 luồng, liệu hiệu năng có tương đương với một vi xử lý 4 nhân 4 luồng, giả sử những thông số khác đều tương tự nhau? Nếu không, tại sao người ta còn dùng hyperthreading? Để trả lời câu hỏi này, ta phải đào sâu hơn tý về cách mà công nghệ hyperthreading hoạt động. Một vài thông tin mà mình tìm hiểu được như sau:

Từng nhân CPU có khả năng thực thi các chỉ dẫn cực nhanh (tính bằng nanosecond). Nhưng đôi khi, việc thực thi của CPU bị trì hoãn (stall) vì nhiều lý do khác nhau, ví dụ như cache missing. Ví dụ như trong trường hợp đó, các lệnh chỉ dẫn sẽ phải được nạp lại từ bộ nhớ chính (RAM) vào cache của CPU. Vì bộ nhớ RAM rất chậm nếu so sánh với CPU cache, thao tác này (đối với CPU) là tương đối lâu và tạo cho CPU rất nhiều thời gian rảnh rỗi. Trong khoảnh khắc ngắn này, CPU đáng lẽ có thể thực thi thêm hàng trăm chỉ dẫn nữa.

Các nhân CPU hỗ trợ hyperthreading sẽ nhận tập lệnh chỉ dẫn của lên tới 2 OS thread khác nhau. Tuy mỗi nhân thực (physical core) này thực chất vẫn chỉ hỗ trợ thực thi tập lệnh từ 1 OS thread trong cùng một thời điểm, nhưng khác với nhân thông thường, nó lại có đến 2 bộ thanh ghi (register) hoàn toàn độc lập. Khi gặp các sự kiện như cache missing khi thực thi lệnh ở một OS thread, thay vì chờ không, nhân CPU này có thể nhanh chóng chuyển sang thực thi dãy lệnh ở OS thread kia ngay lập tức. Việc chuyển đổi này là cực nhanh vì nhân CPU này đã có 2 bộ thanh ghi riêng biệt, không mất công như context switch ở cấp độ hệ điều hành.

Như vậy, hyperthreading không phải là kỹ thuật giúp tăng gấp đôi số nhân (hay như gấp đôi hiệu năng) của vi xử lý, mà là giúp tận dụng triệt để khoảng thời gian rảnh rỗi của từng nhân CPU, giúp tăng đối đa throughput của vi xử lý.

Xem thêm: Dùng Phím Tắt Nào Để Mở Tính Năng Tuyển Thành Viên Bang Hội?

Làm sao để so sánh hiệu năng giữa các CPU có/không có hyperthreading?

Ví dụ một bài toán như: giữa hai vi xử lý AMD Ryzen 3 3300X (4 nhân 8 luồng), và vi xử lý AMD Ryzen 5 3500 (6 nhân 6 luồng) có giá tiền rất tương đồng nhau. Vậy nên chọn mua vi xử lý nào hơn?

Thoạt nhìn qua, bạn có thể thấy Ryzen 3 3300X có hỗ trợ hyperthreading hẳn hoi, còn Ryzen 5 3500 vì lý do mờ ám nào đó lại thiếu mất công nghệ này. Đọc ở phần trên, bạn đã biết rằng hyperthreading không giúp x2 số nhân, nên không thể dùng phép so sánh 8 > 6 và kết luận ngay rằng 3300X nhanh hơn được. Vậy làm sao để so sánh?

Hyperthreading thực chất việc có cải thiện hiệu năng nhiều hay ít còn phụ thuộc vào từng trường hợp, thường là cải thiện từ 20% đến 30% hiệu năng của CPU. Như vậy, ta có thể làm một phép toán nhanh: trong trường hợp tận dụng được 100% sức mạnh đa nhân, nếu 3500 có 6 nhân thực giúp hiệu năng tăng gấp 6 lần, thì với 3300X có 4 nhân 8 luồng sẽ cho hiệu năng tăng xấp xỉ $4 * 1.3 = 5.2$ lần (trong trường hợp tốt nhất). Như vậy, 3300X dù có hyperthreading vẫn cho hiệu năng thua thiệt hơn so với 3500.

OS Scheduling và Context Switch

Đọc đến đây, chúng ta đã có thể hiểu rằng, với vi xử lý có một nhân thì chỉ có thể chạy được duy nhất 1 thread trong cùng một thời điểm. Nhưng mình vẫn nhớ rằng thời xưa mình dùng máy tính có chip Intel Pentium IV chỉ có một nhân duy nhất, tuy nhiên máy tính của mình vẫn có thể cùng một lúc vừa nghe nhạc, vừa giải nén file, vừa lướt Web chăm nông trại,… Rút cuộc làm thế nào mà chỉ với duy nhất một nhân của chip Pentium IV lại làm được nhiều việc một lúc như thế??

Trong phim bộ The Flash, các speedster là những người có khả năng di chuyển rất nhanh. Một trong các plot twist chính của mùa đầu bộ phim liên quan đến việc một speedster có thể nhanh đến mức có thể tạo ra “ảo ảnh” và ở 2 nơi cùng một lúc:

So với nhận thức thông thường của con người, vi xử lý của máy tính cũng là một thứ đặc biệt nhanh. Tuy chỉ có thể thực thi một tác vụ tại một thời điểm, nhờ cơ chế lên lịch của hệ điều hành mà chỉ một nhân CPU có thể qua lại xử lý rất nhiều thread khác nhau. Khi một thread được CPU xử lý đủ lâu, hệ điều hành sẽ tạm dừng việc xử lý thread này lại và đưa một thread kế tiếp trong hàng đợi cho CPU xử lý. Quá trình này diễn ra đủ nhanh đến mức gây cho chúng ta ảo giác rằng các tác vụ đang được chạy song song! Nhờ vậy, tuy chỉ với một nhân CPU, hệ điều hành vẫn có thể đạt được đa nhiệm như thường.

Cơ chế được dùng để hệ điều hành chuyển qua lại các thread được gọi là Context Switch. Khi tiến hành Context Switch, hệ điều hành sẽ tạm dừng thực thi một thread, lưu lại trạng thái thực thi của CPU và các thanh ghi rồi lưu vào RAM, sau đó khôi phục các trạng thái và bắt đầu thực thi thread kế tiếp trong hàng đợi. Nó khá tương đồng với hyperthreading nhưng lại là ở cấp độ hệ điều hành, và chậm hơn nhiều so với hypertheading do phải thao tác đọc/ghi trạng thái các thanh ghi bằng bộ nhớ RAM.

Như vậy, để máy tính có thể đa nhiệm, vi xử lý có nhiều nhân là điều hoàn toàn không cần thiết, mà chỉ cần một nhân đủ nhanh là được rồi.

CPU càng nhiều nhân thực (physical core) thì càng mạnh?

Một chiếc điện thoại với con chip SoC Snapdragon 625 với xung nhịp 2.0 GHz và 8 nhân, vậy có phải trong mọi trường hợp mình đều áp dụng được phép tính $2.0 * 8 = 16.0$ GHz?

Câu trả lời đơn giản là không phải trong mọi trường hợp.

Trong máy tính, có nhiều bài toán mà các chương trình hỗ trợ xử lý đa luồng, chia công việc lớn thành các công việc nhỏ chạy qua nhiều OS thread khác nhau, ví dụ từ bài toán đơn giản như nhân 2 ma trận, cho đến dựng video,… Nhưng cũng có những bài toán mà có tính chất “công việc này phụ thuộc vào kết quả của công việc kia”, điển hình như tính số fibonacci thứ $n$ hay giải mã dạng mã hoá AES CBC, những dạng bài toán này buộc phải thực hiện trên một nhân duy nhất. Vài trường hợp khác thì các chương trình có tiềm năng xử lý đa luồng, nhưng người lập trình lại không hỗ trợ hoặc không triệt để.

Tuy nhiên, nếu thiết bị của bạn có chạy nhiều các chương trình cùng một lúc, thì việc có nhiều nhân vẫn đem lại lợi thế đáng kể, do mỗi chương trình đều được chạy trên một hay nhiều OS thread riêng biệt và chắc chắn tận dụng được đa nhân CPU.

Kết bài

Trên đây là những kiến thức mà mình tìm hiểu được. Tuy vậy, các thông tin chắc chắn còn nhiều chỗ chưa chính xác hay thiếu sót, hy vọng được các bạn để lại góp ý ở phần bình luận ở cuối bài viết ^^

"Karen" không chỉ là một tên riêng, nó còn là một từ lóng để chỉ những người có tính cách không mấy tốt đẹp!

  • Giải mã xu hướng tóc tai "ĐẦU CẮT MOI" khiến giang hồ mạng lẫn celeb Việt sốt xình xịch nhiều ngày qua

Karen nghĩa là gì?

Thời gian gần đây, có lẽ bạn thường xuyên bắt gặp từ "Karen" trong các bản tin, các cuộc thảo luận trên mạng xã hội. Nhưng rất nhiều người sẽ bối rối, từ này nghĩa là gì? Thực tế, phải hỏi "Karen" là ai mới đúng!

Đây là một từ lóng dùng để mỉa mai những người cáu kỉnh, hay giận dữ, đáng ghét, thường phân biệt chủng tộc, cho rằng mình có đặc quyền, tỏ vẻ bề trên...

Có thể hiểu đơn giản, Karen là những người có tính cách cáu kỉnh, hách dịch, tự cho mình là mẹ thiên hạ!

Đi giải ngố nghĩa là gì

(Ảnh minh họa)

Karen thường bị hình dung là người phụ nữ trung niên có mái tóc bob màu vàng, thường thường có câu cửa miệng là: "Cho tôi gặp quản lý của anh/chị". Họ cũng hay gọi cảnh sát mà lý do rất... vớ vẩn!

Theo Wikipedia, Karen là một từ để chỉ kiểu người tự cho mình có quyền hoặc đòi hỏi quá mức cần thiết. Một kiểu điển hình thường thấy là một phụ nữ trung niên da trắng có hành động hung hăng khi không có được cái mình muốn.

"Karen" bắt nguồn từ đâu?

Mặc dù không rõ chính xác nhưng "Karen" được cho là lấy cảm hứng từ các nhân vật trong phim cũ: Oh My God, Mean Girls, Goodfellas. Và gần hơn, meme này bắt nguồn từ show hài kịch nổi tiếng của Dane Cook với hàm ý châm chọc "Người bạn mà không ai thích".

Bộ phim Goodfellas.

Tuy nhiên, meme Karen lan rộng và được biết đến nhiều hơn nhờ vào 1 bài đăng trên Tumblr vào ngày 20/10/2016. Người dùng joematar đã chia sẻ đoạn trailer Nintendo Switch với nội dung: "Oh sh**, Karen lại mang con máy Nintendo ngu ngốc của mình tới bữa tiệc kìa! Chúng ta đang nhậu mà Karen. Chúng ta phải nói chuyện".

Bài đăng này sau đó nhận được gần 17.000 note, tính tới 27/12/2017.

Đi giải ngố nghĩa là gì

Bài đăng trên Tumblr.

Nhưng Reddit mới được xem là nơi khởi nguồn chính thức của "Karen". Theo đó, một người đàn ông ly dị vợ và bị cô vợ "cướp" con, lấy mất nhà. Ông đã lên Reddit "xả hận" bằng các bài viết kể tội vợ cũ tên là… Karen.

Những bài viết này dẫn tới một subreddit (tương tự một group - hội nhóm theo chủ đề trên Facebook) được thành lập, lấy tên là Fu**YouKaren với 57.000 người tham gia. Subreddit thường chia sẻ những nội dung về kiểu người mẹ thiên hạ nà, từ kiểu tóc, tính cách...

Đi giải ngố nghĩa là gì

Những hình ảnh chế trên Reddit về kiểu phụ nữ "mẹ thiên hạ".

Những Karen điển hình ngoài đời thực có tính cách, hành động như thế nào?

1. Cô gái cho chú chuột hamster của mình ngồi hàng ghế ưu tiên - Một "Karen" châu Á điển hình

Một cô gái bị gọi là "Karen" trên mạng xã hội vì hành động ngang ngược trên tàu điện ngầm.

Cụ thể, sự việc xảy ra trong một chuyến tàu của Cục Đường sắt Đài Loan (TRA) đi đến ga Xike ở thành phố Tân Đài Bắc vào khoảng 5h25 chiều ngày 5/9, Taiwan News đưa tin.

Cô gái để lồng chuột hamster lên ghế ưu tiên trên tàu bị gọi là "Karen".

Theo đoạn video được ghi lại, người đàn ông lớn tuổi đã ý kiến về việc cô gái đặt lồng chuột lên ghế ưu tiên. Người đàn ông có hỏi cô ấy rằng: "Thú cưng của bạn đã mua vé chưa?"

Tuy nhiên, người phụ nữ đáp trả gay gắt: "Ông bị điên à? Đừng can thiệp nữa".

Cuộc xung đột leo thang khi người đàn ông giật lồng chuột của cô gái khỏi ghế ưu tiên. Cô ta cũng không vừa, bắt đầu đấm người đàn ông lớn tuổi khiến những hành khách khác trên tàu phải can thiệp.

Đi giải ngố nghĩa là gì

Sau một hồi tranh cãi, người đàn ông giật lồng chuột ra khỏi ghế và bị cô gái đánh tới tấp. (Ảnh cắt từ clip)

Các quy định của Cục Đường sắt Đài Loan cho phép đưa vật nuôi lên tàu nhưng chúng phải ở trong lồng và phải được đặt dưới ghế của chủ sở hữu.

2. Người phụ nữ báo cảnh sát khi bị nhắc xích chó lại - Central Park Karen

Một người đàn ông da đen có tên Christian Cooper đang đi dạo ở công viên Central Park, New York thì gặp một người phụ nữ tên là Amy Cooper (không có quan hệ họ hàng). Người đã dắt chó đi dạo mà không có dây xích, hành động này là trái với quy định của công viên.

Đi giải ngố nghĩa là gì

Người phụ nữ báo cảnh sát vì bị nhắc nhở xích chó lại. (Ảnh cắt từ clip)

Christian Cooper nhắc nhở người phụ nữ xích chó lại. Thế là Amy đã nổi giận và gọi 911 để thông báo có người đàn ông đe dọa mạng sống của mình. Người phụ nữ còn nhấn mạnh thêm với cảnh sát rằng anh này là người Mỹ gốc Phi. Toàn bộ cuộc trao đổi đã được quay phim, tải lên mạng xã hội và cô Cooper từ đó được biết đến với cái tên "Central Park Karen".

3. Người phụ nữ mắng cô bé châu Á vì tập thể dục ở công việc

Một cậu thiếu niên người châu Á đang tập thể dục trong công viên thì bị người phụ nữ lớn tuổi mắng xối xả là đi vào phòng gym mà tập. Người này còn bảo: "Hãy quay về nước châu Á nào đấy, nơi mà mày thuộc về đi!"

Đi giải ngố nghĩa là gì

(Ảnh cắt từ clip)

Tóm lại, chỉ cần lên YouTube hoặc Google và gõ từ khóa "Karen", bạn sẽ thấy hàng triệu kết quả về những mẹ thiên hạ đời thực.

Từ lóng này cũng được sử dụng rất phổ biến, chị em "giải ngố" ngay vào từ điển và đừng bao giờ hành động kiểu hách dịch để bị gọi là "Karen" nhé!