11 Kiến trúc đa nhân, thời đại mới của vi xử lý (Phần I)

(Post 01/08/2006) Với phần một của loạt bài viết này, vnOCzone.com sẽ phân tích những vấn đề hiện còn tồn tại của kiến trúc vi xử lý hiện tại và những chướng ngại vật trong việc gia tăng hiệu năng của vi xử lý.

Giới thiệu chung

Vào thời điểm năm 2002, liên tiếp trong hai kỳ IDF của mình Intel đã không ngừng nhấn mạnh vào việc đẩy mạnh tốc độ xung của bộ xử lý với kiến trúc Netburst của mình. Việc Intel chứng minh khả năng (trên lý thuyết) có thể sản xuất được CPU dùng kiến trúc Netburst (Pentium 4) chạy ở tốc độ 10GHz tại IDF mùa xuân 2002, và việc trình diễn trực quan một bộ xử lý Pentium 4 chạy ở tốc độ xung 4.7GHz tại IDF mùa thu 2002, Intel đã luôn cố chứng minh rằng tốc độ tốc độ xử lý của CPU sẽ vẫn được nâng cao cùng với việc gia tăng tốc độ xung.

Sau đó ba năm, chủ đề chính của IDF mùa xuân năm 2005 là “bộ xử lý đa nhân”, và chủ đề chính của IDF mùa thu năm 2005 mới diễn ra là “hiệu năng trên công suất tiêu thụ”. Và cho tới tận thời điểm này, Intel cũng chưa thể (hay chưa muốn?) công bố bất kỳ một CPU nào với tốc độ xung 4GHz trở lên.

Vậy thì, lời hứa 10GHz giờ ra sao rồi?

Về lý thuyết, xin nhắc lại là về lý thuyết, việc tăng tốc độ xung lên hơn nữa không phải là không thể. Tuy nhiên, liệu đó có phải là cách duy nhất có thể sử dụng để nâng cao tốc độ xử lý hay còn gọi là hiệu năng của bộ xử lý, khi mà cùng với việc nâng cao tốc độ xung, quá nhiều vấn đề nảy sinh cần phải giải quyết.

Vấn đề đầu tiên, mức độ tiêu thụ năng lượng tăng cao một cách khó chấp nhận được. Như hiện nay, Pentium 4 570 (3.8GHz) đã tiêu thụ tới khoảng 160W, cùng với các thiết bị “đói điện” khác như card đồ họa sử dụng GPU 7800GTX mạnh nhất của nVidia sử dụng tới 80W, hay thậm chí ATi X1800 XT sử dụng tới hơn 110W, chưa kể tới việc chạy hai card dưới chế độ SLI (hay CrossFire)… Cứ cái đà này thì tôi không dám chắc rằng hai năm nữa bộ nguồn máy tính công suất tầm 2kW không phải là phổ biến.

Bắt nguồn từ sự gia tăng mức độ tiêu thụ năng lượng, đi kèm với nó là vấn đề giải quyết nhiệt lượng tỏa ra khi hoạt động, cùng với một mớ các “máy silicon” chạy hùng hục trong máy tính của bạn, trong tương lai không xa, có lẽ hầu hết các công ty sản xuất thiết bị sưởi ấm gia đình sẽ dẹp tiệm sạch và chuyển qua ngành nghề kinh doanh mới: “nghiên cứu và chế tạo thiết bị tản nhiệt cho máy tính đồng thời tận dụng nhiệt lượng để sưởi ấm không khí”. Cùng lúc đó, chính phủ các nước nhiệt đới sẽ ra những sắc lệnh, kiểu như “máy tính phải đăng ký biển số”, “ngày lẻ dùng máy lẻ, ngày chẵn dùng máy chẵn”, hay là “một người chỉ được đứng tên một máy tính”… ai mà biết được…

