This is a wide scope question. Depending on the need to access the dimensions of an array, one can choose between the packed and unpacked arrays. Referring to this article, here is an explanation about the arrays.
A packed array is a mechanism for subdividing a vector into subfields which can be conveniently accessed as array elements. Consequently, a packed array is guaranteed to be represented as a contiguous set of bits. An unpacked array may or may not be so represented. A packed array differs from an unpacked array in that, when a packed array appears as a primary, it is treated as a single vector.
For more information, refer to this excellent explanation for packed and unpacked arrays.