Lịch sử phát triển

Một phần của tài liệu xây dựng engine giải mã video h.264 trên hệ thống nhúng (Trang 25)

TriMedia đầu tiên được giới thiệu vào năm 1987 dưới cái tên LIFE-1 VLIW, bởi Gerrit Slavenburg và Junien Labrouse. Trong nhiều năm sau đó, LIFE được phát triển dưới sự bảo hộ của Philips và sự dẫn dắt của Gerrit Slavenburg. Kết quả cho ra

26 sản phẩm TriMedia đầu tiên vào năm 1996: bộ xử lý TM1000 PCI Media (còn được biết với tên gọi TM-1). Năm 1998, TM1100 và TM1300 (sau này đổi tên thành PNX1300) ra đời.

Năm 2000, Philips hợp tác phát triển TriMedia với TriMedia Technologies Inc. (TTI). Nhưng TTI đã thất bại trong việc tạo ra kiến trúc CPU 64-bit cho TriMedia. Năm 2003, Philips mua lại TTI.

Năm 2002, dòng CPU TM3260 được giới thiệu thông qua hệ thống trên chip xử lý media PNX1500. Dòng CPU này là sản phẩm đầu tiên trong họ sản phẩm có tích hợp hệ thống xử lý Audio/Video trên chip. TM3260 cũng được sử dụng trong các sản phẩm khác của NXP như PNX8550. Năm 2004, lõi CPU siêu phân luồng TM5250 được công bố và giành giải thưởng Best Media Processor do Microprocessor Report trao tặng. Lõi CPU này được sử dụng trong bộ xử lý media PNX1700.

Năm 2005, TM3270 được công bố, với tính năng xử lý video chuẩn H.264 tốn năng lượng ở mức thấp. Lõi CPU này được sử dụng lần đầu tiên trong chip PNX4103.

Năm 2006, Philips Semiconductors được đổi tên thành NXP. Công ty này tiếp tục phát triển TriMedia dưới sự dẫn dắt của Jan-Wilem van de Waerdt.

Năm 2009, chip PNX1005 ra đời, sử dụng lõi CPU TM3282. CPU này là TriMedia đầu tiên có 8 issue slot. Nó được bổ sung thêm nhiều chức năng giúp tối ưu việc xử lý video H.264, co-processor cho việc mã hóa và giải mã entropy,… Nó cũng là TriMedia đầu tiên có block truy vết theo thời gian thực.

2.4 Các lõi CPU đã đƣợc công bố

Lõi Năm công bố Tính năng Kích thƣớc Cache (lƣu Chỉ thị/Dữ liệu) (KB) Tốc độ (trong trƣờng hợp xấu nhất) TM1000 1997 32/16 100 MHz

27 TM1100 1998 32/16 133 MHz TM1300 1999 64/16 166 MHz TM3260 2002 Mã nhị phân tương thích với TM1300 64/16 250 MHz TM5250 2004 Cache dữ liệu L2 128 KB, siêu phân luồng tốc độ cao 32/16 450 MHz TM2270 2006 32/16 290 MHz TM3270/1 2006 Sử dụng ít năng lượng 64/128 350 MHz

TM3282 2009 8-issue slot, truy vết theo thời gian thực

64/128 400 MHz

2.5 Hệ thống trên chip (System on chip)

Chip dành cho ứng dụng multimedia không những cần phải rẻ, mà còn phải có tốc độ xử lý và truy xuất dữ liệu nhanh. Kiến trúc “System on Chip” của TriMedia tích hợp tất cả thao tác tính toán, và các thiết bị ngoại vi multimedia lên một chip đơn sao cho chi phí của cả hệ thống là rẻ nhất có thể.

28

Hình 2-2 :Kiến trúc hệ thống trên chip của TriMedia

Kiến trúc hệ thống trên chip của TriMedia có 3 thành phần chính: 1. Lõi CPU TriMedia – được tối ưu cho việc xử lý media

2. Co-processor – được thiết kế giúp tăng tốc quá trình xử lý video