Vấn đề thứ ba, chi phí chế tạo và giá thành sản phẩm. Để sản xuất được những “mẩu” silicon bé tí teo mà chúng ta vẫn hay gọi một cách thân yêu là CPU, Intel nói riêng và các hãng sản xuất bộ xử lý nói chung, cần phải có những nhà máy chế tạo (fab) và những dây chuyền in silicon trị giá nhiều tỉ USD, ngay cả “thầy Hồ” chắc cũng không đủ tiền để xây dựng một cái như vậy. Đó là nói về các fab và các dây chuyền chế tạo silicon với tốc độ xung như hiện tại, nếu tốc độ xung muốn nhắm tới còn cao hơn nữa, ví dụ 10GHz chẳng hạn, thì số tiền đầu tư vào sản xuất còn khổng lồ hơn rất rất nhiều, mà kết quả thì chưa biết sẽ đạt được bao nhiêu. Nên nhớ, tỉ lệ sống của core (yeild rate) hiện tại nếu đạt 70% đã là thành công rất lớn.

Một vấn đề nữa, sẽ được trình bày kỹ hơn ở phần sau của bài viết, tốc độ xung khó có thể là chỗ dựa cho CPU để tăng hiệu năng hoạt động.

Đồng thời, mỗi một bộ xử lý trước khi thành phẩm lại còn phải đóng gói vào đế; nghiên cứu chế tạo ra stock hsf – heatsink fan (tản nhiệt đi kèm CPU) sao cho đủ để gánh lượng nhiệt tỏa ra; nghiên cứu ra các giải pháp case máy tính sao cho phù hợp với các vấn đề về công suất và nhiệt lượng cũng tốn rất nhiều tiền của và thời gian…

Tất nhiên, tôi nói hơi quá lời, nhưng những vấn đề nêu trên là có, và hiện tại đang hiện hữu chứ không phải là trong tương lai. Giải pháp cho những vấn đề này là gì?

Với vấn đề công suất tiêu thụ và nhiệt lượng sản sinh. Đây là chủ đề chính trong IDF gần đây nhất “hiệu năng trên công suất tiêu thụ”, nhưng tiếc rằng đó không phải là chủ đề tuần này của vnOCzone.com, do đó chúng ta sẽ nhắc tới chủ đề này sau, khi có dịp.

Giải pháp cho vấn đề chi phí sản xuất và hiệu năng của CPU, chính là chủ đề chính của vnOCzone.com tuần này. Vi xử lý đa nhân, với một ví dụ tiếp cận kiến trúc này một cách đơn giản nhất, bộ xử lý hai nhân.

Trước tiên, với phần một của loạt bài này, tôi sẽ nêu lên những vấn đề hiện tại đang gặp phải trong việc gia tăng hiệu năng bộ vi xử lý, và giới thiệu giải pháp cho vấn đề này, đứng từ góc nhìn của Intel, bộ vi xử lý đa nhân.

Vi xử lý đã tiệm cận giới hạn xung?

Xoay quanh những vi xử lý của Intel trong bài viết này, xin lấy một số ví dụ sau để chúng ta cùng rút ra được một vài con số.

Năm 2000, ngày 20 tháng 11, Intel giới thiệu bộ xử lý Pentium 4 1.5GHz, hai năm sau đó, vào ngày 14 tháng 11 năm 2002, bộ xử lý Pentium 4 3.06GHz được Intel công bố. Trong vòng hai năm, Intel đã tăng gấp đôi tốc độ xung của Pentium 4.

Sau đó hai năm rưỡi vào giữa năm 2005 (intel không có ngày công bố sản phẩm cụ thể), Pentium 4 chạy ở tốc độ xung 3.8GHz được tung ra thị trường, tốc độ xung tăng gần 30% trong vòng 2.5 năm. Điểm đáng chú ý nữa là thực chất Pentium 4 3.8GHz dự tính sẽ được tung ra thị trường vào quý ba năm 2004 và quý bốn sẽ là Pentium 4 4GHz, nhưng tới gần một năm sau dự tính Pentium 4 3.8GHz mới có mặt và Pentium 4 4GHz tới giờ vẫn chưa có mặt trên thị trường.

Chúng ta hãy xem biểu đồ riêng về mức độ tăng tốc độ xung của Pentium 4 từ cuối năm 2000 cho tới nay.

Có thể thấy tốc độ tăng xung đồng hồ cho CPU đã chậm lại một cách rõ rệt đối với riêng sản phẩm CPU Pentium4. Nhưng, tất nhiên, tôi đã nhấn mạnh rằng, tốc độ xung không phải là yếu tố quyết định hiệu năng của bộ xử lý, vì vậy, chúng ta sẽ nói về hiệu năng ở phần tiếp theo.

