Hi,
The variable present in the stack are auto variables which are used within the piece of code and these are primitive.
Where as the one in Data segment are used for global initializations which are better performance because the cycle time for access is lower.
there are some drawbacks with respect to the data segment like for the usage w.r.t size, coherency etc..
There is a book on "Exploring memory organization for embedded systems" which will guide for good understanding.
Cheers
Gowtham