3. Thiết bị ngoại vi dành cho việc nhập xuất (I/O peripherals) – thiết bị I/O hiệu suất cao được tích hợp trên chip.

Kiến trúc hệ thống trên chip cũng được thiết kế tương thích với kiến trúc phần mềm của TriMedia (TriMedia Software Architecture) – phương pháp tiếp cận theo hướng đối tượng hỗ trợ khả năng thiết kế hệ thống và phần mềm ở mức chức năng.

Co-processor và thiết bị ngoại vi thông minh là trung tâm trong kiến trúc TriMedia. Cả hai đều đáp ứng tốt yêu cầu của việc phát triển các sản phẩm multinmedia.

2.5.1 Thiết bị ngoại vi thông minh

Như đã nói ở trên, thiết bị ngoại vi thông minh là phần trung tâm trong kiến trúc TriMedia, giúp tăng khả năng xử lý của lõi CPU. Cụ thể là các thiết bị ngoại vi thông minh bao gồm khả năng lọc và canh tỷ lệ hình ảnh video theo thời gian thực, hỗ

29 trợ tinh chỉnh màu sắc và ánh sáng cho video. Sự “thông minh” của các thiết bị ngoại vi cho phép đạt tỷ lệ xử lý video cao hơn, bằng cách giảm tải CPU, giúp CPU có thêm thời gian rảnh để xử lý các tiến trình động.

Hình 2-3 :Các thao tác xử lý video theo thời gian thực

Cấu hình đặc biệt của các thiết bị ngoại vi và co-processor dựa trên quá trình triển khai kiến trúc hệ thống trên chip. Ví dụ, một công ty được cấp quyền sử dụng kiến trúc TriMedia có thể lựa chọn triển khai một tập các thiết bị ngoại vi và co- processor phù hợp với thị trường mục tiêu của riêng họ. Một ví dụ tiêu biểu cho thiết kế kiến trúc hệ thống trên chip đặc biệt như vậy là dòng chip Philips PNX8500 – sản phẩm có bộ mã hóa MPEG-2 cho phần cứng và một lõi co-processor MIPS (Microprocessor without Interlocked Pipeline Stages) được tích hợp trên một chip đơn.

2.5.2 TM-1300 Input/Output

Các thiết bị sử dụng thiết kế hệ thống trên chip TriMedia PNX1300 và CS1300 có 3 bộ xử lý độc lập5 tập thiết bị ngoại vi dùng cho việc truy xuất. Một trong các bộ xử lý đó là lõi CPU TriMedia, 2 bộ xử lý còn lại là Co-processor cho xử lý hình ảnh và bộ giải mã độ dài tùy biến (Variable Length Decoder). Các thiết bị ngoại vi dùng cho việc truy xuất hỗ trợ giao tiếp với audio, video, serial, PCI và I2C.

30

Hình 2-4 :Các thiết bị nhập xuất của PNX1300

Co-processor xử lý hình ảnh cài đặt các thao tác canh tỷ lệ và lọc ảnh, tinh chỉnh màu sắc, ánh sáng, chỉnh sửa định dạng ảnh. Bộ giải mã độ dài tùy biến được sử dụng cho việc giải mã Huffman (phần quan trọng của chuẩn MPEG).

Các thiết bị ngoại vi dùng cho việc nhập xuất video xử lý dữ liệu video số chuẩn CCIR 656/601. Chúng cũng có thể được dùng cho dữ liệu thô 8 hoặc 10 bit, với tốc độ xử lý 80 Mbyte/s. Các thiết bị ngoại vi dùng cho việc xử lý video cũng hỗ trợ canh tỷ lệ, lọc ảnh video, xử lý chồng ảnh video với hiệu ứng alpha.