CPUSpecInt2000SpecFp2000
Pentium 4 3800E16661839
Pentium 4 306011671096
Pentium 4 1500560634

Trong vòng hai năm, hiệu năng đã tăng 108%, trong khi 2.5 năm kế tiếp đó, hiệu năng tăng lên chỉ còn 43%. Về phía năng lực xử lý dấu chấm động, sử dụng nhiều trong những ứng dụng multimedia như game, các chương trình dựng hình 3D… hiệu năng tăng lên 72% trong vòng hai năm đầu, trong 2.5 năm kế tiếp, hiệu năng tăng 67%.

Tuy vậy, theo website chính thức của SpecFp2000, chương trình này hơi cường điệu hóa sự quan trọng của tốc độ bus hệ thống, trong khi phần lớn các chương trình nặng về xử lý dấu chấm động lại không “cư xử” giống như vậy.

Bên cạnh đó, SpecInt2000 và SpecFp2000 là những chương trình benchmark lý thuyết, những chương trình thực tế như 3DS Max, Adobe Premiere hay Lightwave… còn phụ thuộc nhiều vào các yếu tố khác nữa, kết quả thực tế sẽ rơi vào khoảng từ 60% – 90% hiệu năng gia tăng nếu so sánh giữa Pentium 4 1.5GHz với 3.06GHz, trong khi giữa 3.06GHz với 3.8GHz chênh lệch chỉ vào khoảng chừng từ 20% – 45%.

Bên cạnh đó, để có thể đạt xung cao hơn, nhiều thủ thuật khác cần phải được áp dụng, điển hình nhất là tăng độ dài pipeline xử lý của CPU. Thủ thuật này có một vấn đề, khi pipeline càng dài thì thời gian uổng phí do rẽ nhánh lệnh sai sẽ nhiều hơn, dẫn tới kết quả là IPC (Instruction Per Clock – số lệnh xử lý được trong một xung đồng hồ) sẽ giảm xuống. Và với công thức đơn giản nhất để đo hiệu năng của CPU:

Hiệu năng = Tốc độ xung x IPC

… thì hiệu năng của CPU sẽ không tăng đều với xung đồng hồ, thậm chí là chậm hơn bộ xử lý có pipeline ngắn hơn trong một số trường hợp. Ví dụ: Pentium 4 Prescott (với pipeline 31 bước) sẽ chậm hơn Pentium 4 Northwood (với pipeline 20 bước), và Intel đã phải trang bị bộ đệm lớn hơn gấp đôi (1MB so với 512KB) cho Pentium 4 Prescott để bù cho thiếu khuyết này.

Chi tiết về cách làm việc của CPU và ý nghĩa của pipeline cũng như IPC… không nằm trong bài viết này, hy vọng chúng ta sẽ có dịp quay trở lại vấn đề này vào một dịp khác thích hợp hơn.

Rút lại, ta có thể thấy rằng, qua những ví dụ trên, với kiến trúc Netburst hiện tại của Pentium 4, việc tăng xung đồng hồ của bộ xử lý đã dần tiếp cận giới hạn, và việc gia tăng thêm hiệu năng đã trở nên khó khăn hơn nhiều với cách tiếp cận hiện nay.

Những chướng ngại vật khác cản trở việc tăng hiệu năng của CPU

Tất nhiên, CPU không phải là thành phần duy nhất ảnh hưởng tới hiệu năng toàn hệ thống, thành phần liên quan nhiều nhất tới hiệu năng xử lý của CPU là bộ nhớ. Loại trừ RamBUS đã chết yểu một thời gian ngắn sau khi đi cùng Pentium 4 Willamette một đoạn đường, bộ nhớ DDR được giới thiệu với tốc độ 200MHz và tới hiện tại, JEDEC vẫn chưa (và cũng có vẻ như không có ý định do hạn chế công nghệ và chi phí sản xuất) công nhận một chuẩn bộ nhớ nào cao hơn DDR 400MHz. Băng thông của bộ nhớ chỉ tăng (và dừng lại ở) 100% sau 5 năm, chắc chắn với băng thông hạn chế đó, năng lực xử lý của CPU cũng sẽ bị ảnh hưởng nhiều.

Nhưng đó không phải là chủ đề của bài viết này, thành thật xin lỗi, nhưng có lẽ chúng ta không nên đi lạc đề xa quá 🙂

