Câu hỏi Làm thế nào để thay đổi tốc độ đồng hồ PC cho từng chương trình?


Chúng tôi có một số chương trình cũ hơn (không có mã nguồn nữa) chạy quá nhanh trên CPU với tốc độ đồng hồ nhanh hơn. Tôi đoán rằng họ đã được viết bằng cách sử dụng sự chậm trễ phần mềm ('X' số hướng dẫn CPU cho mỗi vòng lặp) - thay vì ngủ và giờ phần cứng. Trên PC mới, các ứng dụng này không còn chờ đủ lâu để các sự kiện xảy ra; để chúng không còn hoạt động nữa. Chúng tôi không thể thay đổi các ứng dụng - vì vậy chúng tôi đang cố gắng tìm ra cách khiến họ tin rằng họ đang chạy ở tốc độ đồng hồ chậm hơn.

Tôi đã viết một ứng dụng có thời gian xử lý thời gian xử lý trên PC ... có hiệu quả làm chậm nó xuống đủ để các ứng dụng cũ chạy. Nhưng "giải pháp" đó ảnh hưởng đến tất cả các chương trình trên PC - (và tương tác người dùng, v.v.).

Tôi đã tìm thấy một vài sản phẩm "chạy chậm chương trình" có thể nhắm mục tiêu các tệp thực thi riêng lẻ - (Mo'Slo và Asoftech Speeder). Chúng KHÔNG ảnh hưởng đến toàn bộ hệ thống - chỉ các ứng dụng được nhắm mục tiêu riêng lẻ. Trên thực tế, mỗi ứng dụng có thể thấy tốc độ đồng hồ khác nhau. Nhưng nó là chi phí cấm mua đủ chỗ ngồi của những sản phẩm cho số lượng người dùng mà chúng tôi có.

(FYI ... Game thủ sử dụng các sản phẩm này để làm chậm tốc độ đồng hồ cho các game cũ hơn để chúng chạy đúng trên các bộ vi xử lý mới, nhanh hơn).

Tôi tự hỏi nếu có ai có thể giải thích làm thế nào các sản phẩm này có thể ảnh hưởng đến tốc độ đồng hồ mà các ứng dụng cá nhân nhìn thấy?

Nó sẽ là tốt nhất để luôn luôn nói với một ứng dụng mà nó thấy một tốc độ đồng hồ tuyệt đối của 'N' - (chạy App1 tại 'N' MHz). Nhưng nó cũng có thể sử dụng được nếu tất cả những gì chúng ta có thể làm là nói một ứng dụng mà nó thấy tốc độ đồng hồ 'N'% của máy chủ - (chạy App2 ở tốc độ 30% của tốc độ đồng hồ chủ).

Tôi có thể viết mã nó nếu tôi có thể tìm ra cách nó được thực hiện.


2
2017-12-30 10:01


gốc


Vì vậy, bạn đang tìm kiếm nút Turbo? - Cody Gray
@Code Grey - wow đó là soooo đúng !!!!! - Preet Sangha
Trên thực tế, tìm kiếm nút "Turbo Off" ...
Đó là những gì nút turbo là .... - Preet Sangha


Các câu trả lời:


Nếu bạn có thể xác định API mà trò chơi đang sử dụng để đếm số lần truy cập, thì bạn có thể áp dụng một móc để chuyển hướng API cho chương trình được đề cập. Tuy nhiên, nếu không có chi tiết cụ thể về nền tảng thì đây chỉ là phỏng đoán.

Ví dụ trong các cửa sổ, khi chạy các chương trình 16 bit, tôi đã viết một số khối lắp ráp chặn các cuộc gọi api (DOS) và chuyển chúng đến mã của riêng tôi, làm điều gì đó khác với các cửa sổ được cung cấp.

Chỉnh sửa: Bạn có thể sử dụng công nghệ ảo hóa như QEMU để điều khiển CPU được gửi tới ứng dụng không?


0
2017-12-30 10:05



Chúng tôi không thấy bất kỳ cuộc gọi API liên quan đến bộ hẹn giờ nào. Đó là lý do tại sao tôi nghi ngờ rằng họ chỉ sử dụng bộ đếm thời gian của riêng bạn. Phương pháp cũ là viết một vòng lặp for / next với một cái gì đó như x = 0; x + = 1 trong đó. Sau đó, bạn tìm ra bao nhiêu lần lặp của vòng lặp đó là cần thiết để giúp bạn có được sự chậm trễ mà bạn muốn. Phương thức đó CHỈ làm việc cho một tốc độ đồng hồ cụ thể.
Lưu ý: Tôi đã đề cập rằng các game thủ sử dụng các sản phẩm chậm lại, nhưng vấn đề của chúng tôi là một loạt các ứng dụng doanh nghiệp cũ mà chúng tôi vẫn còn gắn liền với. Vấn đề khác của chúng tôi là tác giả gốc đã được thông qua. Vì vậy, chúng tôi phải viết lại các ứng dụng này để chúng hoạt động chính xác.


Xem xét tuổi của phần mềm mà không sử dụng hướng dẫn tạm dừng, tôi giả định rằng họ chạy trên dos, và một tùy chọn sẽ được để chạy chúng trên dosbox, trong đó có một tùy chọn để làm chậm phần mềm. FOSS của nó, do đó bạn có thể có thể nhìn vào mã.


0
2018-01-01 03:29