2012-01-13 4 views
9

Câu trả lời được chấp nhận cho câu hỏi Wiki Cộng đồng này: What are best practices that you use when writing Objective-C and Cocoa? cho biết rằng iPhones không thể thực hiện phép tính hai lần (hoặc đúng hơn, chúng có thể, nhưng chỉ mô phỏng trong phần mềm). tham chiếu: Double vs float on the iPhone trực tiếp mâu thuẫn với tuyên bố đó. Cả hai đều là cũ, được viết khi 3GS vừa ra mắt.Tính toán chính xác kép của iPhone/iPad

Vậy câu chuyện với kiến ​​trúc ARM7 mới nhất là gì? Tôi có cần phải lo lắng về trình biên dịch 'thumb' cờ tham chiếu liên kết thứ hai không? Tôi có thể sử dụng an toàn các biến số double không? Tôi đang có những đoạn hồi tưởng khó chịu cho những ngày đen tối của 386SX và DX và 'coprocessors toán học'. Hãy cho tôi biết đó là năm 2012 và chúng tôi đã chuyển sang.

Trả lời

6

Trong tất cả các iPhone, không có lý do chính xác kép nào không được hỗ trợ. Tất cả đều sử dụng kiến ​​trúc Cortex-A8 với bộ xử lý đồng bộ cp15 (hỗ trợ tính toán nổi và tính toán kép của IEEE trong phần cứng).

http://www.arm.com/products/processors/technologies/vector-floating-point.php

Vì vậy, có, bạn có thể an toàn sử dụng đôi và nó không phải là phần mềm mô phỏng trên iPhone. Mặc dù điều này được thực hiện trong phần cứng, nó vẫn có thể mất nhiều chu kỳ hơn để thực hiện phép toán số học hai lần so với đơn (float). Ngoài việc sử dụng gấp đôi, tôi sẽ kiểm tra để đảm bảo độ chính xác phù hợp cho ứng dụng của bạn.

Là một lưu ý phụ, nếu bộ xử lý hỗ trợ tập lệnh NEON, đôi và phao nổi có thể được tính nhanh hơn so với sử dụng bộ xử lý đồng bộ.

http://pandorawiki.org/Floating_Point_Optimization#Compiler_Support

EDIT: Mặc dù VFP và Neon là phần mở rộng tùy chọn để Core ARM, hầu hết các vỏ não-A8 có họ và tất cả trong số họ những người sử dụng trong iPhone và iPad làm là tốt.

+0

Được rồi, cảm ơn. Đó là những gì tôi nghĩ rằng nó phải được. Miền ứng dụng là DSP âm thanh; do đó tôi mong muốn tăng gấp đôi. Tôi đã rất ngạc nhiên khi tìm thấy hai câu trả lời có thẩm quyền, có điểm cao về SO với thông tin tự mâu thuẫn như vậy. Để mở trong trường hợp bất kỳ ai cũng có thể nhận xét về cờ 'Thumb'. –

+0

Bạn không cần phải lo lắng về cờ trình biên dịch Thumb, trừ khi bạn đang viết assembly mức thấp, điều này sẽ được tối ưu hóa dựa trên mức tối ưu hóa của bạn và cho dù bạn muốn nó được tối ưu hóa cho thời gian hay không gian. – nmjohn

+0

Cảm ơn. Tôi nghĩ rằng điều này tất cả sẽ chứng minh là một vấn đề không. –