Nói riêng về những chướng ngại vật cản trở việc tăng hiệu năng của riêng CPU, ta có thể nhắc tới những điểm sau:

  • Tổng công suất sử dụng
  • Sự trễ mạch

Tổng công suất sử dụng trong quá trình hoạt động

Theo công thức tính công suất chuyển mạch:

P ~ ½CV²Af

… ta có thể thấy công suất sử dụng của CPU tỉ lệ thuận với điện dung (C), hiệu điện thế hoạt động (V), mức độ hoạt động của CPU (A), tần số hoạt động của CPU (f).

Trong khi giá trị A phụ thuộc vào ứng dụng người dùng sử dụng và giá trị tối đa luôn là một hằng số. Thì f và C luôn tăng song song với việc các CPU tốc độ xung cao hơn và phức tạp hơn được chế tạo. Pentium 4 Northwood chỉ có 55 triệu transitor, trong khi Pentium 4 Prescott có tới 125 triệu transitor, số lượng transistor này tăng lên một cách đáng kể dẫn tới việc giảm hiệu điện thế hoạt động không còn có ý nghĩa nhiều trong việc giảm công suất sử dụng.

Tuy vậy, đây không phải là một vấn đề lớn nhất liên quan tới công suất sử dụng của CPU, bởi nó có thể được giải quyết không khó khăn lắm với một vài kỹ thuật. Ví dụ, CPU có thể ngắt một vài phần không cần thiết, hoặc giảm xung nhịp, hoặc giảm hiệu điện thế khi mức độ hoạt động không cao.

Vấn đề quan trọng nhất đối với công suất tiêu thụ của CPU hiện tại lại là “Công suất rò”

Công suất rò

Hãy xem biểu đồ công suất rò của vi mạch do chính Intel cung cấp.

Như các bạn có thể thấy, mặc dù độ phức tạp của CPU tăng lên rất nhanh chóng, thì công suất hữu dụng vẫn tăng rất chậm. Trong khi đó, phần công suất rò của mạch tăng lên một cách rất nhanh.

Để dễ dàng hiểu hiện tượng công suất rò trong mạch bán dẫn, ta hãy tưởng tượng có hai bể nước, đường ống kết nối hai bể nước đó có một van áp suất, van áp suất này chỉ cho nước chảy qua khi áp suất từ bể đầy nước đạt tới một con số nhất định. Nếu van này chắc chắn và dày dặn, tất nước sẽ khó tràn qua van nếu chưa đạt được áp suất cần thiết, nếu van này chế tạo mỏng và yếu, ngay cả khi áp suất chưa đủ, cũng sẽ có một lượng nước nào đó tràn qua, và van càng mỏng càng yếu thì lượng nước chảy qua sẽ càng nhiều.

Mạch bán dẫn cũng vậy, về lý thuyết, nếu điện thế chưa đạt đủ ngưỡng, transistor không thể mở, thế nhưng trong thực tế, công nghệ chế tạo càng trở nên nhỏ (hiện tại ở mức 90nm) thì hiện tượng điện rò giữa hai cầu transistor, trong khi transistor vẫn ở trạng thái đóng, gây nên hiện tượng công suất rò.

Một hiện tượng công suất rò nữa cũng hiện diện trong mạch bán dẫn hiện tại, đó là hiện tượng rò điện thông qua lớp cách điện, khi lớp cách điện càng trở nên mỏng hơn bởi công nghệ chế tạo nhỏ hơn, thì lượng điện bị rò xuyên qua lớp cách điện giữa các mạch càng nhiều hơn. Hiện tượng này, về nguyên nhân không khác gì hiện tượng nêu trên, chỉ khác về hướng.

Cùng với việc số lượng transistor tăng lên một cách nhanh chóng (theo định luật Moore, số lượng transistor trong mạch tích hợp sẽ tăng lên gấp đôi mỗi hai năm) và công nghệ chế tạo càng nhỏ (hiện tại CPU chế tạo với công nghệ 90nm) thì hiện tượng rò mạch càng rõ rệt, dẫn tới công suất rò càng lớn.

