diff --git a/lib/spack/spack/cmd/arch.py b/lib/spack/spack/cmd/arch.py
index f3208ec5c0b70c95b315eb34e8e2dcca888a637c..707a91cc2a6372b49b0b0434d72985e2bd7d4f76 100644
--- a/lib/spack/spack/cmd/arch.py
+++ b/lib/spack/spack/cmd/arch.py
@@ -14,6 +14,7 @@
 
 def setup_parser(subparser):
     parts = subparser.add_mutually_exclusive_group()
+    parts2 = subparser.add_mutually_exclusive_group()
     parts.add_argument(
         '-p', '--platform', action='store_true', default=False,
         help='print only the platform')
@@ -23,11 +24,24 @@ def setup_parser(subparser):
     parts.add_argument(
         '-t', '--target', action='store_true', default=False,
         help='print only the target')
+    parts2.add_argument(
+        '-f', '--frontend', action='store_true', default=False,
+        help='print frontend')
+    parts2.add_argument(
+        '-b', '--backend', action='store_true', default=False,
+        help='print backend')
 
 
 def arch(parser, args):
-    arch = architecture.Arch(
-        architecture.platform(), 'default_os', 'default_target')
+    if args.frontend:
+        arch = architecture.Arch(architecture.platform(),
+                                 'frontend', 'frontend')
+    elif args.backend:
+        arch = architecture.Arch(architecture.platform(),
+                                 'backend', 'backend')
+    else:
+        arch = architecture.Arch(architecture.platform(),
+                                 'default_os', 'default_target')
 
     if args.platform:
         print(arch.platform)
diff --git a/lib/spack/spack/test/cmd/arch.py b/lib/spack/spack/test/cmd/arch.py
index 15ab7f2474f5e1079fc18c73790746bcb67ef93f..43c1433a5126be858af2a275da231eeced9428c4 100644
--- a/lib/spack/spack/test/cmd/arch.py
+++ b/lib/spack/spack/test/cmd/arch.py
@@ -13,6 +13,10 @@ def test_arch():
     """Sanity check ``spack arch`` to make sure it works."""
 
     arch()
+    arch('-f')
+    arch('--frontend')
+    arch('-b')
+    arch('--backend')
 
 
 def test_arch_platform():
@@ -20,6 +24,8 @@ def test_arch_platform():
 
     arch('-p')
     arch('--platform')
+    arch('-f', '-p')
+    arch('-b', '-p')
 
 
 def test_arch_operating_system():
@@ -27,6 +33,8 @@ def test_arch_operating_system():
 
     arch('-o')
     arch('--operating-system')
+    arch('-f', '-o')
+    arch('-b', '-o')
 
 
 def test_arch_target():
@@ -34,3 +42,5 @@ def test_arch_target():
 
     arch('-t')
     arch('--target')
+    arch('-f', '-t')
+    arch('-b', '-t')