Việc nhập dữ liệu audio được thực hiện thông qua một serial interface động, cho phép so khớp thông tin audio số ở dạng ADC hay DAC – các định dạng số có thể lập trình điều khiển độ dài word và vị trí dữ liệu trong word. Việc xuất dữ liệu audio có thể được thực hiện thông qua 8 kênh truyền dẫn – dùng để xử lý âm thanh đa kênh truyền, như trong chuẩn Dolby Digital AC-3, chuẩn bao gồm đến 6 loa phát thanh.

PCI interface cho phép truyền dẫn dữ liệu video, ví dụ truyền dẫn trực tiếp đến card hiển thị đồ họa. Nó cũng đóng vai trò là một hệ thống trung chuyển trong việc tích hợp TriMedia vào các hệ thống (như set-top box) dựa trên PCI bus.

31 Một serial interface đồng bộ được thiết kế để kết nối các thiết bị viễn thông như modem V.34. Nó cũng được sử dụng như một interface cho các chuẩn như ISDN. Interface I2C là một dạng serial bus đơn giản để điều khiển dữ liệu: trên board TriMedia IREF. Ví dụ nó được dùng để điều khiển các bộ nén-giải nén video trong việc lựa chọn giữa định dạng PAL và NTSC. I2C được sử dụng trong rất nhiều chip, như các bộ điều khiển từ xa (remote control).

2.5.3 TM-1500 I/O

Các thiết bị sử dụng thiết kế hệ thống trên chip TriMedia PNX1500 và CS1500 có 5 bộ xử lý độc lập, và 5 tập thiết bị ngoại vi dùng cho việc nhập xuất. Một trong các bộ xử lý đó là lõi CPU TriMedia, 4 bộ xử lý còn lại là Memory Based Scaler, một engine vẽ hình 2D, một bộ giải mã DVD-CSS và một bộ giải mã độ dài tùy biến. Các thiết bị ngoại vi dùng cho việc nhập xuất hỗ trợ giao tiếp với audio, video, Ethernet 10/100 LAN, serial, PCI và I2C.

Hình 2-5: Các thiết bị nhập xuất của PNX1500

Memory Based Scaler cài đặt các thao tác canh tỷ lệ và lọc ảnh, tinh chỉnh ánh sáng, màu sắc cho video, và thay đổi định dạng dữ liệu ảnh. Bộ giải nén chiều dài tùy

32 biến được thiết kế cho việc giải mã Huffman (phần quan trọng trong chuẩn MPEG). Bộ giải nén DVD-CSS dùng cho việc giải mã các mô hình DVD copy.

Các thiết bị nhập xuất video xử lý các video số chuẩn CCIR 656/601. Chúng cũng có thể được dùng cho dữ liệu thô 8 đến 10 bit với tốc độ xử lý 80 Mbyte/s. Các thiết bị ngoại vi dành cho xử lý video cũng hỗ trợ tính năng canh tỷ lệ, lọc ảnh video, chồng ảnh video bằng hiệu ứng alpha. Tính năng xuất video gồm nhiều phần cải tiến như: lọc inter-frame, thay đổi frame rate, quét xen kẽ và các phần hỗ trợ giúp tăng chất lượng ảnh hiển thị.

Việc nhập audio được thực hiện thông qua một serial interface động cho phép so khớp thông tin audio số ở dạng ADC hay DAC – các định dạng số có thể lập trình điều khiển độ dài word và vị trí dữ liệu trong word. Việc nhập xuất dữ liệu audio có thể được thực hiện thông qua 8 kênh truyền dẫn bằng các interface SPDIF – dùng để xử lý âm thanh đa kênh truyền, như trong chuẩn Dolby Digital AC-3, chuẩn bao gồm đến 6 loa phát thanh.

Interface 10/100 LAN hỗ trợ việc nối mạng trực tiếp, giúp cho hệ thống trên chip TM-1500 thật sự “kết nối” với các bộ xử lý media – nó nhận dạng được không chỉ quá trình xử lý multimedia mà còn tích hợp với các mạng tốc độ cao để chia sẻ dữ liệu.