Kết quả là, bắt đầu từ điểm mốc 65nm cho công nghệ chế tạo mạch bán dẫn, công suất rò (hay còn gọi là công suất lãng phí) có thể sẽ còn cao hơn cả công suất hữu dụng của mạch. Cùng với nó, phần công suất lãng phí này lại không chạy đi đâu hết mà lại biến hết thành nhiệt năng, và thế là các nhà sản xuất lại đau đầu tìm cách giải quyết nguồn nhiệt này. Hơn nữa, nguồn nhiệt sản sinh ra thì tăng nhanh, nhưng bề mặt tỏa nhiệt lại thu nhỏ (do công nghệ chế tạo thu nhỏ lại) nên việc giải quyết nhiệt lượng này lại càng khó, một ví dụ đơn giản: bạn nghĩ rằng làm mát một bóng đèn 60w dễ hơn hay làm mát một đầu mỏ hàn 60w dễ hơn?

Sự trễ mạch

Khó mà tưởng tượng nhưng đường mạch bé tí xíu nối mớ transistor cũng bé tí hon trong CPU lại có thể là một trở ngại cho việc tăng hiệu năng.

Phần lớn những đường mạch trong CPU không gây vấn đề, chỉ một số ít trong số hàng trăm triệu đường mạch trong một CPU là cản trở của việc tăng tốc độ xung. Những đường mạch này, khốn nỗi, lại là những đường mạch quan trọng nhất.

Lấy ví dụ, nhóm đường mạch từ khối xử lý tới khối dữ liệu (lưu trong bộ nhớ cache), đặc điểm của nhóm đường mạch này nói riêng và các đường mạch gây vấn đề nói chung là tương đối dài (có thể tới vài mm).

Trong những bài vật lý điện cơ bản, ta đều biết, mỗi một vật liệu đều có một giá trị điện dung riêng tối thiểu, và do đó, một đoạn mạch của CPU tuy nhỏ nhưng cũng có một giá trị điện dung nào đó, và chính giá trị điện dung này gây ra độ trễ của dây dẫn. Điện dung càng lớn thì độ trễ càng lớn, do đó để giảm độ trễ này, người ta tìm cách giảm thể tích dây dẫn lại tối thiểu. Khổ một nỗi, trên đời này đã có điện dung lại còn có cả điện trở, tỉ lệ giữa bán kính dây dẫn và chiều dài dây dẫn càng nhỏ thì điện trở lại càng to, dẫn tới hiệu điện thế phải đủ lớn để có thể truyền tín hiệu điện một cách ổn định.

Kết quả là, độ trễ của những đường mạch này, có thể nói, không thay đổi và hiện cũng chưa có cách nào cải thiện. Đây chính là một trong những trở ngại lớn trong việc tăng tốc độ xung của CPU, bởi, nếu độ trễ không thể nhỏ kịp với tín hiệu truyền, tốc độ xung của CPU phải giữ ở một giá trị đủ nhỏ, để CPU đó có thể hoạt động.

Bộ xử lý đa nhân, bắt đầu cho một kỷ nguyên vi xử lý mới?

Tại thời điểm hiện tại, vấn đề công suất rò của mạch đang là vấn đề đau đầu nhất của các hãng sản xuất CPU. Chi phí sản xuất CPU thì tăng do độ phức tạp ngày càng lớn, bên cạnh đó chi phí phụ cho hệ thống làm mát và các giải pháp liên quan tới vấn đề tản nhiệt lại không còn là phụ nữa. Trong khi đó, người dùng thì không thấy ai có hứng thú bỏ thật nhiều tiền ra mua sản phẩm của họ cả.

Theo kinh nghiệm trước đây cho thấy, CPU cần tăng gấp đôi số transistor để đạt được hiệu năng tăng khoảng 40%, tất nhiên ngoại trừ trường hợp Prescott, tăng từ 55 triệu transistor lên tới 125 triệu transitor để đạt được 400MHz xung đồng hồ (Pentium 4 Northwood 3.4GHz so với Pentium 4 Prescott 3.8GHz), hiệu năng tăng thêm không tới 10%.

Trong khi đó, dẫn lời Shekhar Borkar, Giám đốc phòng thí nghiệm công nghệ vi xử lý của Intel: “Đa xử lý, một mặt nào đó, có tiềm năng mang lại sự gia tăng về hiệu năng một cách gần tới mức tuyến tính. Hai bộ xử lý nhỏ, thay vì một bộ xử lý lớn, có thể mang lại từ 70-80% hiệu năng tăng thêm so với khoảng 40% tăng thêm của một bộ xử lý ‘nguyên khối'”

