Kiến trúc PlayStation Vita (Phần 1)
(copetti.org)- PSVita là thiết bị nơi máy chơi game cầm tay truyền thống gặp làn sóng mobile SoC tăng trưởng nhanh, và Sony vừa dùng các mạch quen thuộc vừa cố giữ bản sắc sản phẩm khác với smartphone
- Dòng sản phẩm ban đầu được chia thành PSVita gốc, Slim thay màn OLED bằng LCD, và PlayStation TV thiên về dạng đặt cố định, và nhìn chung cùng một phân tích kiến trúc áp dụng cho cả ba biến thể
- Chip trung tâm Kermit dùng phương thức Toshiba Stacked Chip SoC, xếp chồng CPU, GPU, khoảng 640MB RAM, bộ tăng tốc và mạch tương thích PSP trong một gói để cải thiện băng thông và diện tích, nhưng thiết kế tản nhiệt trở nên khó hơn
- CPU chính là ARM Cortex-A9 MPCore lõi tứ tối đa 500MHz, gồm ARMv7-A, 2MB bộ nhớ đệm L2 dùng chung, biên dịch thiên về Thumb-2, NEON/VFPv3, TrustZone và thực thi ngoài thứ tự
- Các tác vụ đa phương tiện do bộ tăng tốc Venezia của Toshiba đảm nhiệm, còn tương thích ngược PSP/PS1 được xử lý bằng MIPS32 4k trong Kermit cùng cấu trúc CDRAM·Scratchpad·RPC được dành riêng
Thị trường của PSVita và phạm vi phân tích
- PSVita là sản phẩm nằm ở điểm giao giữa ngành công nghiệp trò chơi điện tử và mảng di động thay đổi nhanh chóng
- Sony phải cạnh tranh với các thiết bị giá rẻ cung cấp nhiều chức năng ngoài gọi điện
- Máy chơi game cầm tay mới của Sony tích hợp công nghệ hiện đại của thời điểm đó, và dù cấu trúc mạch có vẻ quen thuộc, vẫn có thể thấy ý đồ thiết kế nhằm không trở nên giống thị trường smartphone
- Việc phân tích console thế hệ 8 có độ phức tạp cao hơn, nên thay vì công bố toàn bộ cùng lúc, bài viết sẽ được triển khai theo từng phần
Ba mẫu PSVita
- Sony đã thay đổi chiến lược sản phẩm nhiều lần trong vòng đời PSVita và phát hành ba biến thể
- Original PSVita là mẫu đầu tiên của dòng, đôi khi được gọi là mẫu ‘Fat’
- Slim giữ nguyên cùng kiến trúc nhưng thay màn hình OLED bằng LCD để giảm chi phí, và không có biến thể hỗ trợ 3G
- Slim có chip eMMC lớn hơn, nhưng mức tăng chỉ dừng ở 52MB, dù vậy vẫn đủ để cung cấp thẻ nhớ trong 1GB
- PlayStation TV là dạng điều chỉnh bo mạch chủ của bản Fat cho môi trường không cầm tay, với cấu hình I/O khác được đưa ra ngoài
- Nhìn chung, cùng một mô tả kiến trúc áp dụng cho cả ba mẫu, còn thay đổi eMMC của Slim và PlayStation TV sẽ được giải thích riêng
Kermit: SoC trung tâm của PSVita
- Sau PlayStation đầu tiên, Sony vốn tích cực áp dụng công nghệ MIPS, nhưng khi ARM trở nên mạnh hơn trên thị trường di động và việc dùng MIPS giảm đi, hãng đã chọn ARM CPU cho PSVita
- Toshiba, đối tác sản xuất thân cận của Sony, đảm nhận vai trò bên sử dụng giấy phép ARM
- Chip chính Kermit mượn tên từ ‘The Muppets’ và là khối mạch lớn nhất chứa CPU chính của PSVita
- Kermit là một System-on-Chip, nhưng nhờ mô hình sản xuất Stacked Chip SoC(SCS) của Toshiba, nó kết hợp lượng lớn bộ nhớ và bộ xử lý trong cùng một gói
- SCS xếp chồng các mạch theo chiều dọc thay vì nối ra ngoài theo chiều ngang
- Hiệu quả trực tiếp là tăng băng thông và giảm diện tích
- Đổi lại, thiết kế tản nhiệt trở nên phức tạp hơn
- Các thành phần chính của Kermit gồm
- CPU chính ARM Cortex-A9 MPCore lõi tứ
- GPU chính PowerVR SGX543MP4+ của Imagination Technologies
- Nhiều bộ tăng tốc như DSP cỡ lớn, bộ điều khiển DMA, khối bảo mật
- Khoảng 640MB RAM được chia thành nhiều loại
- CPU MIPS và mạch Graphics Engine cho tương thích PlayStation Portable
ARM Cortex-A9 MPCore
- CPU chính của PSVita là ARM Cortex-A9 MPCore, một cụm gồm bốn lõi Cortex-A9
- Xung hoạt động tối đa là 500MHz, thấp hơn mức 1.4GHz của Samsung Galaxy S III, thiết bị cùng thời cũng dùng A9 lõi tứ
- Cortex-A9 là CPU kế nhiệm Cortex-A8, và PSVita xuất hiện chỉ cách Nintendo 3DS vài tháng
- Các tính năng nền tảng chung gồm
- Tập lệnh ARMv7-A
- 64KB bộ nhớ đệm L1
- Chia thành 32KB bộ nhớ đệm dữ liệu và 32KB bộ nhớ đệm lệnh
- Tính nhất quán bộ nhớ đệm dữ liệu giữa các lõi được xử lý bởi Snoop Control Unit
- Cấu trúc 2-issue superscalar
- Nếu không có xung đột, hai lệnh có thể được thực thi qua hai pipeline để tăng số lệnh mỗi xung nhịp
- Dự đoán nhánh động
- Ở giai đoạn nạp lệnh, hệ thống dùng hai buffer chuyên dụng để dự đoán có nhánh hay không và nhánh có được chọn hay không
- Khối này chỉ dự đoán lệnh nhánh, không gồm các tối ưu như thực thi có điều kiện hay lệnh
IT
- MMU có TLB
- TrustZone
- Ở mức phần cứng, các thành phần được chia thành nhóm secure và non-secure
- Ở mức phần mềm, nó chạy Trusted Execution Environment, một hệ điều hành phụ cách ly dùng để xử lý dữ liệu nhạy cảm
- Việc truyền dữ liệu được gắn thẻ cho biết đó là giao dịch secure hay insecure
- NEON Media Processing Engine
- Là bộ đồng xử lý thực hiện phép toán vector và dấu chấm động
- Những điểm được tăng cường trên Cortex-A9 gồm
- Hỗ trợ đa lõi
- Đây là điểm thể hiện rõ nhất trong lựa chọn gói lõi tứ của Sony
- Cũng là nền tảng giúp iPad 2 và iPhone 4s có thể xuất hiện với CPU lõi kép
- Thực thi ngoài thứ tự thông qua đổi tên thanh ghi
- Đây là thay đổi lớn giúp mở rộng song song mức lệnh của ARM
- Pipeline độ dài biến thiên từ 8 đến 11 giai đoạn tùy tác vụ
- Nếu việc thực thi tiếp nối sang bộ đồng xử lý đa phương tiện, số giai đoạn có thể còn tăng thêm
- Hỗ trợ đa lõi
- Sony bổ sung Primelink Level 2 Cache Controller của ARM và 2MB bộ nhớ đệm L2 dùng chung
- Primelink là một hệ con bộ nhớ đệm có thể cấu hình nhiều kiểu liên kết cache từ ánh xạ trực tiếp đến 16-way
- Sau này ARM đổi thương hiệu Primelink thành CoreLink
ARMv7, Thumb-2, NEON/VFPv3
- ARMv7 trên Cortex-A9 là siêu tập của ISA ARMv6, với các phần bổ sung chính là VFPv3, NEON, Security Extension và multiprocessing
- ISA Thumb được sửa đổi lớn thành Thumb-2
- Thumb-2 bổ sung lệnh 32-bit để lấp các khoảng trống của Thumb 16-bit trước đây
- So với ARM ISA, nó có mật độ mã cao hơn, thiếu thực thi có điều kiện nhưng bù một phần bằng lệnh
ITchuyên dụng
- Cortex-A9 trong Kermit cũng triển khai ThumbEE và Jazelle, nhưng khó có thể nói ứng dụng thực tế tận dụng chúng
- Ngay cả Dalvik, trình thông dịch Java của Android, cũng không dùng Jazelle/Thumb-2EE
- Để giảm sự rối rắm của ISA, ARM tạo ra Unified Assembler Language(UAL)
- UAL hướng tới một codebase duy nhất có thể nhắm cả ARM và Thumb-2
- Trên thực tế, đây là hợp của opcode ARM và Thumb-2, còn assembler sẽ bỏ qua opcode theo CPU đích
- Với các ngôn ngữ như C, Objective-C, C++, compiler chủ yếu dùng Thumb-2 làm đầu ra assembly mặc định
- Lý do là mật độ mã hiệu quả và mức phạt hiệu năng hiếm gặp
- Ứng dụng smartphone và ứng dụng PSVita chủ yếu được biên dịch sang Thumb-2 chứ không phải ARM
MPE, VFPv3, NEON cho tính toán media
- Trên Cortex-A9, thành phần đặc biệt quan trọng với PSVita là Media Processing Engine(MPE)
- MPE thực thi hai tập lệnh có liên quan với nhau
- Vector Floating-Point v3(VFPv3)
- Là hậu duệ của VFPv2 cho chức năng dấu chấm động
- Tuân theo IEEE-754
- Cung cấp các lệnh như
VCVT,VMOV - Biến thể chính xác trên Cortex-A9 là VFPv3-D32, bao gồm 32 thanh ghi 64-bit
- ARMv7 đã loại bỏ việc dùng lệnh vector trong phần này và Cortex-A9 không có các lệnh vector đó
- NEONv1
- Là tập lệnh vector thực sự, còn được gọi là ‘ARMv7 Advanced SIMD’
- Cung cấp 16 thanh ghi 128-bit, có thể chia thành 32 thanh ghi ảo 64-bit hoặc 32-bit
- Số nguyên có thể được xử lý tối đa đến 64-bit, còn kiểu dấu chấm động không vượt quá 32-bit
- Vector Floating-Point v3(VFPv3)
- NEON và VFPv3 dùng chung cùng một register file nhưng được xem là các ISA riêng biệt
- Lý do tách hai ISA là vì cả hai đều không hoàn chỉnh về mặt chức năng
- VFPv3 không hỗ trợ fixed-point
- NEON không tuân theo chuẩn IEEE 754
- Có thể hiểu NEON xuất hiện nhanh để đối phó với Wireless MMX, phần mở rộng SIMD độc quyền của Intel XScale
- Các PDA cao cấp như Dell Axim X51v dùng CPU Intel XScale PXA270 tương thích ARMv5 ISA, đồng thời có phần mở rộng SIMD độc quyền chỉ xuất hiện trên dòng CPU Intel đó
- Thiết bị này cũng trang bị GPU PowerVR MBX, có liên hệ với chip đồ họa của PSVita
Cấu trúc bus
- Đặc tả AMBA của ARM cũng được dùng để kết nối các thành phần trên Cortex-A9
- Giao thức AXI của bản sửa đổi thứ ba của AMBA được chọn cho giao diện lõi bên trong cụm MPCore
- Cùng lựa chọn AXI này cũng có thể thấy trên ARM11 và Nintendo 3DS
- PSVita cũng dùng Open Core Protocol(OCP) cho mọi giao tiếp bên ngoài MPCore
- Đây là cùng họ giao thức được Nintendo 3DS dùng khi giao tiếp với GPU PICA
Hướng đi của ARM sau Cortex-A
- Sau Cortex-A9, dòng Cortex-A được chia thành bốn nhóm bổ sung từ hiệu năng cao đến ưu tiên tiết kiệm năng lượng, khiến cấu trúc kế thừa phức tạp hơn
- Số hiệu mẫu của từng CPU trở nên khó theo dõi hơn, nhưng điều đó không phải vấn đề lớn vì các CPU này không phải sản phẩm bán riêng cho người dùng cuối thông thường
- Cột mốc lớn tiếp theo của ARM là ARMv8 xuất hiện vào năm 2011, sẽ được đề cập thêm trong phân tích Nintendo Switch
Venezia: bộ tăng tốc đa phương tiện của Sony
- Sony đặt một bộ tăng tốc lớn bên cạnh cụm ARM để hỗ trợ các tác vụ liên quan đến game
- Bộ tăng tốc này, giống như nhóm Media Engine trên PSP trước đó, là một hộp đen độc quyền hoàn toàn, và lập trình viên truy cập nó qua SDK chính thức thay vì điều khiển trực tiếp
- Tên của bộ tăng tốc là Venezia
- Đây là một gói CPU riêng do Toshiba, đối tác thân cận của Sony, thiết kế
- Được tạo ra để xử lý hình ảnh và âm thanh
- Chức năng gần với một Digital Signal Processor(DSP)
- Cũng được bán như chip tổng hợp cho thiết bị đa phương tiện như đầu DVD
- Venezia mang tính kế thừa Media Engine của PSP
Cấu trúc bên trong của Venezia
- Venezia cũng là cấu trúc cụm như MPCore, gồm 8 lõi Media Processing Engine(MPE)
- Xung hoạt động là 266.7MHz
- Tên MPE của Toshiba trùng với tên bộ tăng tốc vector của ARM, nhưng là silicon khác nhau
- Mỗi MPE gồm các thành phần sau
- CPU Media-embedded Processor(MeP) độc quyền
- Phiên bản sửa đổi thứ năm là MeP-c5
- Kiến trúc nền RISC 32-bit
- 32KB bộ nhớ đệm L1
- Tách thành 16KB lệnh và 16KB dữ liệu
- 64KB bộ nhớ dùng chung
- Đây là không gian để CPU MeP chạy chương trình chính
- Bộ điều khiển DMA cho truyền bộ nhớ nội bộ và bên ngoài
- Bộ đồng xử lý xử lý ảnh IVC2
- Thực thi lệnh SIMD 64-bit
- Có thể xử lý nhiều nhóm dữ liệu, từ 8 số nguyên 8-bit đến 2 số nguyên 32-bit
- Cung cấp 2 thanh ghi tích lũy 256-bit, và có thể kết hợp với chức năng khác để tính đồng thời hai phép toán
- CPU Media-embedded Processor(MeP) độc quyền
- Cụm này cũng có 256KB bộ nhớ đệm L2
- Đặc điểm cốt lõi là tập lệnh dựa trên Very Long Instruction Word(VLIW)
- Nhiều lệnh có thể được mã hóa đồng thời trên một dòng
- Venezia có thể đặt tổng cộng 3 lệnh trên một dòng: 2 cho bộ đồng xử lý ảnh và 1 cho CPU
- Để đóng gói lệnh hiệu quả cần một compiler thật sự xuất sắc
- VLIW từng được chú ý trong thập niên 1990 qua các triển khai như Broadcom Firepath, Transmeta Crusoe, Intel Itanium, nhưng trên CPU dòng chính nó không phổ biến rộng vì kết quả benchmark đáng thất vọng
- Venezia chỉ được truy cập qua API trừu tượng mang tên Codec Engine
- Nó triển khai các tác vụ mã hóa và giải mã hình ảnh/âm thanh
- Ví dụ, lệnh giải mã AVC sẽ giải nén dữ liệu video được mã hóa bằng Advanced Video Coding và xuất ra luồng không nén để GPU có thể hiểu được
Cấu hình bộ nhớ của PSVita
- Trên đỉnh stack của Kermit là 512MB LPDDR2 SDRAM, được dùng làm không gian làm việc chính
- SDRAM là viết tắt của Synchronous Dynamic RAM
- DRAM có chi phí sản xuất thấp hơn SRAM nhưng độ trễ cao hơn
- Vì vậy cache CPU được làm bằng SRAM, còn bộ nhớ ngoài đa dụng được làm bằng DRAM
- SDRAM xử lý truyền dữ liệu đồng bộ với xung CPU để cải thiện thông lượng
- LPDDR2 là viết tắt của Low Power Double Data Rate 2
- DDR truyền dữ liệu bằng cách mã hóa gấp đôi lượng thông tin trong mỗi chu kỳ
- LP chỉ biến thể tiết kiệm điện, chủ yếu được điện thoại và laptop sử dụng
- Đặc tả LPDDR2 được công bố năm 2009 và hoạt động ở 1.2V, thấp hơn 1.35V của DDR3
- Ngoài ra còn có 128MB Custom DRAM(CDRAM), chủ yếu kết nối với GPU
- CDRAM là tên gọi nội bộ, chỉ SDR SDRAM truyền thống
- Khác với DDR, đây là bộ nhớ Single Data Rate
- Vì là không gian chuyên dụng gần GPU nên phù hợp cho tác vụ đồ họa cường độ cao
- Khối này dường như được nối bằng hai bus 512-bit
- SoC cũng chứa khoảng 2.18MB SRAM được chia thành nhiều khối
- 2MB Camera SRAM
- 32KB SPAD32K
- 128KB SPAD128K
- 4KB SceCompatSharedSram
- 16KB Scratchpad
- Các khối SRAM này được dành riêng cho hệ điều hành
- 16KB Scratchpad trùng với dung lượng SRAM từng có trên PSP
MIPS32 4k và tương thích ngược
- Trong Kermit còn có thêm CPU MIPS32 4k cũ hơn
- Đây là cùng CPU từng được trang bị trên PlayStation Portable
- Mục đích của CPU này là tương thích ngược với game PlayStation Portable và PlayStation 1
- CPU MIPS về mặt chính thức chỉ dùng cho mục đích này, không đóng vai trò đồng xử lý
- Kermit không tích hợp Media Engine của PSP
- Vì Media Engine là hộp đen nên phần mềm không cần quan tâm đến cách nó được triển khai bên trong
- Chức năng của CPU dùng chung đó được Venezia sao chép thay thế
- Về phần I/O còn lại, MIPS không được nối vật lý với phần cứng còn lại của hệ thống; chỉ Cortex-A9 được kết nối
- Phần mềm giả lập PSP chạy trên CPU MIPS sẽ yêu cầu dịch vụ từ CPU ARM theo mô hình RPC(Remote Procedure Call)
- Dịch vụ tương thích ngược này cũng được dành riêng 64MB CDRAM
- 16KB Scratchpad đã nhắc ở trên thực ra nằm trong CPU MIPS và được cấp cho trình giả lập PSP
- Đây là thành phần nhằm khớp với cấu hình bộ nhớ mà game PSP gốc mong đợi
Phạm vi tiếp theo
- Phần sau sẽ đề cập quá trình VideoLogic phát triển thành GPU chủ lực của thị trường di động và dẫn tới PowerVR MBX GPU
1 bình luận
Ý kiến trên Hacker News
Vốn dĩ tôi rất thích PSP và cộng đồng homebrew/jailbreak sinh ra từ đó. Gần đây tôi kiếm được một chiếc PS Vita để chơi game native và homebrew, và thật ngạc nhiên là hệ sinh thái homebrew của nó vẫn còn khá sôi động
Có vẻ cũng có một mức độ tiềm năng nào đó cho việc port game Android. Giá mà Sony đã không để PS Vita chết yểu; vào thời điểm đó, đây thực sự có cảm giác như một thiết bị có tiềm năng rất lớn
Đến giờ tôi vẫn dùng Vita vì Steam Deck không bỏ túi được. Tôi đồng ý rằng tiềm năng của nó đã bị lãng phí. Thật khiến người ta tưởng tượng nếu Shadow of the Colossus hay Demon's Souls có mặt trên Vita thì sẽ thế nào
Vì vậy có vẻ họ đã tự tin rằng sự thất bại đó không phải do những sai lầm hoàn toàn có thể tránh được của mình, mà là kết quả tất yếu của thay đổi thị trường
Nghĩ lại thì có lẽ đó là thứ khiến tôi bắt đầu quan tâm đến điện tử
Có vài tựa ổn, nhưng không có gì thật sự làm tôi kinh ngạc; có lẽ game tôi chơi lâu nhất là Risk of Rain
Giờ thì nó đã hoàn toàn được công nhận là một thiết bị giả lập cầm tay đủ sức sánh với nhiều SBC cỡ nhỏ đang được sản xuất hiện nay
https://docs.libretro.com/guides/install-psv/
Vài năm trước tôi đã cùng làm việc về phần Media Embedded Processor(MeP) của Toshiba được nhắc tới trong bài này. Ở phía Red Hat, chúng tôi đã làm toolchain để hỗ trợ kiến trúc có thể cấu hình của bộ xử lý này, thứ lúc đó còn khá mới lạ
MeP không thống trị thế giới, nhưng tôi rất vui khi biết nó đã được dùng trong PS Vita
Bài này chỉ là một phần trong bộ sưu tập bài viết đã được duy trì từ lâu
https://www.copetti.org/writings/consoles/
Tôi vẫn không hiểu nổi vì sao Sony lại từ bỏ thị trường máy chơi game cầm tay, dù họ từng ở vị thế rất đặc biệt khi còn có cả dòng điện thoại riêng
Xperia Play ra đời quá sớm, nhưng trong bối cảnh hiện nay khi mọi người đã quen với việc chi nhiều tiền cho điện thoại hoặc Steam Deck, có cảm giác Sony hoàn toàn có thể gắn một cửa hàng game Sony vào thiết bị Android và tạo ra một hậu duệ xứng đáng cho Vita lẫn Xperia Play
Các tổ chức của họ quá silo với nhau. Là người từng khá thích các sản phẩm đó, nhìn lại với những gì biết bây giờ thì thật buồn cười khi mọi chuyện lại diễn biến tệ đến vậy
Nó đi trước thời đại ở nhiều mặt, nhưng có lẽ thị trường game thời đó chưa phù hợp hay sẵn sàng với thiết bị cầm tay như bây giờ
Thật sự rất hay và cảm giác như một sự trùng hợp mang tính định mệnh
Tuần trước tôi vừa lôi chiếc Vita ra khỏi ngăn kéo và đang chơi một số bản port cầm tay của game PS3 mà trước đây tôi chưa chơi được vì không thể kết nối PS3. Đó là Ratchet & Clank, Sly Cooper, God of War 1·2, cùng vài game indie
Tôi ngạc nhiên khi cửa hàng vẫn còn hoạt động, và đã mua các game Armored Core trên PS1. Tôi thực sự yêu thiết bị này. Nó đã bị đối xử bất công cả trên thị trường lẫn từ phía Sony
Tôi cũng đang bị cám dỗ jailbreak nó để thử làm homebrew
Tôi đã dùng qua hai chiếc PS Vita và còn thay cả nút bấm các kiểu vài lần
Tôi thích sự kết hợp giữa game casual và game “nghiêm túc” trên Vita, từ những game nhẹ nhàng như PixelJunk Monsters đến Killzone Mercenary, một game bắn súng góc nhìn thứ nhất ở tầm console trên máy cầm tay. Cũng có rất nhiều nội dung Nhật như Akiba's Trip: Undead and Undressed, Danganronpa, Fate/Extella
Tôi đã bán hết đồ Vita khi nó bị cắt khỏi PS Network và các game Nhật tôi thích bắt đầu ra trên Steam, nhưng thành thật mà nói tôi vẫn nhớ PixelJunk Shooter
Gần đây tôi còn tải lại các món đã mua trước đó. Dù vậy đúng là nên sao lưu hết trước khi nó biến mất hoàn toàn
Tôi không biết Vita có chứa phần cứng PSP bên trong. Tôi cứ nghĩ khả năng tương thích ngược là dựa trên phần mềm, dù Sony đúng là có lịch sử lâu dài về việc đưa phần cứng tương thích ngược vào console khi xuất xưởng
Tuy vậy, vào thời điểm đó cũng đã có PS2 Slim và trình giả lập PS1 bằng phần mềm cho PS3 đời sau
https://israpps.github.io/PPC-Monitor/docs/Architecture%20Ov...
Loại sách này thuộc nhóm “tôi chưa từng yêu cầu cũng không hề mong đợi, nhưng giờ nó đã tồn tại thì tôi sẽ đọc từ lúc mặt trời mọc đến lúc mặt trời lặn”
Tác giả cũng đã viết nhiều cuốn khác về bộ xử lý và kiến trúc nhúng, và thành thật mà nói đây là công việc thực sự cần thiết
Thế giới embedded nghiêng về phía phân rã, mổ xẻ, giải thích, suy luận nhiều hơn hẳn thế giới phần mềm. Tôi không rõ vì sao, nhưng những người trong mảng này thậm chí còn dò và tái dựng cả sơ đồ mạch, gần như đào bới mọi thứ. Cộng đồng modding Nintendo gần đây là ví dụ cực đoan cho điều đó
Các nhà dịch ngược phần mềm thì cứ bám lấy giấy phép IDA và plugin như bám vào mốt đã hết thời. Chúng ta cần nhiều người như Copetti hơn
Tôi thật sự thích cả loạt bài này lẫn Vita
Điều tôi thắc mắc bấy lâu là liệu Vita có chứa cả CPU và GPU của PSP để phục vụ tương thích ngược, hay chỉ có CPU còn GPU thì được ánh xạ sang phía Vita
Bài này nói theo hướng đầu tiên, nhưng hy vọng ở phần sau sẽ có thêm bằng chứng để làm rõ
Vita đã đi trước thời đại