PCI-E x4 có mạnh hơn AGP 8x không?

Thảo luận trong 'Card Đồ họa - Video Cards' bắt đầu bởi thehuy, 15/5/06.

  1. ConGa

    ConGa New Member

    Bài viết:
    233
    Tham gia tý cho vui :


    AGP 1X bandwidth 254.3 MB/s
    AGP 2X bandwidth 508.6 MB/s
    AGP 4X bandwidth 1,017 MB/s
    Source : http://www.pcguide.com/ref/mbsys/buses/types/agpBus-c.html

    AGP 8x bandwidth 2.1GB/s
    Source : http://www.intel.com/pressroom/archive/releases/20020911tech.htm

    Một con 6600GT AGP có memory bandwidth 14.4 GB/s.
    Source :http://www.gpureview.com/GeForce-6600-GT-AGP-card-190.html

    Không hiểu cái memory bandwidth của con 6600GT kia tính theo kiểu nào, chứ nó phải truyền qua cổng AGP 8X thì đúng là "Thắt cổ chai rồi".

    Ai có ý kiến khác zô thảo luận nhé...!
     
  2. Chip

    Chip New Member

    Bài viết:
    268
    Không việc gì Chip phải search vì Chip nhớ được những thông số này. Đây nhá:

    1. Tốc độ của PCI là 33 Mhz, với bandwith 32bits, như vậy tốc độ luân chuyển dữ liệu là:
    PCI 1X = 33.000k x 32b ~ 133 MB/s

    2. Tốc độ của AGP là 66Mhz với bandwith 32bits, như vậy tốc độ luân chuyển dữ liệu là:
    AGP 1X = 66.000k x 32b ~ 254.3 MB/s
    AGP 4X ~ 1017 MB/s

    Với độ phân giải 1600x1200, 32bit màu, 1 frame hình game sẽ là
    1 frame = 1600 x 1200 x 32b ~ 7.3 MB

    Như vậy với bandwidth 1017 MB/s, số khuôn hình tối đa có thể đạt được là:
    Max FPS = 1017 / 7.3 ~ 139 FPS

    Trên thực tế, ta chỉ cần 30 FPS là có thể đạt được độ smooth cần thiết cho video motion.

    -> Với AGP 4X (~ PCI-E 2X) ta đã có dư bandwidth rất nhiều.

    to tien113: nói người khác "tầm bậy" thì dễ, chứng minh mới khó.
     
  3. Chip

    Chip New Member

    Bài viết:
    268
    Thông số bạn đưa rất chuẩn. Có 2 khái niệm bandwidth đối với quá trình làm việc của video card:

    1. bandwidth giữa vid card với các thành phần của PC (CPU, RAM, Cache...): đây chính là cái bandwidth AGP 1X, 2X ... ở phần đầu bài viết của bạn.

    2. bandwidth giữa video ram với gpu ram, trong video card có sử dụng loại ram với tốc độ và bus width khác nhau (ddr, ddr2, ddr3; 64 bit, 128 bit, 256 bit), từ đó tính ra được số liệu bandwidth từ thành phần này.

    Vì vậy, bandwidth nội tại của 1 con 6600GT là 14.4 GB/s là khái niệm độc lập với bandwith của AGP và PCI-E.

    Mong mọi người hiểu diễn giải của Chip. Thanks.
     
  4. ConGa

    ConGa New Member

    Bài viết:
    233
    Thank Chip về thông tin cho memory bandwitdh của Vid.

    Với cách diễn giải trên của Chip thì có một câu hỏi lớn đặt ra ở đây là :

    Tại sao phải phát triển lên giao tiếp AGP 1x,2x,4x,8x --> PCI-E x16, trong khi với bandwidth của giao tiếp PCI thường cũng thừa sức cân những game có khung hình lớn nhất?

    Ai biết giải thích zùm mình....!
     
  5. TNT2TNT

    TNT2TNT New Member

    Bài viết:
    127
    Chỗ này bạn mới xét trong chế độ 2d mode thôi, trong trường hợp chạy 3d mode, cách tính phải khác.
    Hệ thống sử dụng card 3d (GPU) và CPU có thể được coi như là 1 hệ thống đa xử lí bất đối xứng. Các ứng dụng, cụ thể ở đây là game và các chương trình dựng hình 3d sử dụng cả GPU và CPU để tính toán các phần việc cùng với nhau.
    Trong 1 hệ đa xử lí thì có phần chuyển dữ liệu qua nhau (tương tác) : phần này dùng đến bandwith giữa các đơn vị xử lí (ở đây là GPU và CPU).

    Bandwith này cần bao nhiêu thì phụ thuộc rất lớn vào ứng dụng cụ thể. Ví dụ như trong ứng dụng folding thì dữ liệu cần trao đổi giữa các đơn vị xử lí rất nhỏ, tất nhiên trong các ứng dụng như game thì bandwith này cần lớn hơn.

    Để biết 1 ứng dụng (hay game) nào đó cần bao nhiêu bandwith AGP thì có 2 phương pháp.

    1. Dựa vào lí thuyết : phân tích mã nguồn của ứng dụng đó rồi tính toán lượng bandwith cần thiết : cái này chỉ có tác giả ứng dụng làm được, ví dụ nhà sản xuất game A tuyên bố để chạy game A ở chế độ hình ảnh nào đó cần tối thiểu AGP bandwith là XA.

    2. Dựa vào thực tế : có 2 phương pháp con :
    2.a. Viết 1 chương trình giám sát data qua AGP port, từ đó thống kê được max bandwith đã được sử dụng khi chạy ứng dụng đó.
    2.b. Chạy thử chương trình với các thiết lập AGP speed khác nhau và so sánh tốc độ.
    Ví dụ khi tăng AGP speed từ 1x - 2x, tốc độ ứng dụng tăng thì ứng dụng này cần nhiều hơn bandwith của AGP 1x.
    Nếu khi tăng AGP speed từ 2x - 4x mà tốc độ ứng dụng không tăng thì kết luận ứng dụng không dùng hết bandwith của AGP 4x.

    Cách 2.b là cách dành cho người sử dụng.

    Phát triển chuẩn phải hướng tới tương lai, có thể bay giờ chưa dùng hết nhưng tương lai có thể thiếu. Ví dụ có thể viết 1 chương trình tính số PI sử dụng cả GPU và CPU để tăng tốc độ tính toán, khi đó bandwith cần thiết qua AGP có thể lại không đủ chẳng hạn.

    Theo nhận xét của tôi (nhận xét bừa thôi vì tôi không phải tác giả game) các game dùng nhiều texture sẽ dùng nhiều bandwith AGP.
     
  6. ConGa

    ConGa New Member

    Bài viết:
    233
    Tôi có nghe đến việc sử lý ảnh 3d thì cần nhiều bandwidth của cổng giao tiếp, nhưng cũng chỉ biết đại khái thế thôi.

    TNT2TNT giải thích vẫn mơ hồ, tui vẫn thấy chưa thỏa mãn...hic.
     
  7. tien113

    tien113 php+mysql+apache

    Bài viết:
    6,477
    Nơi ở:
    Vaasa, Finland
    giải thích của bác Chip sao mà đơn giản quá...

    sao mà game 30FPS là smooth rùi ???

    cái này sai hoàn toàn đó...

    bây giờ có những game chạy hàng trăm FPS , thấy cũng đâu có sao...

    nói chung, vì hiện tượng thằt cổ chai cho nên ng ta làm ra giao tiếp mới để xài chứ ko phải để làm kiểng,...

    vì thế hiệu năng sẽ tăng lên chứ ko làm giảm xuống...
     
  8. Chip

    Chip New Member

    Bài viết:
    268
    Rất đồng ý với quan điểm của bạn. Tuy nhiên có một số điều muốn thảo luận thêm với bạn thế này:

    Đồng ý là CPU và GPU cũng tham gia vào quá trình tính toán 3D, nhưng Chip khẳng định rằng, với 2 giả thiết sau:
    1. Giả thiết toàn bộ hình ảnh thể hiện được xử lý hoàn toàn trên GPU, CPU không tham gia vào quá trình này, chỉ đóng vai trò điều phối và thực hiện các công việc khác.
    2. Giả thiết hình ảnh thể hiện được xử lý trên cả CPU và GPU, tức là cả 2 cùng tham gia quá trình tính toán và dựng hình.
    Thì: bandwidth sử dụng trong giả thiết 1 ít hơn đáng kể so với giả thiết 2. Sau đây là chứng minh:

    Video card hỗ trợ directX hardware là video card có tích hợp các mạch luận lý bằng phần cứng chứ không phải phần mềm, gọi là "tập lệnh dựng sẵn" hay "thư viện lệnh DirectX" cũng được. Nó được hiểu như là 1 modul, đầu vào là các thông số, đầu ra là hình ảnh đã qua xử lý. Một ví dụ đơn giản: Dựng 1 hình tròn trong suốt như tấm kính tại tọa độ x,y, có bán kính là r. Nếu không có phần cứng đi kèm để giải quyết lệnh trên, nếu dùng software thì có lễ ta phải mất khoảng vài trang A4 để viết code, xử lý các công việc sau:

    - vẽ hình tròn tại x,y bán kính r (cái này thì quá đơn giản)
    - xem phần hình ảnh nằm dưới hình tròn là gì, xử lý các hiện tượng ánh sáng để tạo cảm giác hình tròn là 1 tấm kính (phức tạp lắm đó)
    - xem phần hình ảnh nằm trên và xung quanh hình tròn là gì, xử lý các hiện thượng ánh sáng để tạo sự phản chiếu hình ảnh của chúng trên tấm kính như thực tế (cái này cũng phức tạp vô cùng)
    - tạo bóng mờ mờ của hình tròn trên nền ảnh mà nó đang chiếm lĩnh (cái này cũng phức tạp nốt)

    Để xử lý bằng software câu lệnh đơn giản trên, CPU phải thực thi hàng trăm ngàn đến hàng triệu tác vụ. Sau khi xử lý xong, nó sẽ cho ra thành phẩm dạng bitmap và gửi qua AGP để video card tái hiện lên màn hình, bandwidth sử dụng cho độ phân giải 1600*1200 ở 32bit màu như đã tính vào khoảng trên 7MB (1)

    Còn nếu để giải quyết bằng hardware tích hợp trong video card, tất cả chỉ là 1 lệnh đơn giản: - hình tròn, x, y, r, kính. Khi đó, bandwidth chỉ được sử dụng để gửi tổng cộng là 5 thông số, chấm hết. Bandwidth sử dụng cho trường hợp này chỉ là vài B đến vài chục B (2)

    Từ (1) và (2) rút ra điều cần chứng minh.

    Ai biết lập trình có lẽ sẽ hiểu vấn đề này nhanh hơn khi so sánh nó với phương pháp dùng unit trong pascal, chuyên sâu hơn thì là dùng các thư viện dll trong VB hoặc cao cấp hơn nữa là DirectX. Rõ ràng với các thư viện hay tập lệnh hardware, công việc sẽ giảm đi rất nhiều và bandwidth chỉ được sử dụng để luân chuyển các tham số chứ không phải là các khối bitmap.

    Hơn nữa, trên 1 số forums tiếng Anh về vấn đề này thì tồn tại một quan điểm chung: các ứng dụng đồ họa tính đến nay vẫn chưa sử dụng hết bandwidth của AGP 4X.

    Trường hợp ví dụ và tính toán của Chip trên kia là xét trường hợp CPU tính toán và dựng hình, tức là cho bandwidth luân chuyển tối đa. Nếu việc này được render bởi video card thì bandwidth sẽ cần ít hơn rất nhiều.

    Vậy người ta phát triển lên AGP 8X, rồi PCI-E để làm gì? Có nhiều nguyên nhân giải thích cho việc này:
    1. Tạo ra 1 sản phẩm mới có thông số tốt hơn sản phẩm cũ. Đương nhiên là nếu cho ra đời AGP 8X thì người đang xài AGP 4X tất yếu nảy sinh nhu cầu nâng cấp, chưa cần xét tới nó có cần thiết hay không. Đây là chiến lược maketing hữu hiệu đánh vào tâm lý khách hàng.
    2. Việc phát triển sang chuẩn mới không tốn kém và không đội giá thành lên nhiều. Ai cũng thấy số tiền phải bỏ thêm cho AGP 8X so với AGP 4X là không đáng kể, vậy thì tội gì không sản xuất 8X cho có tiếng, đúng không?
    3. Mở đường cho các phần cứng và phần mềm tương lai.

    Có rất nhiều sản phẩm mới có tính chất tương tự như hiện tượng trên. Ví dụ: tốc độ giao tiếp của HDD. Ai cũng biết các HDD hiện nay chỉ có tốc độ khoảng 35MB/s, như vậy bandwidth của nó chỉ cần ATA 66 là thừa thãi. Nhưng trên thực tế thì ATA 66 hiện đã tuyệt chủng từ lâu, trên thị trường chỉ còn ATA 100 và ATA 133 với bandwidth 100 MB/s và 133 MB/s. Bên cạnh đó SATA I và II với bandwidth tương ứng là 150 MB/s và 300 MB/s là một con số quá "lãng phí" so với tốc độ thực vào khoảng 35MB/s của HDD.
     
  9. sieucan

    sieucan New Member

    Bài viết:
    14
    bác Chip nói hay quá thế bác config cho cái Graphic card của bác thành 4x rồi chơi DOOM III hay HaftLìe 2 coi :lamlo:
    còn cái ATA 66 - 133 la tốc độ cache cua ổ thôi chứ nó mà đúng la 133 that thì main của bác bốc khói:degai:
     
  10. Chip

    Chip New Member

    Bài viết:
    268
    tien113 nên đọc nhiều hơn nữa rồi kết luận vẫn chưa muộn.

    Nhân đây Chip cũng giải thích luôn cho anh em quan tâm vấn đề 30FPS là smooth hay không smooth.

    Với hình ảnh chuyển động, do cơ cấu lưu ảnh trên võng mạc mắt, người ta đã chứng minh: 24 hình trong 1 giây (24 FPS) là cho ra hình ảnh chuyển động mượt mà (smooth). Tất cả các chuẩn phim ảnh chúng ta đang xem đều dùng chuẩn này, hệ Pal là 24 FPS, hệ NTSC là 30 FPS, không cần nhiều hơn.

    Vậy, chỉ cần 30 FPS là hình ảnh smooth, có cao hơn cũng không cần thiết và mắt người không thể nhận biết được. Nhưng tại sao với game, đôi khi 30 FPS vẫn không cho người xem cảm nhận hình ảnh là smooth? Đây là lý do:

    Game thường tính FPS là 1 con số trung bình, tức là nó cộng tất cả các frame tại các second lại, sau đó chia cho tổng số second để cho ra FPS trung bình. 1 game được tạo thành bởi rất nhiều frame, có frame thì đơn giản, có frame thì phức tạp, vì thế, có những đoạn lên tới hàng trăm FPS, nhưng cũng có những đoạn FPS rớt xuống còn mười mấy FPS. Sau khi tính FPS trung bình ta vẫn được con số 30 FPS nhưng thực tế ta vẫn thấy rõ là hình ảnh vẫn bị giật, chính là ở những đoạn FPS bị rớt xuống do độ phức tạp của frame).

    Vì vậy, để 1 game smooth, ta không cần số FPS lớn hơn 30 nhưng game cũng không thể để FPS dưới mức 24 FPS. Vì vậy, mọi người không nên căn cứ vào FPS trung bình của game mà nên căn cứ vào FPS nhỏ nhất của game khi đánh giá độ mượt. Cả 1 game chỉ cần vài đoạn FPS rớt xuống dưới giá trị 24 là đủ để ta thấy nó không chuyển động mượt mà.
     

Chia sẻ trang này