PCI interface cho phép truyền dẫn dữ liệu video, ví dụ truyền dẫn trực tiếp đến card hiển thị đồ họa. Nó cũng đóng vai trò là một hệ thống trung chuyển trong việc tích hợp TriMedia vào các hệ thống (như set-top box) dựa trên PCI bus.

Một serial interface đồng bộ được thiết kế để kết nối các thiết bị viễn thông như modem V.34. Nó cũng được sử dụng như một interface cho các chuẩn như ISDN. Interface I2C là một dạng serial bus đơn giản để điều khiển dữ liệu: trên board TriMedia IREF, ví dụ, nó được dùng cho việc điều khiển các bộ nén-giải nén video để lựa chọn giữa định dạng PAL và NTSC. I2C được sử dụng trong rất nhiều chip, như các bộ điều khiển từ xa (remote control).

33

2.5.4 Lõi CPU

Lõi CPU của TriMedia được thiết kế tối ưu cho các ứng dụng multimedia. Thiết kế của nó được kiểm tra bằng benchmark. Việc thiết kế được thực hiện nhằm vào mục tiêu “thực thi các ứng dụng trên các chip rẻ tiền”.

Lõi CPU của TriMedia sử dụng kiến trúc Very Long Instruction Word (VLIW). Nó bao gồm 31 đơn vị xử lý chức năng, mỗi lần có thể sử dụng 5 đơn vị, điều này giúp đạt hiệu suất tính toán rất cao. Một số thao tác cài đặt nhiều thao tác khác và một số lại sử dụng nhiều dữ liệu (Single Instruction Multiple Data hay SIMD): những thao tác “xử lý song song bên trong” này giúp tăng tốc độ xử lý của lõi.

Hình 2-6: Lõi CPU TriMedia

Lõi CPU được hỗ trợ bởi các cache lưu trữ dữ liệu và chỉ thị lệnh, giúp CPU hoạt động với hiệu suất cao nhất.

Điều rất đáng ghi nhận là kiến trúc VLIW, rất hợp lý về mặt chi phí, khả năng xử lý song song và tốc độ cao. Một chip superscalar (giống như chip Intel Pentium)

34 có nhiều đơn vị chức năng nhưng việc lập lịch (quy định chức năng cần xử lý trong quá trình xử lý song song) được thực hiện trong lúc thực thi, bằng cách dùng silicon lập lịch trên bộ xử lý. Việc lập lịch logic tốn chi phí và cần phải thực hiện trên mỗi chip. Trong khi với kiến trúc VLIW, các chỉ thị lập lịch được thực hiện lúc biên dịch, và nó cố định trong quá trình thực thi. Nghĩa là việc lập lịch logic có thể được bỏ qua, do đó chip có giá thành rẻ hơn so với các thiết bị superscalar.

2.5.5 Bộ biên dịch

Lõi CPU của TriMedia được thiết kế để có thể lập trình trực tiếp bằng ngôn ngữ C hay C++. Để tận dụng được ưu thế của kiến trúc xử lý song song, bộ biên dịch là phần không thể thiếu của TriMedia. Trình biên dịch sẽ tối ưu các chỉ thị lệnh lập lịch để phát huy hết hiệu quả của các đơn vị xử lý chức năng.

Hình 2-7: Bộ biên dịch của TriMedia

Bộ biên dịch của TriMedia sử dụng được cho cả mã nguồn C và C++. Trong kiến trúc phần mềm của TriMedia, các thành phần phần mềm và thiết bị ngoại vi đã được lập trình theo hướng đối tượng để phát huy ưu điểm về tính hiệu quả và khả năng tái sử dụng mã nguồn.

35 Để tối ưu hóa các điều kiện khi thực thi chương trình, một chương trình được chạy trên bộ giả lập (simulator) hay bộ xử lý thật sẽ tạo ra các thông tin phản hồi cho bộ biên dịch, giúp định hướng bộ biên dịch trong các bước tối ưu tiếp theo.

2.6 Kiến trúc pSOS

2.6.1 Tổng quan

