From 588f79faebe32c6aa86ea9c5eabdd5e99f09eb1a Mon Sep 17 00:00:00 2001 From: Ryan Terry Date: Tue, 27 Sep 2016 20:42:02 -0400 Subject: [PATCH] Updated CPU (markdown) --- CPU.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CPU.md b/CPU.md index 778e0f8..55e97e1 100644 --- a/CPU.md +++ b/CPU.md @@ -1,7 +1,11 @@ -Citra's current CPU core is an ARM interpreter called "dyncom", which was originally taken from a project called SkyEye, and then modified to support the ARMv6 instruction set that the 3DS uses. +Citra contains two CPU cores: an interpreter and a JIT core. +The interpreter is an ARM interpreter called "dyncom", which was originally taken from a project called SkyEye, and then modified to support the ARMv6 instruction set that the 3DS uses. Dyncom originally supported ARM7 (ARMv5) and partial ARMv6 only. We added in the remaining ARMv6 media instructions and other fixes ourselves to get 3DS emulation as far as it is. -There are plans to implement a dynamic recompiler that will fall back into dyncom for unimplemented instructions; work has been started on this but very little progress has been made. +The JIT core used in Citra is a dynamic recompiler called "dynarmic", developed by @MerryMage, and is capable of recompiling the ARMv6K instruction set to x86_64. +The recompiler converts ARMv6 instructions into x86_64 instructions at runtime, injects the resulting chunk of code into RAM, then jumps the host processor to the resulting routine. Instructions that are not implemented by the recompiler fall back into the interpreter. +Dynarmic was developed specially for Citra, and was merged into the master branch in September 2016. The core provides a modest 15-20FPS boost in most games, while some games have received a massive 200% speed boost over the interpreter! +A full design document for Dynarmic can be found on its [github repo](https://github.com/MerryMage/dynarmic/blob/master/docs/Design.md). There are no plans for emulating the ARM9 chip in the 3DS, which is mainly used for security purposes as well as DS games. \ No newline at end of file