Chú ý từ “monolithic” mà tôi tạm dịnh word-by-word là “nguyên khối” ở trên, ông sử dụng từ này với một ý ám chỉ rằng bộ xử lý đơn nhân sẽ khó có tương lai nữa, do hiệu năng tăng thêm nghèo nàn của nó, để đạt được 40% đó, độ phức tạp, chi phí sản xuất và chi phí giải quyết hậu quả (của hiện tượng công suất rò) sẽ trở nên “không thể đỡ được”

Tới bây giờ, tôi và các bạn có thể chắc chắn biết được lý do vì sao mà Intel “quên” không nhắc tới bộ vi xử lý 10GHz nữa 😀

Vậy, bộ xử lý đa nhân có những lợi điểm gì?

Về vấn đề tổng công suất sử dụng và nhiệt lượng sản sinh trong quá trình sử dụng. Hãy tưởng tượng, nếu ứng dụng bạn đang dùng không phải là một ứng dụng multithreaded (nghĩa là không được lợi về mặt hiệu năng từ nhân CPU thêm vào) thì hệ điều hành có thể tắt hẳn một nhân CPU đi để giảm công suất sử dụng, bên cạnh đó, khi nhân CPU hoạt động đạt tới một nhiệt độ nhất định, thì nó có thể lại được tắt đi để nhân kia làm việc tiếp. Kỹ thuật này sẽ làm giảm nhiệt độ toàn cục của cả CPU, dẫn tới công suất rò sẽ thấp đi (bởi nhiệt độ càng cao hiện tượng công suất rò càng rõ rệt). Và như vậy, mục đích chính của việc sử dụng CPU đa nhân sẽ là làm giảm tổng công suất sử dụng khi các ứng dụng được chạy không phải là ứng dụng multithreaded. Hơn nữa, tổng công suất sử dụng thấp cũng có nghĩa là nhiệt lượng sản sinh thấp hơn, việc giải nhiệt cũng sẽ đơn giản hơn.

Đây chính là lý do mà Intel nhìn thấy được tương lai của CPU đa nhân trong thị trường máy tính xách tay, bởi máy tính xách tay là nơi mà tất cả mọi thứ đều có thể được hy sinh cho thời gian sử dụng pin dài và nhiệt lượng sản sinh thấp.

Về vấn đề hiệu năng, tuy chắc chắn rằng hiệu năng của một CPU đa nhân sẽ không thể đạt được mức gia tăng lớn như một hệ thống đa CPU, mức gia tăng đó cũng rất đáng kể (như đã trích lời Shekhar Borkar ở trên, và sẽ được chứng minh ở bài tiếp theo của loạt bài này). Vì sao hệ thống CPU đa nhân không thể đạt hiệu năng như hệ thống đa CPU, tôi sẽ trình bày trong bài sau của loạt bài này.

Bên cạnh đó, chi phí cho một hệ thống CPU đa nhân thấp hơn nhiều so với chi phí cho một hệ thống đa CPU, thị trường cho những hệ thống CPU đa nhân sẽ lớn hơn nhiều so với những hệ thống đa CPU thường chỉ dành cho phần thị trường workstation và server.

Kết thúc bài viết này, hy vọng các bạn có thể nhận thấy rõ những vấn đề hiện tại đang gặp phải bởi những hãng chế tạo CPU trong việc gia tăng hiệu năng của CPU, và hướng tiếp cận sắp tới của họ chắc chắn sẽ là CPU đa nhân.

Trong bài viết sau, chúng ta sẽ cùng nói chuyện chi tiết hơn về CPU đa nhân, những ưu điểm và khuyết điểm của chúng. Và sau đó với một số bài review CPU đa nhân hiện có trên thị trường cùng với các công nghệ, nền tảng hệ thống kèm theo nó, các bạn sẽ có cái nhìn chi tiết hơn về xu hướng mới này trong ngành công nghiệp công nghệ máy tính.

(theo Vnoczone.com)

FPT Aptech trực thuộc Tổ chức Giáo dục FPT có hơn 25 năm kinh nghiệm đào tạo lập trình viên quốc tế tại Việt Nam, và luôn là sự lựa chọn ưu tiên của các sinh viên và nhà tuyển dụng.
0981578920
icons8-exercise-96