Theo một số công ty, pSOS là từ viết tắt của plug-in Silicon Operating System, trong khi một số khác lại cho rằng đây không phải từ viết tắt mà là một tên

gọi. Tác giả của pSOS không tiết lộ ý nghĩa thật sự của từ này.

Hệ điều hành thời gian thực (Real Time Operating System - RTOS) được tạo ra vào khoảng năm 1982 bởi Alfred Chao, và được phát triển, tiếp thị bởi công ty Software Components Group (SCG) của ông ta. Trong những năm 1980, pSOS là sự lựa chọn hàng đầu cho tất cả các hệ thống nhúng dựa trên họ kiến trúc Motorola 68000, vì nó được viết bằng 68000 assembler và được tối ưu rất tốt ngay từ khi phát triển.

Vào khoảng năm 1991, Software Components Group được mua lại bởi Integrated Systems Inc. (ISI) - công ty sau đó tiếp tục phát triển pSOS thành pSOS+ dành cho các họ vi xử lý bằng cách viết lại nó bằng ngôn ngữ C.

Năm 1999 Integrated Systems Inc hợp nhất với Wind River Systems - công ty sở hữu sản phẩm cạnh tranh RTOS VxWorks. Mặc dù theo công bố ban đầu, việc phát triển pSOS sẽ được tiếp tục, nhưng thực tế thì không. Vì theo Wind River, trong tương lai gần, phiên bản kết hợp giữa VxWorks và pSOS sẽ được công bố, nên họ không phát hành thêm phiên bản pSOS riêng lẻ nào nữa.

NXP Semiconductors mua lại pSOS cho TriMedia từ Wind River và tiếp tục hỗ trợ hệ điều hành này cho lõi TriMedia VLIW. Khi đó pSOS còn được biết dưới tên

36

2.6.2 pSOSystem của TriMedia

2.6.2.1 Giới thiệu pSOSystem

pSOSystem là một hệ điều hành thời gian thực được thiết kế riêng cho các bộ vi xử lý hệ thống nhúng. Nó cung cấp một môi trường đa tác vụ dựa trên các chuẩn hệ thống mở.

pSOSystem được thiết kế để đáp ứng 3 mục tiêu:

 Khả năng thi hành tốt

 Độ tin cậy cao

 Dễ sử dụng

Kết quả đạt được là một giải pháp nhanh, đáng tin cậy và dễ tiếp cận cho các hệ thống phần mềm. pSOSystem được thiết kế tối ưu cho cả phần cứng thương mại và phần cứng chuyên dụng.

Phần mềm pSOSystem được hỗ trợ bởi một tập các công cụ phát triển tích hợp cho đa môi trường, các công cụ này có thể chạy được trên máy tính nền Windows hay UNIX. Đồng thời chúng có thể giao tiếp với thiết bị mục tiêu thông qua kết nối mạng serial hay TCP/IP.

2.6.2.2 Kiến trúc hệ thống

Phần mềm pSOSytem có kiến trúc theo mô-đun. Nó được xây dựng xung quanh một lõi xử lý đa tác vụ theo thời gian thực pSOS+ và một tập các thành phần phần mềm hỗ trợ khác. Các thành phần phần mềm là những khối được xây dựng theo chuẩn, đây là những vị trí độc lập tuyệt đối với các mô-đun mã nguồn. Chúng là những thành phần chuẩn theo nghĩa chúng cố định khi được chuyển tiếp từ ứng dụng này sang ứng dụng khác. Kỹ thuật hộp đen này giúp ích rất nhiều cho lập trình viên trong việc bảo trì mã nguồn đồng thời bảo đảm được độ tin cậy, vì trong thực tế có hàng trăm ứng dụng cần thực thi cùng một mã nguồn.

Không giống với hầu hết các phần mềm hệ thống, một thành phần phần mềm không được “gắn chặt” vào phần cứng. Nó cũng không có liên hệ gì tới việc thực thi

Một phần của tài liệu xây dựng engine giải mã video h.264 trên hệ thống nhúng (Trang 25)