2010-11-18 27 views
8

Tôi đang sử dụng bộ xử lý Cortex-A8 và tôi không hiểu cách sử dụng cờ -mfpu.ARM Cortex-A8: Cách sử dụng cả NEON và vfpv3

Trên Cortex-A8, cả hai đều là vfpv3neon đồng bộ xử lý. Trước đây tôi đã không biết làm thế nào để sử dụng neon vì vậy tôi chỉ sử dụng

gcc -marm -mfloat-abi=softfp -mfpu=vfpv3

Bây giờ tôi đã hiểu thế nào xử lý SIMD chạy và tôi đã viết một số mã sử dụng intrinsics NEON. Để sử dụng neon đồng xử lý hiện nay cờ -mfpu của tôi có thay đổi để -mfpu=neon, vì vậy dòng lệnh trình biên dịch của tôi trông như thế này

gcc -marm -mfloat-abi=softfp -mfpu=neon

Bây giờ, điều này có nghĩa là tôi vfpv3 không được sử dụng nữa? Tôi có nhiều mã không sử dụng NEON, làm những phần đó không sử dụng số vfpv3.

Nếu cả neon và vfpv3 vẫn được sử dụng thì tôi không có vấn đề gì, nhưng nếu chỉ một trong số chúng được sử dụng thì tôi có thể sử dụng cả hai như thế nào?

Trả lời

10

NEON cũng ngụ ý có hỗ trợ VFP truyền thống. VFP có thể được sử dụng cho các phép tính dấu phẩy động "bình thường" (không vectơ). Ngoài ra, NEON không hỗ trợ FP có độ chính xác kép nên chỉ có thể sử dụng các hướng dẫn VFP cho điều đó.
Việc bạn có thể làm là thêm dòng lệnh -S vào gcc và kiểm tra hội đồng. Các hướng dẫn bắt đầu bằng V (ví dụ: vld1.32, vmla.f32) là các chỉ lệnh NEON và các lệnh bắt đầu bằng F (fldd, fmacd) là VFP. (Mặc dù tài liệu ARM bây giờ thích sử dụng tiền tố V ngay cả đối với các hướng dẫn VFP, GCC không làm điều đó.)

+0

Igor Tôi chỉ có các giá trị dấu phẩy động chính xác duy nhất. Thật vậy, tôi thấy rất nhiều f-hướng dẫn (fadds, fsitos), vì vậy tôi nghĩ rằng các hướng dẫn vfp vẫn đang được phát hành bởi trình biên dịch. – HaggarTheHorrible

+0

Câu hỏi không liên quan, bạn có biết bộ xử lý dual-issue có ý nghĩa gì không? Cortex-A8 là bộ xử lý vấn đề kép có nghĩa là gì? Bạn có thể chỉ cho tôi bất kỳ liên kết nào không? Tìm kiếm của tôi không hiệu quả lắm. – HaggarTheHorrible

+0

Vikram, Coretex A8 là một vấn đề kép trong bộ xử lý đơn đặt hàng. Điều đó có nghĩa (khác nhau) rằng nó có thể thực hiện một số hoặc tất cả 1) giải mã và enqueue để thực hiện out-of-order hai lệnh mỗi đồng hồ, 2) thực thi hai lệnh xếp hàng như vậy trên mỗi đồng hồ và/hoặc 3). kết quả mỗi đồng hồ. Nói cách khác, trong điều kiện tốt nhất nó có thể thực hiện hai lệnh trên mỗi đồng hồ, duy trì. Điều kiện tốt nhất chỉ xảy ra khi không có bộ nhớ cache, lỗi chi tiết, vv .. –

Các vấn đề liên quan