Kindly refer to the documents which portrays exactly the difference between the Arm architecture Armv7 to Armv8.
At least the overview of the changes in terms of advantages and disadvantages
Chris Shore has recently published a white paper Porting to Arm 64-bit which you might find useful.
A general point, Armv8-A has two execution states AArch32 and AArch64. Where AArch32 provides backwards compatibility with Armv7-A.
For something like porting it makes a lot of difference whether you mean Armv8-A AArch64 or Armv8-A AArch32.
Good question. I and probably most of the rest of the world thought Armv8 meant the 64-bit version of the instruction set and some system changes to support it. However the 64 bit instruction set is described by Aarch64 or as Linus prefers to call it Arm64. And then Armv8-R was announced and currently it only includes the 32 bit instructions. The defining part of Armv8 seems to be all the new system stuff - things like how interrupts are handled and the support for controlling access to shared memory areas. It introduces Aarch64 but does not require it. That at least is my reading of it all now.
View all questions in Cortex-A / A-Profile forum